⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http.c

📁 嵌入式TCP/IP模块
💻 C
📖 第 1 页 / 共 4 页
字号:
#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>&nbsp;</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>&nbsp;</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>&nbsp;</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\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Confirm :  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"password\" name=\"T3\" size=\"12\" maxlength=\"20\" style=\"border:3 solid #0000ff\"></p>\r\n"
"  <p>&nbsp;</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 + -