/*------------------------------------------------------------------------------------------------------------*/ void cgi_reset( void * pStruct ) { struct HTTP_REQUEST * http_request; http_request = (struct HTTP_REQUEST *) pStruct; cgi_PrintHttpheaderStart(); if ( http_request->argc == 0 ) { printf_P( PSTR( "<form action=\"reset.cgi\" method=\"get\" accept-charset=\"ISO-8859-1\">" "<p><input type=\"submit\" name=\"reset\" value=\"reset\"></p></form>" )); cgi_PrintHttpheaderEnd(); } else if( PharseCheckName_P( http_request, PSTR("reset") ) ) { if ( !strcmp_P( http_request->argvalue[ PharseGetValue_P( http_request, PSTR("reset") ) ] , PSTR("reset") ) ) { printf_P( PSTR("Reset")); cgi_PrintHttpheaderEnd(); STDOUT_Flush(); CloseTCPSocket( http_request->HTTP_SOCKET ); softreset(); while(1); } } }
/** * \brief Das CGI-Interface. Erzeugt einen netten Graphen. * \param PStruct Structur vom HTTP-Server mit allen Datem vom Request,. * \return void */ void temp_logger_cgi( void * pStruct ) { char Sensor, ChartYName[32], ChartHeadline[32], ChartUnit[32]; sprintf_P( ChartUnit, PSTR("°C") ); sprintf_P( ChartYName, PSTR("Temperatur (%s)"), ChartUnit ); sprintf_P( ChartHeadline, PSTR("Temperaturverlauf") ); struct HTTP_REQUEST * http_request; http_request = (struct HTTP_REQUEST *) pStruct; struct TIME nowtime; CLOCK_GetTime ( &nowtime ); printf_P( HIGHCHART_part_1() , ChartHeadline, nowtime.YY, nowtime.MM-1, nowtime.DD, ChartYName, ChartUnit ); if( PharseCheckName_P( http_request, Sensor_P ) ) { Sensor = atoi( http_request->argvalue[ PharseGetValue_P ( http_request, Sensor_P ) ] ); temp_json_print( Sensor ); } else { for ( Sensor = 0 ; Sensor < TEMP_MAX_SENSORS ; Sensor++ ) temp_json_print( Sensor ); } printf_P( HIGHCHART_part_2() ); }
/** * \brief Das CGI-Interface. Gibt ein Json für einen Tag aus. * \param PStruct Structur vom HTTP-Server mit allen Datem vom Request,. * \return void */ void temp_json_cgi( void * pStruct ) { char Sensor=0; struct HTTP_REQUEST * http_request; http_request = (struct HTTP_REQUEST *) pStruct; if( PharseCheckName_P( http_request, Sensor_P ) ) { Sensor = (char) atoi( http_request->argvalue[ PharseGetValue_P ( http_request, Sensor_P ) ] ); } temp_json_print( Sensor ); }
void cgi_ntp( void * pStruct ) { struct HTTP_REQUEST * http_request; http_request = (struct HTTP_REQUEST *) pStruct; char NTPSERVER[32]; char UTCZONE[4]; cgi_PrintHttpheaderStart(); // Wenn keine Variablen übergeben wurden, dann Config ausgeben, // wenn Variablen übergeben wurden Config ändern if ( http_request->argc == 0 ) { readConfig_P( NTP_P, NTPSERVER ); printf_P( PSTR( "<form action=\"ntp.cgi\">\r" "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\">" "<tr>" "<td align=\"right\">SNTP aktivieren</td>" "<td><input type=\"checkbox\" name=\"NTP\" value=\"on\" " )); if ( !strcmp_P( NTPSERVER, PSTR("on") ) ) printf_P( PSTR("checked")); printf_P( PSTR( "></td>" "</tr>") ); if( checkConfigName_P( NTP_P ) != -1 ) readConfig_P ( NTPSERVER_P, NTPSERVER ); else strcpy_P ( NTPSERVER, PSTR("time.fu-berlin.de")); if( checkConfigName_P( UTCZONE_P ) != -1 ) readConfig_P ( UTCZONE_P, UTCZONE ); else strcpy_P ( UTCZONE, PSTR("0")); printf_P( PSTR( "<tr>" "<td align=\"right\">SNTP-Server</td>" "<td><input name=\"NTPSERVER\" type=\"text\" size=\"25\" value=\"%s\" maxlength=\"25\"></td>" "</tr>" "<tr>" "<td align=\"right\">Zeitzone</td>" "<td><input name=\"UTCZONE\" type=\"text\" size=\"3\" value=\"%s\" maxlength=\"3\"></td>" "</tr>" "<tr>" "<td></td><td><input type=\"submit\" value=\" Einstellung Übernehmen \"></td>" "</tr>" "</table>" "</form>" ) , NTPSERVER, UTCZONE ); } else { if ( PharseCheckName_P( http_request, NTP_P ) ) changeConfig_P( NTP_P, http_request->argvalue[ PharseGetValue_P ( http_request, NTP_P ) ] ); else changeConfig_P( NTP_P, "off" ); if ( PharseCheckName_P( http_request, NTPSERVER_P ) ) changeConfig_P( NTPSERVER_P, http_request->argvalue[ PharseGetValue_P ( http_request, NTPSERVER_P ) ] ); if ( PharseCheckName_P( http_request, UTCZONE_P ) ) changeConfig_P( UTCZONE_P, http_request->argvalue[ PharseGetValue_P ( http_request, UTCZONE_P ) ] ); printf_P( PSTR("Einstellungen uebernommen!\r\n")); } cgi_PrintHttpheaderEnd(); }
void cgi_cron( void * pStruct ) { int i; char string[32]; int HH, MM; struct HTTP_REQUEST * http_request; http_request = (struct HTTP_REQUEST *) pStruct; cgi_PrintHttpheaderStart(); if ( http_request->argc == 0 ) { printf_P( PSTR( "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\">" )); for( i = 0 ; i < MAX_CRON ; i++ ) { if ( CRON_getentry( string, i) == 1 ) { printf_P( PSTR( "<tr>" "<td align=\"left\">%s</td>" "<td align=\"left\">" "<a href=\"cron.cgi?del=%d\" style=\"text-decoration:none\" title=\"Del\"><input type=\"button\" value=\"del\" class=\"actionBtn\"></a>" "</td>" "</tr>"), string, i ); } } printf_P( PSTR( "<tr>" "<td align=\"left\">" "<a href=\"cron.cgi?addnew\" style=\"text-decoration:none\" title=\"Add\"><input type=\"button\" value=\"add new cron\" class=\"actionBtn\"></a>" "</td>" "</tr>" "</table>\r") ); } else { if ( PharseCheckName_P( http_request, PSTR("addnew") ) ) { printf_P( PSTR( "<form action=\"cron.cgi\">" "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\">" "<tr>" "<td align=\"right\">Stunde</td><td><input name=\"HH\" type=\"text\" size=\"3\" value=\"0\"maxlength=\"3\"></td>" "</tr>" "<tr>" "<td align=\"right\">Minute</td>" "<td><input name=\"MM\" type=\"text\" size=\"3\" value=\"0\" maxlength=\"3\"></td>" "</tr>" "<tr>" "<td align=\"right\">Command</td>" "<td><input name=\"CMD\" type=\"text\" size=\"30\" maxlength=\"30\"></td>" "</tr>" "<tr>" "<td></td><td><input type=\"submit\" value=\" Eintrag sichern \"></td>" "</tr>" "</table>" "</form>\r" ) ); } else if ( PharseCheckName_P( http_request, PSTR("CMD") ) ) { HH = atoi( http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("HH") ) ] ); MM = atoi( http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("MM") ) ] ); sprintf_P( string, PSTR("%d %d \"%s\""), HH, MM, http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("CMD") ) ] ); CRON_addentry( string ); CRON_reloadcrontable(); printf_P( PSTR("Einstellungen uebernommen!\r\n")); } else if ( PharseCheckName_P( http_request, PSTR("del") ) ) { CRON_delentry( atoi( http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("del") ) ] ) ); CRON_reloadcrontable(); } } cgi_PrintHttpheaderEnd(); }
/*------------------------------------------------------------------------------------------------------------*/ void cgi_twitter( void * pStruct ) { struct HTTP_REQUEST * http_request; http_request = (struct HTTP_REQUEST *) pStruct; printf_P( PSTR( "<HTML>\r\n" "<HEAD>\r\n" "<TITLE>Twitter</TITLE>\r\n" "</HEAD>\r\n" " <BODY>\r\n")); // Wenn keine Variablen übergeben wurden, dann Config ausgeben, // wenn Variablen übergeben wurden Config ändern if ( http_request->argc == 0 ) { printf_P( PSTR( "<form action=\"twitter.cgi\">\r" "<script type=\"text/javascript\">\r\n" "function textCounter(field, countfield, maxlimit)\r\n" "{\r\n" " if (field.value.length > maxlimit)\r\n" " field.value = field.value.substring(0, maxlimit);\r\n" " else\r\n" " countfield.value = maxlimit - field.value.length;\r\n" "}\r\n" "</script>\r\n" " <table>\r" " <tr>" " <td valign=\"top\">Tweety-Text:</td>" " <td><textarea cols=20 rows=6 style=\"WIDTH: 250px\" name=\"TWITTERMSG\" wrap=physical maxLength=\"140\" onChange=\"textCounter(this.form.TWITTERMSG,this.form.remLen,140);\" onFocus=\"textCounter(this.form.TWITTERMSG,this.form.remLen,140);\" onKeyDown=\"textCounter(this.form.TWITTERMSG,this.form.remLen,140);\" onKeyUp=\"textCounter(this.form.TWITTERMSG,this.form.remLen,140);\"></textarea>" " </td>" " </tr>" " <tr>" " <td>Sie haben:</td>" " <td valign=absmiddle><input readonly type=text name=\"remLen\" size=3 maxlength=3 value=140> Zeichen übrig</td>" " </tr>" " <tr>\r" " <td colspan=\"2\" align=\"right\"><input type=\"submit\" value=\"Tweety senden\"><br>" " </tr>\r" " </table>\r" "<a href=\"http://www.twitter.com/openmcp_foo\" target=\"_blank\">OpenMCP_foo on Twitter.</a><br>" "<a href=\"twitter.cgi?config\">Richtigen Account eingestellen. </a>" "</form>" ) ); } else { if ( PharseCheckName_P( http_request, PSTR("config") ) ) { printf_P( PSTR( "<form action=\"twitter.cgi\" method=\"get\" accept-charset=\"ISO-8859-1\">" "<p>Accountdaten ( user:pw ) :<input name=\"userpw\" size=\"50\"></p>" "<p><input type=\"submit\" value=\"Account speichern\"></p></form>" )); } else if ( PharseCheckName_P( http_request, PSTR("userpw") ) ) { changeConfig_P( PSTR("&TWITTERPW"), http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("userpw") ) ] ); printf_P( PSTR("Einstellungen uebernommen!\r\n")); } else if ( PharseCheckName_P( http_request, PSTR("TWITTERMSG") ) ) { char userpw[32]; if ( readConfig_P( PSTR("&TWITTERPW"), userpw ) == -1 ) printf_P( PSTR("Keine Accountdaten hinterlegt!")); else { TWITTER_sendtweet( http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("TWITTERMSG") ) ] , userpw ); printf_P( PSTR("Tweet wurde versucht zu versenden!\r\n")); } } } printf_P( PSTR( " </BODY>\r\n" "</HTML>\r\n" "\r\n")); }
/*------------------------------------------------------------------------------------------------------------*/ void cgi_network( void * pStruct ) { struct HTTP_REQUEST * http_request; http_request = (struct HTTP_REQUEST *) pStruct; unsigned char IP[32]; /* printf_P( PSTR( "<HTML>\r\n" "<HEAD>\r\n" "<TITLE>network</TITLE>\r\n" "</HEAD>\r\n" " <BODY>\r\n")); */ cgi_PrintHttpheaderStart(); if ( http_request->argc == 0 ) { printf_P( PSTR( "<pre>\r\n") ); #ifdef TELNETSERVER TELNET_runcmdextern_P( PSTR("ifconfig") ); TELNET_runcmdextern_P( PSTR("stats") ); #endif printf_P( PSTR( "</pre>\r\n") ); } else if( PharseCheckName_P( http_request, PSTR("config") ) ) { printf_P( PSTR( "<form action=\"network.cgi\">\r" " <table border=\"0\" cellpadding=\"5\" cellspacing=\"0\">" )); #ifdef DHCP readConfig_P( PSTR("DHCP"), IP ); printf_P( PSTR( " <tr>\r" " <td align=\"right\">DHCP aktivieren</td>" " <td><input type=\"checkbox\" name=\"DHCP\" value=\"on\" " )); if ( !strcmp_P( IP, PSTR("on") ) ) printf_P( PSTR("checked")); printf_P( PSTR( "></td>\r" " </tr>\r") ); #endif if ( readConfig_P ( PSTR("IP"), IP ) != 1 ) iptostr ( myIP, IP ); printf_P( PSTR( " <tr>\r" " <td align=\"right\">IP-Adresse</td>" " <td><input name=\"IP\" type=\"text\" size=\"15\" value=\"%s\" maxlength=\"15\"></td>" " </tr>\r") , IP ); if ( readConfig_P ( PSTR("MASK"), IP ) != 1 ) iptostr ( Netmask, IP ); printf_P( PSTR( " <tr>\r" " <td align=\"right\">Netzwerkmaske</td>" " <td><input name=\"MASK\" type=\"text\" size=\"15\" value=\"%s\" maxlength=\"15\"></td>" " </tr>\r") , IP ); if ( readConfig_P ( PSTR("GATE"), IP ) != 1 ) iptostr ( Gateway, IP ); printf_P( PSTR( " <tr>\r" " <td align=\"right\">Gateway</td>" " <td><input name=\"GATE\" type=\"text\" size=\"15\" value=\"%s\" maxlength=\"15\"></td>" " </tr>\r") , IP ); #ifdef DNS if ( readConfig_P ( PSTR("DNS"), IP ) != 1 ) iptostr ( DNSserver, IP ); printf_P( PSTR( " <tr>\r" " <td align=\"right\">DNS-Server</td>" " <td><input name=\"DNS\" type=\"text\" size=\"15\" value=\"%s\" maxlength=\"15\"></td>" " </tr>\r" ), IP ); #endif readConfig_P( PSTR("ETH_FLDX"), IP ); printf_P( PSTR( " <tr>\r" " <td align=\"right\">Fullduplex aktivieren</td>" " <td><input type=\"checkbox\" name=\"ETH_FLDX\" value=\"on\" " )); if ( !strcmp_P( IP, PSTR("on") ) ) printf_P( PSTR("checked")); printf_P( PSTR( "></td>\r" " </tr>\r") ); if ( readConfig_P ( PSTR("MAC"), IP ) != 1 ) mactostr( mymac, IP ); printf_P( PSTR( " <tr>\r" " <td align=\"right\">Hardware-MAC</td>" " <td><input name=\"MAC\" type=\"text\" size=\"17\" value=\"%s\" maxlength=\"17\"></td>" " </tr>\r" " <tr>\r" " <td></td><td><input type=\"submit\" value=\" Einstellung Übernehmen \"></td>" " </tr>\r" " </table>\r" "</form>") , IP ); } else { #ifdef DHCP if ( PharseCheckName_P( http_request, PSTR("DHCP") ) ) changeConfig_P( PSTR("DHCP"), http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("DHCP") ) ] ); else changeConfig_P( PSTR("DHCP"), "off" ); #endif if ( PharseCheckName_P( http_request, PSTR("IP") ) ) changeConfig_P( PSTR("IP"), http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("IP") ) ] ); if ( PharseCheckName_P( http_request, PSTR("MASK") ) ) changeConfig_P( PSTR("MASK"), http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("MASK") ) ] ); if ( PharseCheckName_P( http_request, PSTR("GATE") ) ) changeConfig_P( PSTR("GATE"), http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("GATE") ) ] ); #ifdef DNS if ( PharseCheckName_P( http_request, PSTR("DNS") ) ) changeConfig_P( PSTR("DNS"), http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("DNS") ) ] ); #endif if ( PharseCheckName_P( http_request, PSTR("MAC") ) ) changeConfig_P( PSTR("MAC"), http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("MAC") ) ] ); if ( PharseCheckName_P( http_request, PSTR("ETH_FLDX") ) ) changeConfig_P( PSTR("ETH_FLDX"), http_request->argvalue[ PharseGetValue_P ( http_request, PSTR("ETH_FLDX") ) ] ); else changeConfig_P( PSTR("ETH_FLDX"), "off" ); printf_P( PSTR("Einstellungen uebernommen!\r\n")); } cgi_PrintHttpheaderEnd(); /* printf_P( PSTR( " </BODY>\r\n" "</HTML>\r\n" "\r\n"), IP); */ }