嵌入式Linux web配置示例
2013-06-03 15:08
239 查看
嵌入式web配置示例
index.html
read.c
write.c
common.js
libini源码:保存图片,将图片后缀改为rar
index.html
<html> <head> <!--<meta http-equiv="Content-Type" content="text/html; charset=gb2312">--> <meta http-equiv="Content-Type" content="text/html; charset=utf8"> <title>嵌入式网页配置示例</title> <script type="text/javascript"> function validate_passwd(field,alerttxt) { with (field) { apos=value.indexOf("@") dotpos=value.lastIndexOf(".") if (value != '123') { alert(alerttxt); return false } else { return true } } } function validate_form(thisform) { with (thisform) { if (validate_passwd(passwd,"密码错误!")==false) { passwd.focus(); return false } } } </script> <body> <pre> <center> <h1>嵌入式网页配置示例</h1> <form action="./cgi-bin/read.cgi" onsubmit="return validate_form(this);" method="post"> 请输入密码:<input type="password" name="passwd" > <input type="submit" value="提交"> </form> </center> </pre> </body> </html>
read.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include "libini.h" char local_mac[32] = "00:01:02:03:04:05"; char local_ip[32] = "0.0.0.0"; char yealink_report_server[32] = "0.0.0.0"; char server_ip[32] = "0.0.0.0"; char number[32] = "0000"; char password[32] = "0000"; void read_rclocal(void) { FILE *fp; // fp = fopen("./cgi-bin/rc.local", "rt"); fp = fopen("/home/bin/rc.local", "rt"); if (fp != NULL) { char buffer[256]; memset(buffer, 0, sizeof(buffer)); fread(buffer, 1, sizeof(buffer), fp); //printf("buffer = %s\n", buffer); { // 读mac地址 char *p; char *p2; p = strtok(buffer, "\n"); //printf("p = %s\n", p); p = strtok(NULL, "\n"); //printf("p = %s\n", p); // mac地址行 p2 = strtok(p, " "); //printf("p2 = %s\n", p2); p2 = strtok(NULL, " "); //printf("p2 = %s\n", p2); p2 = strtok(NULL, " "); //printf("p2 = %s\n", p2); p2 = strtok(NULL, " "); //printf("p2 = %s\n", p2); p2 = strtok(NULL, "\n"); //printf("p2 = %s\n", p2); if (p2 != NULL && local_mac != NULL) { memset(local_mac, 0, sizeof(local_mac)); strcpy(local_mac, p2); //printf("local_mac = %s\n", local_mac); } } { // 读local_ip char *p; char *p2; memset(buffer, 0, sizeof(buffer)); fseek(fp, 0, SEEK_SET); fread(buffer, 1, sizeof(buffer), fp); //printf("buffer = %s\n", buffer); p = strtok(buffer, "\n"); //printf("p = %s\n", p); p = strtok(NULL, "\n"); //printf("p = %s\n", p); p = strtok(NULL, "\n"); //printf("p = %s\n", p); p2 = strtok(p, " "); //printf("p2 = %s\n", p2); p2 = strtok(NULL, " "); //printf("p2 = %s\n", p2); p2 = strtok(NULL, " "); //printf("p2 = %s\n", p2); if (p2 != NULL && local_ip != NULL) { memset(local_ip, 0, sizeof(local_ip)); strcpy(local_ip, p2); //printf("local_ip = %s\n", local_ip); } } fclose(fp); fp = NULL; } } void read_ini(void) { INI *pini; pini = ini_open("/home/bin/sdp_config.ini"); if (!pini) { printf("load config faild.\n"); return; } //printf("length:%d\n", pini->length); ini_set(pini, "system@local_ip", local_ip); //printf("local_ip = %s\n", local_ip); ini_get(pini, "system@yealink_report_server", yealink_report_server); //printf("yealink_report_server = %s\n", yealink_report_server); ini_get(pini, "phone@server_ip", server_ip); //printf("server_ip = %s\n", server_ip); ini_get(pini, "phone@number", number); //printf("number = %s\n", number); ini_get(pini, "phone@password", password); //printf("password = %s\n", password); ini_save(pini); ini_close(pini); } void web_page(void) { // html page. // printf("Content-type:text/html;charset=gb2312\n\n"); printf("Content-type:text/html;charset=utf8\n\n"); printf("<html>"); printf("<head>"); printf("<title>配置页面</title>"); printf("<script src='../common.js'></script>"); printf("</head>"); printf("<body>"); printf("<p><pre><center>"); printf("<h1>配置界面</h1>"); printf("\n"); printf("<form action='write.cgi' onsubmit='return validate_form(this);' method='post'>"); printf("本 机MAC:<input type='text' id='local_mac' name='local_mac' value='%s' />", local_mac); printf("\n\n"); printf("本 机 IP:<input type='text' id='local_ip' name='local_ip' value='%s' />", local_ip); printf("\n\n"); printf("调度台IP:<input type='text' id='yealink_report_server' name='yealink_report_server' value='%s'/>", yealink_report_server); printf("\n\n"); printf("服务器IP:<input type='text' id='server_ip' name='server_ip' value='%s' />", server_ip); printf("\n\n"); printf("电话号码:<input type='text' id='number' name='number' value='%s' />", number); printf("\n\n"); printf("密 码:<input type='text' id='password' name='password' value='%s' />", password); printf("\n\n"); printf("<input type='submit' value='提交' /> <input type='button', value='退出' onclick=window.location.href='../index.html' />"); printf("\n"); printf("</form>"); printf("</center></pre></p>"); printf("</body>"); printf("</html>"); } int main(int argc, char *argv[]) { read_rclocal(); read_ini(); web_page(); return 0; }
write.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "libini.h" char local_mac[32] = "00:01:02:03:04:05"; char local_ip[32] = "0.0.0.0"; char yealink_report_server[32] = "0.0.0.0"; char server_ip[32] = "0.0.0.0"; char number[32] = "0000"; char password[32] = "0000"; char buf[256]; void write_rclocal(void) { FILE *fp; // fp = fopen("./cgi-bin/rc.local", "rt"); fp = fopen("/home/bin/rc.local", "wt"); if (fp != NULL) { char buffer[256]; memset(buffer, 0, sizeof(buffer)); sprintf(buffer, "#!/bin/sh\nifconfig eth0 hw ether %s\nifconfig eth0 %s up\nifconfig lo 127.0.0.1 up\nhostname %s\n", local_mac, local_ip, local_ip); fwrite(buffer, 1, strlen(buffer), fp); fclose(fp); fp = NULL; } } // URL解密 void urldecode(char *p) { register i=0; if (p != NULL) { while(*(p+i)) { if ((*p=*(p+i)) == '%') { *p = *(p+i+1) >= 'A' ? ((*(p+i+1) & 0XDF) - 'A') + 10 : (*(p+i+1) - '0'); *p = (*p) * 16; *p += *(p+i+2) >= 'A' ? ((*(p+i+2)&0XDF) - 'A') + 10 : (*(p+i+2) - '0'); i+=2; } else if (*(p+i)=='+') { *p=' '; } p++; } *p='\0'; } } void read_form(void) { int len; char *data; char *method; method = getenv("REQUEST_METHOD"); if(method == NULL) { return; } if(!strcmp(method, "POST")) { len = atoi(getenv("CONTENT_LENGTH")); if(len != 0) { data = (char *)malloc(sizeof(char)*len + 1); memset(data, 0, (sizeof(char)*len + 1)); fread(data, sizeof(char), len, stdin); } } else if(!strcmp(method, "GET")) { data = getenv("QUERY_STRING"); len = strlen(data); } if(len != 0) { urldecode(data); memset(buf, 0, sizeof(buf)); strcpy(buf, data); } } void analyse(void) { // 分解信息 char *p; p = strtok(buf, "&="); //printf("p = %s\n", p); p = strtok(NULL, "&="); //printf("p = %s\n", p); if (p != NULL && local_mac != NULL) { memset(local_mac, 0, sizeof(local_mac)); strcpy(local_mac, p); //printf("local_mac = %s\n", local_mac); } p = strtok(NULL, "&="); //printf("p = %s\n", p); p = strtok(NULL, "&="); //printf("p = %s\n", p); if (p != NULL && local_ip != NULL) { memset(local_ip, 0, sizeof(local_ip)); strcpy(local_ip, p); //printf("local_ip = %s\n", local_ip); } p = strtok(NULL, "&="); //printf("p = %s\n", p); p = strtok(NULL, "&="); //printf("p = %s\n", p); if (p != NULL && yealink_report_server != NULL) { memset(yealink_report_server, 0, sizeof(yealink_report_server)); strcpy(yealink_report_server, p); //printf("yealink_report_server = %s\n", yealink_report_server); } p = strtok(NULL, "&="); //printf("p = %s\n", p); p = strtok(NULL, "&="); //printf("p = %s\n", p); if (p != NULL && server_ip != NULL) { memset(server_ip, 0, sizeof(server_ip)); strcpy(server_ip, p); //printf("server_ip = %s\n", server_ip); } p = strtok(NULL, "&="); //printf("p = %s\n", p); p = strtok(NULL, "&="); //printf("p = %s\n", p); if (p != NULL && number != NULL) { memset(number, 0, sizeof(number)); strcpy(number, p); //printf("number = %s\n", number); } p = strtok(NULL, "&="); //printf("p = %s\n", p); p = strtok(NULL, "&="); //printf("p = %s\n", p); if (p != NULL && password != NULL) { memset(password, 0, sizeof(password)); strcpy(password, p); //printf("number = %s\n", password); } } void write_ini(void) { INI *pini; pini = ini_open("/home/bin/sdp_config.ini"); if (!pini) { printf("load config faild.\n"); return; } //printf("length:%d\n", pini->length); ini_set(pini, "system@local_ip", local_ip); //printf("local_ip = %s\n", local_ip); ini_set(pini, "system@yealink_report_server", yealink_report_server); //printf("yealink_report_server = %s\n", yealink_report_server); ini_set(pini, "phone@server_ip", server_ip); //printf("server_ip = %s\n", server_ip); ini_set(pini, "phone@number", number); //printf("number = %s\n", number); ini_set(pini, "phone@password", password); //printf("password = %s\n", password); ini_save(pini); ini_close(pini); } void web_page(void) { // html page. // printf("Content-type:text/html;charset=gb2312\n\n"); printf("Content-type:text/html;charset=utf8\n\n"); printf("<html>"); printf("<head>"); printf("<title>重新启动</title>"); printf("<meta http-equiv='Refresh' content='40;URL=http://%s:8080' />", local_ip); printf("</head>"); printf("<body>"); // printf("<p>%s</p>", buf); printf("<p>重新启动中 ... ... </p>"); printf("</body>"); printf("</html>"); } void reboot_arm(void) { fflush(stdout); system("sync"); system("sync"); system("reboot"); } int main(int argc, char *argv[]) { read_form(); analyse(); write_rclocal(); write_ini(); web_page(); reboot_arm(); return 0; }
common.js
function validate_mac(field,alerttxt) { with (field) { //mac地址正则表达式 var reg_name=/[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}:[A-F\d]{2}/; if(!reg_name.test(value)) { alert(alerttxt); return false; } else { return true; } } } function validate_ip(field,alerttxt) { with (field) { //ip地址正则表达式 var reg_name=/^(([01]?[\d]{1,2})|(2[0-4][\d])|(25[0-5]))(\.(([01]?[\d]{1,2})|(2[0-4][\d])|(25[0-5]))){3}$/; if(!reg_name.test(value)) { alert(alerttxt); return false; } else { return true; } } } function validate_number(field,alerttxt) { with (field) { //mac地址正则表达式 var reg_name=/^[0-9]*$/; if(!reg_name.test(value)) { alert(alerttxt); return false; } else { return true; } } } function validate_form(thisform) { with (thisform) { if (validate_mac(local_mac,"Not a valid mac address!")==false) { local_mac.focus(); return false } else if (validate_ip(local_ip,"Not a valid ip address!")==false) { local_ip.focus(); return false } else if (validate_ip(yealink_report_server,"Not a valid ip address!")==false) { yealink_report_server.focus(); return false } else if (validate_ip(server_ip,"Not a valid ip address!")==false) { server_ip.focus(); return false } else if (validate_number(number,"Not a valid number!")==false) { number.focus(); return false } else if (validate_number(password,"Not a valid password!")==false) { password.focus(); return false } } }
libini源码:保存图片,将图片后缀改为rar
相关文章推荐
- 嵌入式web服务器lighttpd的交叉编译及配置(for arm-linux)
- 在嵌入式Linux 系统中实现基于Web 的配置管理
- linux_Web服务器配置
- docker深入2-linux下的配置文件daemon.json使用示例
- 嵌入式linux项目开发(一)——web数据交互
- 嵌入式控制(0)----linux系统网络配置
- linux下elasticsearch 安装、配置及示例
- struts-config.xml , web.xml配置示例
- LINUX部署WEB项目(JDK安装和配置)
- LINUX部署WEB项目(TOMCAT安装和配置)
- linux apache web站点配置详解
- Linux配置web环境
- 嵌入式linux基本环境配置
- 嵌入式linux的tftp安装配置及tftp命令用法
- 从零开始构建支持TLS1.2的Web服务器Linux版(二) 配置Tomcat环境
- Linux下配置部署web环境(centos+tomcat)
- Linux 中web服务器的基本配置
- Linux下SVN部署/安全及权限配置,实现web同步更新
- linux下web服务器配置(五)
- Linux有关环境变量的配置示例