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

嵌入式Linux

开发平台:

Unix_Linux

  1. #include <string.h>
  2. #include <stdlib.h>
  3. #include <fcntl.h>
  4. #include <getopt.h>
  5. #include <errno.h>
  6. #include <sys/ioctl.h>
  7. #include <linux/config.h>
  8. #include <netinet/in.h>
  9. #include <arpa/inet.h>
  10. #include <stdio.h>
  11. #include "cgivars.h"
  12. #include "htmllib.h"
  13. #include "config_phase.h"
  14. #include "sysconf.h"
  15. #define DEBUG        0
  16. #define ID_SMTPSERADD             40
  17. #define ID_MALSENDADD             41
  18. #define ID_SMTPCHECKFLG          42
  19. #define ID_SMTPCHECKUSR          43
  20. #define ID_SMTPCHECKPWD         44
  21. static config_item ** items;
  22. static int config_list[] = {40,41,42,43,44};
  23. static char *config_name[] = {"SMTPSERADD","MALSENDADD","SMTPCHECKFLG","SMTPCHECKUSR","SMTPCHECKPWD"};
  24. char java[] =
  25. "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  26. <HTML><HEAD>
  27. <META http-equiv=Expires content="Tue, 1 Jan 1980 2:00:00 GMT">
  28. <META http-equiv=Pragma content=no-cache>
  29. <META http-equiv=Cache-Control content="no-cache,must revalidate">
  30. <META http-equiv=Content-Type content="text/html; charset=gb2312">
  31. <STYLE type=text/css>BODY {
  32. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  33. }
  34. TD {
  35. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  36. }
  37. FORM {
  38. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  39. }
  40. OPTION {
  41. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  42. }
  43. TEXTAREA {
  44. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  45. }
  46. P {
  47. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  48. }
  49. OL {
  50. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  51. }
  52. INPUT {
  53. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  54. }
  55. SELECT {
  56. FONT-SIZE: 10pt; FONT-FAMILY: Arial
  57. }
  58. .style1 {
  59. FONT-WEIGHT: bold; FONT-SIZE: 14pt
  60. }
  61. </STYLE>
  62. <META content="MSHTML 6.00.6000.16414" name=GENERATOR></HEAD>";
  63. void mail(char **postvars, int form_method)
  64. {
  65. int config_num = sizeof(config_list)/sizeof(int);
  66. int i;
  67. int r_fd, w_fd;
  68. int temp_int;
  69. char *temp_string;
  70. //r_fd = open_read_fifo();
  71. items = init_config_item(items, config_num, config_list);
  72. printf("%sn", java);
  73. // If we got post, write it into flash
  74. if(form_method == POST)
  75. {
  76. GetConfValues(config_list, items, config_num);
  77. item_update(ID_SMTPCHECKFLG , items,config_num,  "0");
  78. if(SaveConfig(postvars, items, config_list, config_name, config_num))
  79. {/*
  80. w_fd = open_write_fifo();
  81. notify_config(w_fd);
  82. close_write_fifo(w_fd);
  83. read_fifo(r_fd);
  84. */
  85. }
  86. }
  87. GetConfValues(config_list, items, config_num);
  88. printf("<BODY leftMargin=30 topMargin=24 rightMargin=30><P class=style1>电子邮件</P><TABLE width="100%">n");
  89. printf("<TBODY><TR> <TD><FORM name=mail action="/mail.cgi" method=post  target=msgFrame>n");
  90.    printf("<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#dae3eb cellSpacing=0 cellPadding=0 width="100%" border=1>n");
  91. printf("<TBODY><TR bgColor=#cccccc><TD colSpan=3><STRONG>SMTP设置</STRONG></TD></TR>n");
  92. //SMTPSERADD
  93. printf(" <TD class=oddItem noWrap width="38%">电子邮件服务器(SMTP):</TD><TD class=oddItem width="28%">n");
  94.        if(temp_string = getdata(ID_SMTPSERADD, items, config_num))
  95. printf("<INPUT class=fieldNetAddr name=SMTPSERADD size=20 value=%s></TD><TD class=oddItem noWrap width="34%">(主机名或IP地址)</TD></TR>n", temp_string);      
  96. else
  97. printf("<INPUT class=fieldNetAddr name=SMTPSERADD size=20></TD><TD class=oddItem noWrap width="34%">(主机名或IP地址)</TD></TR>n"); 
  98. //MALSENDADD
  99. printf("<TR><TD class=oddItem noWrap>发件人电子邮件地址:</TD><TD class=oddItem>n");
  100. if(temp_string = getdata(ID_MALSENDADD, items, config_num))
  101. printf("<INPUT class=fieldNetAddr name=MALSENDADD size=20 value=%s></TD><TD class=oddItem></TD></TR>n", temp_string);
  102. else
  103. printf("<INPUT class=fieldNetAddr name=MALSENDADD size=20></TD><TD class=oddItem></TD></TR>n");
  104. //SMTPCHECKFLG
  105. if(temp_string = getdata(ID_SMTPCHECKFLG, items, config_num))
  106. {
  107. temp_int = atoi(temp_string);
  108. if(1 == temp_int)
  109. printf("<TR><TD class=oddItem noWrap>电子邮件需要验证<INPUT id=Mail_Auth_alian type=checkbox CHECKED value="1" name=SMTPCHECKFLG></TD>n");
  110. else
  111. printf("<TR><TD class=oddItem noWrap>电子邮件需要验证<INPUT id=Mail_Auth_alian type=checkbox value="1" name=SMTPCHECKFLG></TD>n");
  112. }
  113.        printf("<TD class=oddItem></TD><TD class=oddItem></TD></TR>n");
  114. //SMTPCHECKUSR
  115. printf("<TR><TD class=oddItem noWrap>发件人电子邮件用户名称:</TD>n");
  116. if(temp_string = getdata(ID_SMTPCHECKUSR, items, config_num))
  117.         printf("<TD class=oddItem><INPUT name=SMTPCHECKUSR  value=%s> </TD><TD class=oddItem></TD></TR>n", temp_string);
  118. else
  119. printf("<TD class=oddItem><INPUT name=SMTPCHECKUSR> </TD><TD class=oddItem></TD></TR>n");
  120. //ID_SMTPCHECKPWD
  121. printf("<TR><TD class=oddItem noWrap>发件人电子邮件验证密码:</TD>n");
  122. if(temp_string = getdata(ID_SMTPCHECKPWD, items, config_num))
  123.         printf("<TD class=oddItem><INPUT type=password name=SMTPCHECKPWD  value=%s> </TD><TD class=oddItem></TD></TR>n", temp_string);
  124. else
  125. printf("<TD class=oddItem><INPUT type=password name=SMTPCHECKPWD> </TD><TD class=oddItem></TD></TR>n");
  126. printf("</TBODY></TABLE>n");
  127.        printf("<P align=left><INPUT type=submit value=应用><INPUT type=reset value=清除></P></FORM></TD></TR>n");
  128. printf("<TR><TD></TD></TR></TBODY></TABLE>n");
  129. free_config_item(items, config_num);
  130. //close_read_fifo();
  131. }
  132. ////////////////////////////////////////////////////////////////////////////
  133. // Function: main
  134. ////////////////////////////////////////////////////////////////////////////
  135. int main(void)
  136. {
  137.     char **postvars = NULL;  // POST request data repository
  138.     char **getvars = NULL;   // GET request data repository
  139.     int form_method;         // POST = 1, GET = 0
  140.     // CGI part start here
  141.     adminCheck();
  142.     form_method = getRequestMethod();
  143.     if(form_method == POST)
  144.     {
  145.        // getvars = getGETvars();
  146.         postvars = getPOSTvars();
  147.     }
  148.     else if(form_method == GET)
  149.     {
  150.         getvars = getGETvars();
  151.     }
  152.     // CGI start here, set COM port
  153.     mail(postvars, form_method);
  154.     //htmlFooter();
  155.     cleanUp(form_method, getvars, postvars);
  156.     fflush(stdout);
  157.     exit(0);
  158. }  // end of main