📄 http.c
字号:
#include "config.h"
#include "../include/cfg_net.h"
uint8 *HexTemp;
struct NetParameter mynetp;
void HttpProcess(uint8 *tempdata);
/*------------------------------------------------------------------*/
const char httpweb[] ={
"HTTP/1.0 200 OK\r\n"
"Date: Friday, 2 March 2007 01:24:17 GMT\r\n"
"Server: microHttp/1.0 China Vision\r\n"
"Accept-Ranges: bytes\r\n"
//"Content-Length: 116\r\n"//"Connection: Keep-Alive\r\n"
"Connection: Keep-Close\r\n"
"Content-Type: text/html\r\n"
"\r\n"
};
/*------------------------------------------------------------------*/
//登录界面,输入密码代码
const char web1[]={
"<html>\r\n"
"<head>\r\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">\r\n"
"<meta http-equiv=\"Content-Language\" content=\"en-us\">\r\n"
"<title>Config Password</title>\r\n"
"<script language=\"JavaScript\">\r\n"
"<!--\r\n"
"var msg=1;\r\n"
"if(msg==2){\r\n"
" alert(\"Incorrect password,please intput again!\");\r\n"
" }\r\n"
"//-->\r\n"
"</script>\r\n"
"</head>\r\n"
"<body>\r\n"
"<form method=\"POST\" action=\"i.cgi\">\r\n"
" <p align=\"center\">Please input password: <input type=\"password\" name=\"T1\" size=\"12\" maxlength=\"20\" style=\"border:3 solid #0000ff\"></p>\r\n"
" <p align=\"center\">--------------<input type=\"submit\" value=\" Login \" name=\"B1\">---------------</p>\r\n"
"</form>\r\n"
"</body>\r\n"
"</html>\r\n"
};
/*******************************************************************/
//提示信息
/*const char message[]={
"<html><head>\r\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">\r\n"
"<meta http-equiv=\"Content-Language\" content=\"en-us\">\r\n"
"<title>Welcome</title>\r\n"
"</head>\r\n"
"<body leftmargin=\"100\">\r\n"
};*/
/*------------------------------------------------------------------*/
//密码更改成功
const char webpwsu[] ={
"<h1 align=\"center\"><font color=\"#008080\">Changed succeeded!</font></h1></body></html>\r\n"
};
/*------------------------------------------------------------------*/
//密码错
const char webpwin[] ={
"<h1 align=\"center\"><font color=\"#008080\">Incorrect,Please input again!</font></h1></body></html>\r\n"
};
/*------------------------------------------------------------------*/
//请打开写保护
const char webWriteP[] ={
"<h1 align=\"center\"><font color=\"#008080\">Write-protect,Please shut J2 !</font></h1></body></html>\r\n"
};
/*--------------------------------------------------------------------------*/
//写MAC成功
const char ConfigSu[] ={
"<h1 align=\"center\"><font color=\"#008080\">Config succeeded!</font></h1></body></html>\r\n"
};
/*--------------------------------------------------------------------------*/
//写的密码不对
const char MACIn[]={
"<h1 align=\"center\"><font color=\"#008080\">The MAC accessing PW incorrect!</font></h1></body></html>\r\n"
};
/*------------------------------------------------------------------*/
//改变MAC界面
const char webmac[] ={
"<html>\r\n"
"<head>\r\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">\r\n"
"<meta http-equiv=\"Content-Language\" content=\"en-us\">\r\n"
"<title>Change MAC Address </title>\r\n"
"<script language=\"JavaScript\">\r\n"
"<!--\r\n"
"function ReturnButton(){location.href=\"i.cgi\";}\r\n"
"function InputNumber(T1,T2,T3,T4,T5,T6)\r\n"
"{\r\n"
" var re1=/[^0-ff]/;\r\n"
" if (re1.test(T1.value)||re1.test(T2.value)||re1.test(T3.value)||re1.test(T4.value)||re1.test(T5.value)||\r\n"
"re1.test(T6.value))\r\n"
" {\r\n"
" alert(\"Please input in HEX format!\");\r\n"
" }\r\n"
"}\r\n"
"//-->\r\n"
"</script>\r\n"
"</head>\r\n"
"<body>\r\n"
"<form method=\"POST\" action=\"m.cgi\">\r\n"
" <p align=\"center\">Please input MAC Address :\r\n"
" <INPUT name=\"T1\" size=\"1\" maxlength=\"2\" > --\r\n"
" <INPUT name=\"T2\" size=\"1\" maxlength=\"2\" > --\r\n"
" <INPUT name=\"T3\" size=\"1\" maxlength=\"2\" > --\r\n"
" <INPUT name=\"T4\" size=\"1\" maxlength=\"2\" > --\r\n"
" <INPUT name=\"T5\" size=\"1\" maxlength=\"2\" > --\r\n"
" <INPUT name=\"T6\" size=\"1\" maxlength=\"2\" > </p>\r\n"
" <p align=\"center\">Please input Password : <input type=\"password\" name=\"T7\" size=\"12\" maxlength=\"20\"\r\n"
"style=\"border:3 solid #0000ff\"></p>\r\n"
" <p align=\"center\">-------<input onclick=InputNumber(T1,T2,T3,T4,T5,T6); type=\"submit\" value=\" Change \"\r\n"
"name=\"B1\">--------\r\n"
"<input type=\"button\" value=\"Return\" name=\"B2\" Onclick=\"ReturnButton()\">--------</p>\r\n"
"</body>\r\n"
"</html>\r\n"
};
/*------------------------------------------------------------------*/
//第一设置界面 主界面
const char webM[] ={
"<html><head>\r\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">\r\n"
"<meta http-equiv=\"Content-Language\" content=\"en-us\">\r\n"
"<title>MAIN WEB</title></head>\r\n"
"<body leftmargin=\"100\">\r\n"
"<h1 align=\"center\"><font color=\"#008080\">CVT100 CONTROL CENTER</font></h1>\r\n"
"<p> </p>\r\n"
"<form method=\"POST\" action=\"1.cgi\">\r\n"
" <p align=\"center\"><input type=\"submit\" value=\"Change Password\" name=\"B1\"></p>\r\n"
"</form>\r\n"
"<form method=\"POST\" action=\"2.cgi\">\r\n"
" <p align=\"center\"><input type=\"submit\" value=\" Config Module \" name=\"B1\"></p>\r\n"
"</form>\r\n"
"<form method=\"POST\" action=\"3.cgi\">\r\n"
" <p align=\"center\"><input type=\"submit\" value=\" SUBMIT \" name=\"B1\"></p>\r\n"
"</form>\r\n"
"<form method=\"POST\" action=\"4.cgi\">\r\n"
" <p align=\"center\"><input type=\"submit\" value=\" MAC Address \" name=\"B1\"></p>\r\n"
"</form>\r\n"
"<p> </p>\r\n"
"</body></html>\r\n"
};
/*------------------------------------------------------------------*/
//改变密码界面
const char webPW[]={
"<html><head>\r\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">\r\n"
"<meta http-equiv=\"Content-Language\" content=\"en-us\">\r\n"
"<title>Change Password</title>\r\n"
"<script language=\"JavaScript\">\r\n"
"<!--\r\n"
"function ReturnButton(){location.href=\"i.cgi\";}\r\n"
"//-->\r\n"
"</script></head>\r\n"
"<body leftmargin=\"100\">\r\n"
"<h1 align=\"center\"><font color=\"#008080\">Change Module Password</font></h1>\r\n"
"<p> </p>\r\n"
"<form method=\"POST\" action=\"p.cgi\">\r\n"
" <p align=\"center\">New password : <input type=\"password\" name=\"T2\" size=\"12\" maxlength=\"20\" style=\"border:3 solid #0000ff\"></p>\r\n"
" <p align=\"center\"> Confirm : <input type=\"password\" name=\"T3\" size=\"12\" maxlength=\"20\" style=\"border:3 solid #0000ff\"></p>\r\n"
" <p> </p>\r\n"
" <p align=\"center\">-----<input type=\"submit\" value=\"Modify\" name=\"B1\">--------\r\n"
" <input type=\"button\" value=\"Return\" name=\"B2\" Onclick=\"ReturnButton()\">--------</p>\r\n"
"</form></body></html>\r\n"
};
/*------------------------------------------------------------------*/
//改变摸块参数界面
const char webConIp[]={
"<HTML><HEAD><TITLE>TCP/IP Module Config </TITLE>\r\n"
"<META http-equiv=Content-Type content=\"text/html; charset=windows-1252\">\r\n"
"<META http-equiv=Content-Language content=en-us>\r\n"
"<SCRIPT language=JavaScript>\r\n"
"<!--\r\n"
"function ReturnButton(){location.href=\"i.cgi\";}\r\n"
"function RefreshButton(){location.reload(true);}\r\n"
"function checkIP(ctext) {\r\n"
" var re =/[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+/;\r\n"
" var re1=/[^0-9.]/;\r\n"
" if (re1.test(ctext.value)){\r\n"
" alert(\"You input data error!\");\r\n"
" ctext.focus();\r\n"
" }\r\n"
" else{\r\n"
" if(!re.test(ctext.value)){\r\n"
" alert(\"You input data error!\");\r\n"
" ctext.focus();\r\n"
" }\r\n"
" }\r\n"
"}\r\n"
"function checkNum(ctext,maxvalue) {\r\n"
" var re1=/[^0-9]/;\r\n"
" if (re1.test(ctext.value)){\r\n"
" alert(\"You input data error!\");\r\n"
" ctext.focus();\r\n"
" return;\r\n"
" }\r\n"
" if(ctext.value>maxvalue){\r\n"
" alert(\"You input data error!\");\r\n"
" ctext.focus();\r\n"
" return;\r\n"
" }\r\n"
"}\r\n"
"//-->\r\n"
"</SCRIPT>\r\n"
"<META content=\"Microsoft FrontPage 4.0\" name=GENERATOR></HEAD>\r\n"
"<BODY leftMargin=100>\r\n"
"<H2><FONT color=#008080>CVT100 Parameter </FONT></H2>\r\n"
"<FORM action=c.cgi method=post>\r\n"
"<TABLE height=620 width=700 border=0>\r\n"
" <TBODY>\r\n"
" <TR>\r\n"
" <TD align=left width=\"100%\" height=549><FONT color=#800080>\r\n"
" <B>NET CONFIG:</B></FONT>\r\n"
};
const char NETp[]={
" <p>MAC: </p>\r\n"
" <p><INPUT type=checkbox value=ON name=C1>Automatic Get IP Address (DHCP)</p>\r\n"
" <p>Module IP Address:<INPUT onblur=checkIP(T1) value= name=T1 size=15></p>\r\n"
" <p>SubNet Mask:<INPUT onblur=checkIP(T2) value= name=T2 size=15></p>\r\n"
" <p>Gateway: <INPUT onblur=checkIP(T3) value= name=T3 size=15></p> \r\n"
" <p>Module Port:<INPUT onblur=checkNum(T5,65535) value= name=T5 size=5></p>\r\n"
" <p>Work Mode: <SELECT size=1 name=D1> <OPTION >TCP Client</OPTION> <OPTION >TCP Server</OPTION> <OPTION >UDP</OPTION> <OPTION selected> </OPTION> </SELECT></P>\r\n"
" <p>Remote IP Address: <INPUT onblur=checkIP(T6) value= name=T6 size=15></p>\r\n"
" <p>Remote Port:<INPUT onblur=checkNum(T7,65535) value= name=T7 size=5></p>\r\n"
};
const char COMp[]={
" <FONT color=#800080>\r\n"
" <B> COM CONFIG:</B></FONT>\r\n"
" <p>Baudrate:<SELECT size=1 name=D2> <OPTION >1200</OPTION> <OPTION >2400</OPTION> <OPTION >4800</OPTION> <OPTION >9600</OPTION> <OPTION >19200</OPTION> <OPTION >38400</OPTION> <OPTION >57600</OPTION> <OPTION >115200</OPTION> <OPTION selected> </OPTION> </SELECT> </p> \r\n"
" <p> Databit:<SELECT size=1 name=D3> <OPTION>7</OPTION> <OPTION>8</OPTION><OPTION selected> </OPTION> </SELECT></p>\r\n"
" <p> Parity: <SELECT size=1 name=D4> <OPTION >Odd</OPTION> <OPTION >Even</OPTION><OPTION >None</OPTION><OPTION selected> </OPTION></SELECT></p> \r\n"
" <p> Stopbit:<SELECT size=1 name=D5> <OPTION>1.0</OPTION> <OPTION>1.5</OPTION><OPTION selected> </OPTION></SELECT> </p>\r\n"
" </TD>\r\n"
" </TR>\r\n"
" </TBODY></TABLE>\r\n"
"<P>-----<INPUT type=submit value=Config name=B1>----<input type=\"button\" value=\"Return\" name=\"B2\" Onclick=\"ReturnButton()\">----</p> \r\n"
};
/*======================================================================================
接受网卡数据,不判断处理
=======================================================================================*/
uint8 ReceiveCheck (void)
{
uint16 i;
for(i=0;i<1000;i++)
{
WdtFeed();
if(Rec_Packet()!=0)
if(Rec_Ethernet_Packed(&REC_BUFF[0].bytes[4],0)==2)
if(IP_PROCESS(&REC_BUFF[0].bytes[18],0)=='T')
{
Process_Tcp1((Rec_Ptr *)&RECQ[0]);
if(LastData.State==FALSE)
return (TURE);
}
Delayms(1);
}
return (FALSE);
}
//*******************************************************//
void HttpProcess(uint8 *tempdata)
{
if(tempdata[0]=='G') //GET
{
send( 0,(uint8 *)httpweb ,sizeof(httpweb), 0 );
if(ReceiveCheck()==TURE)
send( 0,(uint8 *)web1,sizeof(web1), 0 );
ReceiveCheck();
}
else if(tempdata[0]=='P') //POST
{
switch(tempdata[6])
{
case 'i':
SendMainMenu(tempdata);
break;
case '1':
ChangePWMenu();
break;
case '2':
SendConfigMenu();
break;
case '3':
ApplyConMenu();
break;
case '4':
ChangeMacMenu();
break;
case 'c':
SetConfigMenu(tempdata);
break;
case 'm':
ChangedMacAddr(tempdata);
break;
case 'p':
SetPassWord(tempdata);
break;
default:
break;
}
}
close(0);
return;
}
/*===============================================================
改变密码 界面
===============================================================*/
/****************************************************************/
void SetPassWord (uint8 *p)
{
uint16 j;
uint8 o,n,c,a;
uint8 Temp[1400];
uint8 Oldpw[32];
uint8 Newpw[32];
uint8 Confirm[32];
for(j=0;j<1500;j++)
{
if(*p=='T'&&*(p+1)=='1'&&*(p+2)=='=')
{
p+=3;a=0;
while(*p!=0x26)
{
Oldpw[a]=*p;
p++;
a++;
}
Oldpw[a]=0x0d;
o=a;
}
if(*p=='T'&&*(p+1)=='2'&&*(p+2)=='=')
{
p+=3;a=0;
while(*p!=0x26)
{
Newpw[a]=*p;
p++;
a++;
}
Newpw[a]=0x0d;
n=a;
}
if(*p=='T'&&*(p+1)=='3'&&*(p+2)=='=')
{
p+=3;a=0;
while(*p!=0x26)
{
Confirm[a]=*p;
p++;
a++;
}
Confirm[a]=0x0d; //密码结束标记
c=a;
break;
}
p++;
}
if(n!=c) //新密码位数不一样
{
send( 0,(uint8 *)httpweb ,sizeof(httpweb), 0 );
if(ReceiveCheck()==FALSE)
return;
send( 0,(uint8 *)webpwin ,sizeof(webpwin), 0 );
ReceiveCheck();
return;
}
if(n==c) //密码位数一样
{
for(a=0;a<n;a++)
{
if(Newpw[a]!=Confirm[a])//新密码不一样
{
send( 0,(uint8 *)httpweb ,sizeof(httpweb), 0 );
if(ReceiveCheck()==FALSE)
return;
send( 0,(uint8 *)webpwin ,sizeof(webpwin), 0 );
ReceiveCheck();
return;
}
}
if(Testwritep()==TURE) //检测写保护
{
send( 0,(uint8 *)httpweb ,sizeof(httpweb), 0 );
if(ReceiveCheck()==FALSE)
return;
send( 0,(uint8 *)webWriteP ,sizeof(webWriteP), 0 );
ReceiveCheck(); //请打开写保护
return;
}
else //没写保护,可直接写如密码
{
WriteEEprom(Newpw,PASSWORD,8); //更改密码
WriteEEprom(&Newpw[8],PASSWORD+8,8); //更改密码
WriteEEprom(&Newpw[16],PASSWORD+16,5); //更改密码
ReadEEprom(Temp,PASSWORD,16);
ReadEEprom(&Temp[16],PASSWORD+16,5);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -