maintenance.c
上传用户:sxdewei
上传日期:2014-06-02
资源大小:67k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <fcntl.h>
  5. #include <getopt.h>
  6. #include <errno.h>
  7. #include <sys/ioctl.h>
  8. #include <linux/config.h>
  9. #include <netinet/in.h>
  10. #include <arpa/inet.h>
  11. #include "cgivars.h"
  12. #include "htmllib.h"
  13. #include "config_phase.h"
  14. #include "sysconf.h"
  15. #include "fifo.h"
  16. #define DEBUG        0
  17. #define ID_LOC_ADMNM          21
  18. #define ID_LOC_ADMPD       22
  19. #define ID_LOC_USRNM           23
  20. #define ID_LOC_USRPD           24
  21. static config_item ** items;
  22. //static int config_list[] = {21,22,23,24};
  23. //static char *config_name[] = {"LOC_ADMNM", "LOC_ADMPD", "LOC_USRNM", "LOC_USRPD"};
  24. void maintenance(char **postvars, int form_method)
  25. {
  26. //int config_num = sizeof(config_list)/sizeof(int);
  27. int i;
  28. int r_fd, w_fd;
  29. int temp_int;
  30. char *temp_string;
  31. char data_string[MAX_LINE_LENGTH];
  32. char java[]=
  33. "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">rn
  34. <HTML><HEAD><TITLE>Maintenance</TITLE>
  35. <META http-equiv=Expires content="Tue, 1 Jan 1980 2:00:00 GMT">
  36. <META http-equiv=Pragma content=no-cache>
  37. <META http-equiv=Cache-Control content="no-cache,must revalidate">
  38. <META http-equiv=Content-Type content="text/html; charset=gb2312">
  39. <STYLE type=text/css>BODY {
  40. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  41. }
  42. TD {
  43. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  44. }
  45. FORM {
  46. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  47. }
  48. OPTION {
  49. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  50. }
  51. TEXTAREA {
  52. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  53. }
  54. P {
  55. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  56. }
  57. OL {
  58. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  59. }
  60. INPUT {
  61. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  62. }
  63. SELECT {
  64. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  65. }
  66. .style1 {
  67. FONT-WEIGHT: bold; FONT-SIZE: 14pt
  68. }
  69. </STYLE>
  70. <META content="MSHTML 6.00.6000.16414" name=GENERATOR></HEAD>";
  71. r_fd = open_read_fifo();
  72. //items = init_config_item(items, config_num, config_list);
  73. printf("%sn", java);
  74. // If we got post, write it into flash
  75. if(form_method == POST)
  76. {
  77. //RESTART DEFAULT_CFG FIMAGEii
  78. for (i=0; postvars[i]; i+= 2)
  79. {
  80. if(!strcmp(postvars[i], "RESTART"))
  81. {
  82. memset(data_string, 0, MAX_LINE_LENGTH);
  83. strcpy(data_string, "reboot");
  84. if(system(data_string)<0)
  85. {
  86. ;
  87. }
  88. }
  89. if(!strcmp(postvars[i], "DEFAULT_CFG"))
  90. {
  91. w_fd = open_write_fifo();
  92. send_cmd(w_fd, SET_DEFAULT_CFG);
  93. close_write_fifo(w_fd);
  94. }
  95. }
  96. }
  97. //GetConfValues(config_list, items, config_num);
  98. printf("<BODY class=bodyBg bgColor=white leftMargin=30 topMargin=24 rightMargin=30><P class=style1>系统维护</P>n");
  99. printf("<TABLE width="100%"><TBODY><TR><TD height=319><TABLE style="BORDER-COLLAPSE: collapse" borderColor=#dae3eb cellSpacing=0  cellPadding=0 width="100%" border=1><TBODY>n");
  100.    printf("<TR bgColor=#cccccc><TD class=topTitle vAlign=top noWrap  colSpan=2><STRONG>系统维护</STRONG></TD></TR>n");
  101. printf("<FORM name=RestartForm action="/maintenance.cgi" method=post target=msgFrame>n");
  102. printf("<INPUT type=hidden value=1 name=RESTART>n");
  103. printf("<TR><TD colSpan=2 height=35><INPUT type=submit value=重新启动 width=75> &nbsp;重启ipcam。</TD></TR></FORM>n");
  104.           
  105.        printf("<FORM name=DefaultForm action="/cgi-bin/maintenance.cgi" method=post  target=msgFrame>n");
  106. printf("<INPUT type=hidden value=1 name=DEFAULT_CFG>n");  
  107. printf("<TR><TD colSpan=2 height=35><INPUT type=submit value=恢复设置 width=75>  &nbsp;恢复出厂设置。</TD></TR></FORM>n");
  108. printf("<FORM name=UpgradeForm action="/cgi-bin/maintenance.cgi" method=post  target=msgFrame encType=multipart/form-data>n");
  109. printf("<INPUT type=hidden  value=1 name=UPDATEFIRMWARE>n");
  110. printf("<TR bgColor=#cccccc> <TD class=subTitle noWrap colSpan=2><DIV align=left>系统升级</DIV></TD></TR>n");
  111.        printf("<TR><TD noWrap colSpan=2>用最新的固件升级ipcam</TD></TR>n");
  112. printf("<TR><TD noWrap width="56%" height=35>指定升级文件:&nbsp; <INPUT type=file name=FIMAGE> &nbsp;然后点击</TD>n");
  113. printf("<TD class=button noWrap align=left width="44%" height=35><INPUT class=btnNormal type=button value=执行升级 name=Upgrade width="75"></TD></TR>n");
  114. printf("<TR><TD colSpan=2><B>注意:</B>在升级过程中,请勿切断ipcam的电源。ipcam将在升级完成后自动重启  (正常过程约需3分钟) 。</TD></TR></FORM>n");
  115.        printf("</TBODY></TABLE></TD></TR></TBODY></TABLE>n");             
  116.    
  117. //free_config_item(items, config_num);
  118. close_read_fifo();
  119. }
  120. ////////////////////////////////////////////////////////////////////////////
  121. // Function: main
  122. ////////////////////////////////////////////////////////////////////////////
  123. int main(void)
  124. {
  125.     char **postvars = NULL;  // POST request data repository
  126.     char **getvars = NULL;   // GET request data repository
  127.     int form_method;         // POST = 1, GET = 0
  128.     // CGI part start here
  129.     adminCheck();
  130.     form_method = getRequestMethod();
  131.     if(form_method == POST)
  132.     {
  133.        // getvars = getGETvars();
  134.         postvars = getPOSTvars();
  135.     }
  136.     else if(form_method == GET)
  137.     {
  138.         getvars = getGETvars();
  139.     }
  140.     // CGI start here, set COM port
  141.     maintenance(postvars, form_method);
  142.     //htmlFooter();
  143.     cleanUp(form_method, getvars, postvars);
  144.     fflush(stdout);
  145.     exit(0);
  146. }  // end of main