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

嵌入式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 <time.h>
  8. #include <sys/ioctl.h>
  9. #include <linux/config.h>
  10. #include <netinet/in.h>
  11. #include <arpa/inet.h>
  12. #include "cgivars.h"
  13. #include "htmllib.h"
  14. #include "config_phase.h"
  15. #include "sysconf.h"
  16. #define DEBUG        0
  17. #define ID_NTPFLAG          147
  18. #define ID_NTPADD        148
  19. #define ID_NTPTM             149
  20. static config_item ** items;
  21. static int config_list[] = {147,148,149};
  22. static char *config_name[] = {"NTPFLAG", "NTPADD", "NTPTM"};
  23. void date_set(char **postvars, int form_method)
  24. {
  25. int config_num = sizeof(config_list)/sizeof(int);
  26. int i;
  27. int r_fd, w_fd;
  28. int temp_int, day, hour, min, sec;
  29. char *temp_string;
  30. time_t the_time;
  31. struct tm *tm_ptr;
  32. char data_string[MAX_LINE_LENGTH];
  33. char java[]="<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  34. <HTML><HEAD>
  35. <META http-equiv=Content-Type content="text/html; charset=gb2312">
  36. <SCRIPT language=JavaScript src="js/javascript.js">
  37. </SCRIPT>
  38. <SCRIPT language=javascript>
  39. <!--  
  40. function manual_time()
  41. {
  42. parent.frames["msgFrame"].location.replace("/action?action=settime&lang=chs&systime=" + document.getElementById('systime').value)
  43. }
  44. function auto_time()
  45. {
  46. parent.frames["msgFrame"].location.replace("/action?action=settime&lang=chs&systime=" + document.getElementById('pcsystime').value)
  47. }
  48. var  timerID  =  null
  49. var  timerRunning  =  false  
  50. function  stopclock(){
  51. if(timerRunning)
  52. clearTimeout(timerID)
  53. timerRunning  =  false
  54. }  
  55. function  startclock(){
  56. stopclock()
  57. showtime()
  58. }  
  59. function  showtime(){
  60. var  now  =  new  Date()
  61. var  years = now.getFullYear()
  62. var  months = now.getMonth() + 1
  63. var  days = now.getDate()
  64. var  hours  =  now.getHours()
  65. var  minutes  =  now.getMinutes()
  66. var  seconds  =  now.getSeconds()
  67. var  timeValue  = "" + years
  68. timeValue  +=  ((months  <  10)  ?  "-0"  : "-")  +  months
  69. timeValue  +=  ((days  <  10)  ?  "-0"  :  "-")  +  days
  70. timeValue  +=  " "+((hours  <  10)  ?  "0"  : "")  +  hours
  71. timeValue  +=  ((minutes  <  10)  ?  ":0"  :  ":")  +  minutes
  72. timeValue  +=  ((seconds  <  10)  ?  ":0"  :  ":")  +  seconds
  73. document.getElementById('pcsystime').value  =  timeValue  
  74. timerID  =  setTimeout("showtime()",1000)
  75. timerRunning  =  true
  76. }
  77. //-->
  78. </SCRIPT>
  79. <STYLE type=text/css>BODY {
  80. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  81. }
  82. TD {
  83. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  84. }
  85. FORM {
  86. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  87. }
  88. OPTION {
  89. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  90. }
  91. TEXTAREA {
  92. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  93. }
  94. P {
  95. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  96. }
  97. OL {
  98. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  99. }
  100. INPUT {
  101. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  102. }
  103. SELECT {
  104. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  105. }
  106. .style1 {
  107. FONT-WEIGHT: bold; FONT-SIZE: 14pt
  108. }
  109. </STYLE>
  110. <META content="MSHTML 6.00.6000.16414" name=GENERATOR></HEAD>";
  111. items = init_config_item(items, config_num, config_list);
  112. printf("%sn", java);
  113. // r_fd = open_read_fifo();
  114. // If we got post, write it into flash
  115. if(form_method == POST)
  116. {
  117. GetConfValues(config_list, items, config_num);
  118.      SaveConfig(postvars, items, config_list, config_name, config_num);
  119.      /*
  120. if(SaveConfig(postvars, items, config_list, config_name, config_num))
  121. {
  122. w_fd = open_write_fifo();
  123. notify_config(w_fd);
  124. close_write_fifo(w_fd);
  125. read_fifo(r_fd);
  126. }
  127.      */
  128. for (i=0; postvars[i]; i+= 2)
  129. {
  130. if(!strcmp(postvars[i], "PCTIME"))
  131. {
  132. char MM[2],DD[2],hh[2],mm[2],YY[4],ss[2];
  133. temp_string = strchr(postvars[i+1], '-'); 
  134. temp_string -= 4;
  135. strncpy(YY,  temp_string, 4);
  136. temp_string += 5;
  137. strncpy(MM, temp_string, 2);
  138. temp_string += 3;
  139. strncpy(DD, temp_string, 2);
  140. temp_string += 3;
  141. strncpy(hh, temp_string, 2);
  142. temp_string += 3;
  143. strncpy(mm, temp_string, 2);
  144. temp_string += 3;
  145. strncpy(ss, temp_string, 2);
  146. memset(data_string, 0, MAX_LINE_LENGTH);
  147. strcpy(data_string, "date ");
  148. strncat(data_string,  MM,  2);
  149. strncat(data_string,  DD,  2);
  150. strncat(data_string,  hh,  2);
  151. strncat(data_string,  mm,  2);
  152. strncat(data_string,  YY,  4);
  153. strcat(data_string,  ".");
  154. strncat(data_string,  ss,  2);
  155. if(system(data_string)<0)
  156. {
  157. ;
  158. }
  159. }
  160. }
  161. }
  162. GetConfValues(config_list, items, config_num);
  163. printf("<BODY leftMargin=30 topMargin=24 onload=startclock() rightMargin=30>n");
  164. printf("<P><SPAN class=style1>时间设置</SPAN></P>n");
  165. printf("<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#dae3eb cellSpacing=0 cellPadding=0 width="100%" border=1>n");
  166. printf("<TBODY><TR bgColor=#cccccc><TD colSpan=3><STRONG>系统时间</STRONG></TD></TR>n");
  167. memset(data_string, 0, MAX_LINE_LENGTH);
  168. time(&the_time);
  169. tm_ptr = localtime(&the_time);
  170. sprintf(data_string, "%04d-%02d-%02d %02d:%02d:%02dn", tm_ptr->tm_year+1900, tm_ptr->tm_mon+1, tm_ptr->tm_mday,
  171.   tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
  172. printf("<FORM name=settime action="/date.cgi" method=post target=msgFrame>n");
  173.    printf("<TR><TD noWrap width="32%">系统时间       (%s)</TD>n", data_string);
  174.      printf("<TD><INPUT style="WIDTH: 180px" type=submit value=自动调整为PC的当前时间></TD>n");
  175.      printf("<TD width="30%">&nbsp;<INPUT id=pcsystime maxLength=19 size=19 value="PC TIME" name=PCTIME></TD></TR>n");
  176.    printf("</FORM>");
  177. printf("<FORM name=date action="/date.cgi" method=post target=msgFrame>n");
  178. printf("<TR bgColor=#cccccc><TD colSpan=3><STRONG>NTP服务器设置</STRONG></TD></TR>n");
  179. //NTPFLAG
  180. printf("<TR><TD noWrap width="29%">NTP是否启用</FONT></TD>n");
  181. printf("<TD align=middle colspan=3><DIV align=left><SELECT size=1 name=NTPFLAG>n");
  182. if(temp_string = getdata(ID_NTPFLAG, items, config_num))
  183. {
  184. temp_int = atoi(temp_string);
  185. if(temp_int == 0)
  186. {
  187. printf("<option value="0" selected>否</OPTION> n");
  188. printf("<option value="1">是</OPTION> n");
  189. }
  190. else
  191. {
  192. printf("<option value="0">否</OPTION> n");
  193. printf("<option value="1" selected>是</OPTION> n");
  194. }
  195. }
  196. printf("</SELECT></DIV></TD></TR>n");
  197. //ID_NTPADD
  198. printf("<TR><TD noWrap width="29%">NTP服务器地址</FONT></TD>n");
  199. if(temp_string = getdata(ID_NTPADD, items, config_num))
  200. printf("<TD align=middle colspan=3><DIV align=left><INPUT size=15 name=NTPADD value=%s></DIV></TD></TR>n", temp_string);
  201. else
  202. printf("<TD align=middle colspan=3><DIV align=left><INPUT size=15 name=NTPADD></DIV></TD></TR>n");
  203. //ID_NTPTM
  204. printf("<TR><TD noWrap width="29%">时间同步间隔(以小时为单位)</FONT></TD>n");
  205. if(temp_string = getdata(ID_NTPTM, items, config_num))
  206. printf("<TD align=middle colspan=3><DIV align=left><INPUT size=15 name=NTPTM value=%s></DIV></TD></TR>n", temp_string);
  207. else
  208. printf("<TD align=middle colspan=3><DIV align=left><INPUT size=15 name=NTPTM></DIV></TD></TR>n");
  209. printf("<TR><TD colSpan=3><P align=left><INPUT type=submit value=应用><INPUT type=reset value=清除></P>n");
  210. printf("</TD></TR></FORM></TBODY></TABLE></BODY></HTML>n");
  211. free_config_item(items, config_num);
  212. //char *loginName = getenv("REQUEST_METHOD");
  213. //printf("loginName :%sn",loginName);
  214. //int  second = time((time_t *)NULL);
  215. //printf("the time is :%d  n   ",second);
  216. //printf("%dn",getpid());
  217. //close_read_fifo();
  218. }
  219. ////////////////////////////////////////////////////////////////////////////
  220. // Function: main
  221. ////////////////////////////////////////////////////////////////////////////
  222. int main(void)
  223. {
  224.     char **postvars = NULL;  // POST request data repository
  225.     char **getvars = NULL;   // GET request data repository
  226.     int form_method;         // POST = 1, GET = 0
  227.     // CGI part start here
  228.     adminCheck();
  229.     form_method = getRequestMethod();
  230.     if(form_method == POST)
  231.     {
  232.        // getvars = getGETvars();
  233.         postvars = getPOSTvars();
  234.     }
  235.     else if(form_method == GET)
  236.     {
  237.         getvars = getGETvars();
  238.     }
  239.     // CGI start here, set COM port
  240.     date_set(postvars, form_method);
  241.     //htmlFooter();
  242.     cleanUp(form_method, getvars, postvars);
  243.     fflush(stdout);
  244.     exit(0);
  245. }  // end of main