Guest User

Untitled

a guest
May 7th, 2012
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define LAENGE 100 //länger der einzelnen Zeilen
  5. #define ANZAHL 10 //Anzahl der Zeilen
  6.  
  7. enum
  8. {
  9.     CONFIG_FREQUENZ,
  10.     CONFIG_FDMANALOG1,
  11.     CONFIG_FDMANALOG2,
  12.     CONFIG_UPPER_LIMIT,
  13.     CONFIG_LOWER_LIMIT,
  14.     CONFIG_MONITOR,
  15.     CONFIG_DISPLAY,  
  16.     N_CONFIG_OPTIONS
  17. };
  18.  
  19. #define CONFIG_FDMANALOG1_NAME                       "FDM Analog Wert 1"
  20. #define CONFIG_FDMANALOG2_NAME                       "FDM Analog Wert 2"
  21. #define CONFIG_FREQUENZ_NAME                         "Frequenz"
  22. #define CONFIG_UPPER_LIMIT_NAME                      "Upper Limit"
  23. #define CONFIG_LOWER_LIMIT_NAME                      "Lower Limit"
  24. #define CONFIG_MONITOR_NAME                          "Monitoring"
  25. #define CONFIG_DISPLAY_NAME                          "Display"
  26.  
  27.  
  28. #define CONFIG_FREQUENZ_VARNAME                         "fdm powerline frequency"
  29. #define CONFIG_FDMANALOG1_VARNAME                       "fdm analog 1"
  30. #define CONFIG_FDMANALOG2_VARNAME                       "fdm analog 2"
  31. #define CONFIG_UPPER_LIMIT_VARNAME                      "upper limit"
  32. #define CONFIG_LOWER_LIMIT_VARNAME                      "lower limit"
  33. #define CONFIG_MONITOR_VARNAME                          "monitor"
  34. #define CONFIG_DISPLAY_VARNAME                          "display"
  35.  
  36.  
  37.  
  38. #define DEFAULT_CONFIG_NAMES           \
  39. {                                      \
  40.   CONFIG_FREQUENZ_NAME,                 \
  41.   CONFIG_FDMANALOG1_NAME,                   \
  42.   CONFIG_FDMANALOG2_NAME,                   \
  43.   CONFIG_UPPER_LIMIT_NAME,              \
  44.   CONFIG_LOWER_LIMIT_NAME,              \
  45.   CONFIG_MONITOR_NAME,                   \
  46.   CONFIG_DISPLAY_NAME,                   \
  47. }
  48.  
  49. #define DEFAULT_CONFIG_VARNAMES           \
  50. {                                          \
  51.   CONFIG_FREQUENZ_VARNAME,                 \
  52.   CONFIG_FDMANALOG1_VARNAME,               \
  53.   CONFIG_FDMANALOG2_VARNAME,               \
  54.   CONFIG_UPPER_LIMIT_VARNAME,              \
  55.   CONFIG_LOWER_LIMIT_VARNAME,              \
  56.   CONFIG_MONITOR_VARNAME,                   \
  57.   CONFIG_DISPLAY_VARNAME,                   \
  58.  }
  59. #define ToHex(Y) (Y>='0'&&Y<='9'?Y-'0':Y-'A'+10)
  60.  
  61. char *str_ptr;
  62. char values[4096];
  63. char InputData[4096];
  64. char tmp[256];
  65. FILE* env;
  66. int i;
  67. char *ns = NULL;
  68.  
  69. char *config_names[N_CONFIG_OPTIONS]= DEFAULT_CONFIG_NAMES;
  70. char *config_varnames[N_CONFIG_OPTIONS]= DEFAULT_CONFIG_VARNAMES;
  71.  
  72. void getParam(const char *Name, char *Value) {
  73. char *pos1 = strstr(InputData, Name);
  74.  
  75. if (pos1) {
  76. pos1 += strlen(Name);
  77.  
  78. if (*pos1 == '=') { // Make sure there is an '=' where we expect it
  79. pos1++;
  80.  
  81. while (*pos1 && *pos1 != '&') {
  82. if (*pos1 == '%') { // Convert it to a single ASCII character and store at our Valueination
  83. *Value++ = (char)ToHex(pos1[1]) * 16 + ToHex(pos1[2]);
  84. pos1 += 3;
  85. } else if( *pos1=='+' ) { // If it's a '+', store a space at our Valueination
  86. *Value++ = ' ';
  87. pos1++;
  88. } else {
  89. *Value++ = *pos1++; // Otherwise, just store the character at our Valueination
  90. }
  91. }
  92.  
  93. //*Value++ = '\0';
  94. return;
  95. }
  96.  
  97. }
  98. strcpy(Value, "undefine"); // If param not found, then use default parameter
  99. return;
  100. }
  101.  
  102. void getAllParams() {
  103. // Determing if it is a POST or GET method
  104.     env = fopen("/www/cgi-bin/temp/current_environment", "r");
  105.    
  106.     //Inhalt der Environment Datei lesen
  107.     while(env!=NULL && fgets(tmp, sizeof(tmp),env)!=NULL)
  108.         {
  109.         if (strstr(tmp, "QUERY_STRING='"))
  110.             strcpy(InputData, tmp);
  111.         str_ptr = strtok(tmp, "&'");
  112.         }
  113. }
  114.  
  115. int main(int argc, char** argv) {
  116.     //Variablen setzen
  117.     FILE* fdmfile;
  118.     FILE* fdmconfig;
  119.     char data[80];
  120.     char* fdminfo;
  121.     double f, fd,td;
  122.     char ref[20] ="", plt[20] = "";
  123.     char query[255];
  124.     char line[256];
  125.     int linenum=0;
  126.     char aktuelleseite[100] = "";
  127.     char modulname[100] = "fdmmodul";
  128.     char submit[100];
  129.  
  130. getAllParams();
  131. getParam("value", aktuelleseite);
  132. getParam("submit", submit);
  133. printf("Wert von Submit: %s" , submit);
  134.  
  135. if (submit == "undefine")
  136. {
  137.     printf("Das Formular wurde abgeschickt");
  138. }
  139.  
  140.     //fdm_info Datei öffnen
  141.     fdmfile = fopen("/fdm_info", "r");
  142.    
  143.    //checken ob fdm_info geöffnet werden konnte
  144.     if(fdmfile == NULL)
  145.         goto done;
  146.    
  147.    //Inhalt der fdm_info holen und ausgeben
  148.     if( fgets(data,80, fdmfile))
  149.    
  150.     //fdm_info String aufsplitten
  151.     sscanf(data,"F:%lf FD:%lf REF:%s PLT:%s TD:%lf", &f, &fd, ref, plt, &td);
  152.    
  153.     //hier beginnt das HTML gefrickel
  154.     printf("<div class=confhead>\n");
  155.     printf("<a href='#10' onMouseUp = \"javascript:showHideInfo('id10','img_10');\">\n");
  156.     printf("<img class=opener src='/images/open.gif' alt='Open Box' border = 0 id=img_10  title = 'Aktuelle FDM Daten'>\n");
  157.     printf("Aktuelle FDM Daten</a></div>\n");
  158.     printf("<div style = 'display:none' id=id10>\n");
  159.     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");
  160.     //Tabelle mit den Aktuellen Daten generieren
  161.     printf("<span class=cfglabel style=\"width:100px;\">Frequenz: %f Hz&nbsp;&nbsp;</span>", f);
  162.     printf("<span class=cfglabel style=\"width:150px;\">Frequenz Differenz: %f Hz&nbsp;&nbsp;</span>", fd);
  163.     printf("<span class=cfglabel style=\"width:100px;\">Referenzzeit: %s&nbsp;&nbsp;</span>",ref);
  164.     printf("<span class=cfglabel style=\"width:100px;\">Powerlinetime: %s&nbsp;&nbsp;</span>",plt);
  165.     printf("<span class=cfglabel style=\"width:100px;\">Zeit Differenz: %fs&nbsp;&nbsp;</span>",td);
  166.     printf("</div></div></div></div><br /><br />");
  167.    
  168.  
  169.     //fdm_info schließen
  170.     fclose(fdmfile);
  171.    
  172.     //HTML Gefrickel Teil 2
  173.     printf("<form action = 'mainv2' method=GET>\n");
  174.     printf("<input type=hidden name=value value=%s />", aktuelleseite);
  175.     printf("<input type=hidden name=callexternalcgi value=%s />", modulname);
  176.     printf("<div class=confhead>\n");
  177.     printf("<a href='#10' onMouseUp = \"javascript:showHideInfo('id11','img_11');\">\n");
  178.     printf("<img class=opener src='/images/open.gif' alt='Open Box' border = 0 id=img_11  title = 'FDM Konfiguration'>\n");
  179.     printf("FDM Konfiguration</a></div>\n");
  180.     printf("<div style = 'display:none' id=id11>\n");
  181.     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");
  182.  
  183.     //FDM Konfiguration holen
  184.     fdmconfig = fopen("/etc/fdm_monitor.conf", "r");    
  185.     //Konnte FDM Config gelesen werden?
  186.  
  187.     if(fdmconfig == NULL)
  188.     {
  189.         printf("Couldn't open fdm_monitor.conf\n");
  190.         exit(22);
  191.     }
  192.  
  193.      char key[256], value[256];
  194.     //Inhalt der FDM Config lesen und HTML Formular generieren
  195.        while(fgets(line, sizeof(line), fdmconfig) != NULL)
  196.         {
  197.         //Feste Config Werte deklarieren
  198.         linenum++;
  199.  
  200.        
  201.         if(line[0] == '#') continue;
  202.  
  203.         if(sscanf(line, "%255[^=]= %255s", key, value) != 2)
  204.         {
  205.                 fprintf(stderr, "Syntax error, line %d\n", linenum);
  206.                 continue;
  207.         }
  208.        
  209.         for(i=0;i<N_CONFIG_OPTIONS;i++)
  210.         {
  211.             //printf("%s=%s\n<br>", key, config_varnames[i]);
  212.            
  213.             if(strncmp(key, config_varnames[i], strlen(config_varnames[i])) == 0)    
  214.            {
  215.               printf("<span class=cfglabel style=\"width:120px;\">%s: &nbsp;</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]);      
  216.            }    
  217.            
  218.         }
  219.        }
  220.     //fdm_info schließen
  221.     fclose(fdmconfig);
  222.    
  223.     //HTML abschließen
  224.      printf("<input type=submit name=submit value=SaveConfig></div></div></div></div><br style=\"clear:both\" /><br /></form>");
  225.  
  226. done:    
  227.     return 0;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment