您的位置:首页 > 运维架构 > Linux

嵌入式Linux web配置示例

2013-06-03 15:08 239 查看
嵌入式web配置示例

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: