Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define LAENGE 100 //länger der einzelnen Zeilen
- #define ANZAHL 10 //Anzahl der Zeilen
- enum
- {
- CONFIG_FREQUENZ,
- CONFIG_FDMANALOG1,
- CONFIG_FDMANALOG2,
- CONFIG_UPPER_LIMIT,
- CONFIG_LOWER_LIMIT,
- CONFIG_MONITOR,
- CONFIG_DISPLAY,
- N_CONFIG_OPTIONS
- };
- #define CONFIG_FDMANALOG1_NAME "FDM Analog Wert 1"
- #define CONFIG_FDMANALOG2_NAME "FDM Analog Wert 2"
- #define CONFIG_FREQUENZ_NAME "Frequenz"
- #define CONFIG_UPPER_LIMIT_NAME "Upper Limit"
- #define CONFIG_LOWER_LIMIT_NAME "Lower Limit"
- #define CONFIG_MONITOR_NAME "Monitoring"
- #define CONFIG_DISPLAY_NAME "Display"
- #define CONFIG_FREQUENZ_VARNAME "fdm powerline frequency"
- #define CONFIG_FDMANALOG1_VARNAME "fdm analog 1"
- #define CONFIG_FDMANALOG2_VARNAME "fdm analog 2"
- #define CONFIG_UPPER_LIMIT_VARNAME "upper limit"
- #define CONFIG_LOWER_LIMIT_VARNAME "lower limit"
- #define CONFIG_MONITOR_VARNAME "monitor"
- #define CONFIG_DISPLAY_VARNAME "display"
- #define DEFAULT_CONFIG_NAMES \
- { \
- CONFIG_FREQUENZ_NAME, \
- CONFIG_FDMANALOG1_NAME, \
- CONFIG_FDMANALOG2_NAME, \
- CONFIG_UPPER_LIMIT_NAME, \
- CONFIG_LOWER_LIMIT_NAME, \
- CONFIG_MONITOR_NAME, \
- CONFIG_DISPLAY_NAME, \
- }
- #define DEFAULT_CONFIG_VARNAMES \
- { \
- CONFIG_FREQUENZ_VARNAME, \
- CONFIG_FDMANALOG1_VARNAME, \
- CONFIG_FDMANALOG2_VARNAME, \
- CONFIG_UPPER_LIMIT_VARNAME, \
- CONFIG_LOWER_LIMIT_VARNAME, \
- CONFIG_MONITOR_VARNAME, \
- CONFIG_DISPLAY_VARNAME, \
- }
- #define ToHex(Y) (Y>='0'&&Y<='9'?Y-'0':Y-'A'+10)
- char *str_ptr;
- char values[4096];
- char InputData[4096];
- char tmp[256];
- FILE* env;
- int i;
- char *ns = NULL;
- char *config_names[N_CONFIG_OPTIONS]= DEFAULT_CONFIG_NAMES;
- char *config_varnames[N_CONFIG_OPTIONS]= DEFAULT_CONFIG_VARNAMES;
- void getParam(const char *Name, char *Value) {
- char *pos1 = strstr(InputData, Name);
- if (pos1) {
- pos1 += strlen(Name);
- if (*pos1 == '=') { // Make sure there is an '=' where we expect it
- pos1++;
- while (*pos1 && *pos1 != '&') {
- if (*pos1 == '%') { // Convert it to a single ASCII character and store at our Valueination
- *Value++ = (char)ToHex(pos1[1]) * 16 + ToHex(pos1[2]);
- pos1 += 3;
- } else if( *pos1=='+' ) { // If it's a '+', store a space at our Valueination
- *Value++ = ' ';
- pos1++;
- } else {
- *Value++ = *pos1++; // Otherwise, just store the character at our Valueination
- }
- }
- //*Value++ = '\0';
- return;
- }
- }
- strcpy(Value, "undefine"); // If param not found, then use default parameter
- return;
- }
- void getAllParams() {
- // Determing if it is a POST or GET method
- env = fopen("/www/cgi-bin/temp/current_environment", "r");
- //Inhalt der Environment Datei lesen
- while(env!=NULL && fgets(tmp, sizeof(tmp),env)!=NULL)
- {
- if (strstr(tmp, "QUERY_STRING='"))
- strcpy(InputData, tmp);
- str_ptr = strtok(tmp, "&'");
- }
- }
- int main(int argc, char** argv) {
- //Variablen setzen
- FILE* fdmfile;
- FILE* fdmconfig;
- char data[80];
- char* fdminfo;
- double f, fd,td;
- char ref[20] ="", plt[20] = "";
- char query[255];
- char line[256];
- int linenum=0;
- char aktuelleseite[100] = "";
- char modulname[100] = "fdmmodul";
- char submit[100];
- getAllParams();
- getParam("value", aktuelleseite);
- getParam("submit", submit);
- printf("Wert von Submit: %s" , submit);
- if (submit == "undefine")
- {
- printf("Das Formular wurde abgeschickt");
- }
- //fdm_info Datei öffnen
- fdmfile = fopen("/fdm_info", "r");
- //checken ob fdm_info geöffnet werden konnte
- if(fdmfile == NULL)
- goto done;
- //Inhalt der fdm_info holen und ausgeben
- if( fgets(data,80, fdmfile))
- //fdm_info String aufsplitten
- sscanf(data,"F:%lf FD:%lf REF:%s PLT:%s TD:%lf", &f, &fd, ref, plt, &td);
- //hier beginnt das HTML gefrickel
- printf("<div class=confhead>\n");
- printf("<a href='#10' onMouseUp = \"javascript:showHideInfo('id10','img_10');\">\n");
- printf("<img class=opener src='/images/open.gif' alt='Open Box' border = 0 id=img_10 title = 'Aktuelle FDM Daten'>\n");
- printf("Aktuelle FDM Daten</a></div>\n");
- printf("<div style = 'display:none' id=id10>\n");
- printf("<div class=cfgform><div class=cl-left></div><div class=cfgsubconfhead>FDM Daten</div><div class=cfgborders style='height:50px';><div class=cfginput>\n");
- //Tabelle mit den Aktuellen Daten generieren
- printf("<span class=cfglabel style=\"width:100px;\">Frequenz: %f Hz </span>", f);
- printf("<span class=cfglabel style=\"width:150px;\">Frequenz Differenz: %f Hz </span>", fd);
- printf("<span class=cfglabel style=\"width:100px;\">Referenzzeit: %s </span>",ref);
- printf("<span class=cfglabel style=\"width:100px;\">Powerlinetime: %s </span>",plt);
- printf("<span class=cfglabel style=\"width:100px;\">Zeit Differenz: %fs </span>",td);
- printf("</div></div></div></div><br /><br />");
- //fdm_info schließen
- fclose(fdmfile);
- //HTML Gefrickel Teil 2
- printf("<form action = 'mainv2' method=GET>\n");
- printf("<input type=hidden name=value value=%s />", aktuelleseite);
- printf("<input type=hidden name=callexternalcgi value=%s />", modulname);
- printf("<div class=confhead>\n");
- printf("<a href='#10' onMouseUp = \"javascript:showHideInfo('id11','img_11');\">\n");
- printf("<img class=opener src='/images/open.gif' alt='Open Box' border = 0 id=img_11 title = 'FDM Konfiguration'>\n");
- printf("FDM Konfiguration</a></div>\n");
- printf("<div style = 'display:none' id=id11>\n");
- printf("<div class=cfgform><div class=cl-left></div><div class=cfgsubconfhead>FDM Konfiguration</div><div class=cfgborders style='height:auto;'><div class=cfginput>\n");
- //FDM Konfiguration holen
- fdmconfig = fopen("/etc/fdm_monitor.conf", "r");
- //Konnte FDM Config gelesen werden?
- if(fdmconfig == NULL)
- {
- printf("Couldn't open fdm_monitor.conf\n");
- exit(22);
- }
- char key[256], value[256];
- //Inhalt der FDM Config lesen und HTML Formular generieren
- while(fgets(line, sizeof(line), fdmconfig) != NULL)
- {
- //Feste Config Werte deklarieren
- linenum++;
- if(line[0] == '#') continue;
- if(sscanf(line, "%255[^=]= %255s", key, value) != 2)
- {
- fprintf(stderr, "Syntax error, line %d\n", linenum);
- continue;
- }
- for(i=0;i<N_CONFIG_OPTIONS;i++)
- {
- //printf("%s=%s\n<br>", key, config_varnames[i]);
- if(strncmp(key, config_varnames[i], strlen(config_varnames[i])) == 0)
- {
- printf("<span class=cfglabel style=\"width:120px;\">%s: </span><input type=text name = 'fdm.%s' value = '%s' size='30' id='fdm.%s' maxlength='100'><br />", config_names[i], config_varnames[i], value, config_varnames[i]);
- }
- }
- }
- //fdm_info schließen
- fclose(fdmconfig);
- //HTML abschließen
- printf("<input type=submit name=submit value=SaveConfig></div></div></div></div><br style=\"clear:both\" /><br /></form>");
- done:
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment