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

📄 cgi.c

📁 这是一个在在Dynamic C环境下实现的设备web服务器的建立
💻 C
📖 第 1 页 / 共 2 页
字号:

		case 4:
			 CgiReturn(state,0);
			break;

		default:
			state->substate = 0;
			return 1;
		}
	}
	return 0;
}

/*** BeginHeader SetE1info1Cgi */
nodebug xmem int SetE1info1Cgi(HttpState* state);
/*** EndHeader */
nodebug xmem int SetE1info1Cgi(HttpState* state)
{
	int i;

	if(state->length)
    {
		/* buffer to write out */
		if(state->offset < state->length) {
			state->offset += sock_fastwrite(&state->s,
					state->buffer + (int)state->offset,
					(int)state->length - (int)state->offset);
		} else {
			state->offset = 0;
			state->length = 0;
		}
	}
   else
   {
		switch(state->substate)
		{
		case 0:
			CgiStep0(state);
			break;

		case 1:
			CgiStep1(state);
			break;

		case 2:
			/* init the data */
			for(i=0;i<5;++i)
			{
				FormData[i].value[0] = '\0';
			}

            i=0;

			//FormData[i++].name="SelApp";//i=0
			FormData[i++].name="SelChan";
			FormData[i++].name="g_Len";
			//FormData[i++].name="SelClk";
			FormData[i++].name="SelIp";
			FormData[i++].name="Ip_Tos";
			FormData[i++].name="Upband";

			state->p = state->buffer;
			state->substate++;
			break;

		case 3:

		 	if(ParseForm(state,5))
         	{
				/*if(!(strcmp(FormData[0].value,"Master")))
				{
					g_AddrInfo[UserIndx].TirdE1Para.AppMod=0;
				}
				else
				{
					g_AddrInfo[UserIndx].TirdE1Para.AppMod=1;
				}*/

				if(!(strcmp(FormData[0].value,"E1")))
				{
					g_AddrInfo[UserIndx].TirdE1Para.E1orT1=0;//E1Set( );
				}
				else
				{
					g_AddrInfo[UserIndx].TirdE1Para.E1orT1=1;//T1Set( );
				}

		        g_AddrInfo[UserIndx].TirdE1Para.EnLev=atoi(FormData[1].value);


		        /*if(!(strcmp(FormData[3].value,"Adaptive")))
				{
					g_AddrInfo[UserIndx].TirdE1Para.ClkMod=1;
				}
				else
				{
					g_AddrInfo[UserIndx].TirdE1Para.ClkMod=0;
				}*/

				if(!(strcmp(FormData[2].value,"Yes")))
				{
					g_AddrInfo[UserIndx].TirdE1Para.EnIp=1;
				}
				else
				{
					g_AddrInfo[UserIndx].TirdE1Para.EnIp=0;
				}

		        g_AddrInfo[UserIndx].TirdE1Para.Tos=StrtoTos(3);
		        g_AddrInfo[UserIndx].TirdE1Para.Upwidth=atoi(FormData[4].value);

		        //ConvertDisp();

		         g_CgiProcess=0x01;

				CgiSuccess(state);
			}
			else
			{
				//CgiErr(state);
				CgiReturn(state,8);
			}
			break;

		case 4:
			CgiReturn(state,2);
			break;

		default:
			state->substate = 0;
			return 1;
		}
	}
	return 0;
}

/*** BeginHeader SetE1info2Cgi */
nodebug xmem int SetE1info2Cgi(HttpState* state);
/*** EndHeader */
nodebug xmem int SetE1info2Cgi(HttpState* state)
{
	int i;

	unsigned long IpAddr[4];
	unsigned char PortSel[4];

	if(state->length)
   {
		/* buffer to write out */
		if(state->offset < state->length) {
			state->offset += sock_fastwrite(&state->s,
					state->buffer + (int)state->offset,
					(int)state->length - (int)state->offset);
		} else {
			state->offset = 0;
			state->length = 0;
		}
	}
   else
   {
		switch(state->substate)
		{
		case 0:
			CgiStep0(state);
			break;

		case 1:
			CgiStep1(state);
			break;

		case 2:
			/* init the data */
			for(i=0;i<24;++i)
			{
				FormData[i].value[0] = '\0';
			}

            i=0;

			FormData[i++].name="EnPort0";//i=0
			FormData[i++].name="EnPort1";
			FormData[i++].name="EnPort2";
			FormData[i++].name="EnPort3";

			FormData[i++].name="SelMap0";//i=4
			FormData[i++].name="SelMap1";
			FormData[i++].name="SelMap2";
			FormData[i++].name="SelMap3";

			FormData[i++].name="A_IP_0";//i=8
			FormData[i++].name="A_IP_1";
			FormData[i++].name="A_IP_2";
			FormData[i++].name="A_IP_3";

			FormData[i++].name="B_IP_0";//i=12
			FormData[i++].name="B_IP_1";
			FormData[i++].name="B_IP_2";
			FormData[i++].name="B_IP_3";

			FormData[i++].name="C_IP_0";//i=16
			FormData[i++].name="C_IP_1";
			FormData[i++].name="C_IP_2";
			FormData[i++].name="C_IP_3";

			FormData[i++].name="D_IP_0";//i=20
			FormData[i++].name="D_IP_1";
			FormData[i++].name="D_IP_2";
			FormData[i++].name="D_IP_3";



			state->p = state->buffer;
			state->substate++;
			break;

		case 3:

		 	if(ParseForm(state,24))
         	{
				for(i=0;i<MAX_CHANNEL;++i)
				{
					if(!(strcmp(FormData[i].value,"on")))
					{
						g_AddrInfo[UserIndx].FirE1Para[i].Enable=1;
					}
					else
					{
						g_AddrInfo[UserIndx].FirE1Para[i].Enable=0;
					}
				}

				for(i=0;i<MAX_CHANNEL;++i)
				{
					//g_AddrInfo[UserIndx].FirE1Para[i].Port=(atoi(FormData[i+4].value)-1);
					IpAddr[i]=0;
					PortSel[i]=(atoi(FormData[i+4].value)-1);
				}

         	   for(i=0;i<MAX_CHANNEL;++i)
         	   {
	         	   	IpAddr[0]+=atoi(FormData[i+8].value);
	         	   	IpAddr[1]+=atoi(FormData[i+12].value);
	         	   	IpAddr[2]+=atoi(FormData[i+16].value);
	         	   	IpAddr[3]+=atoi(FormData[i+20].value);

	         	   if(i<3)
	         	   {
						IpAddr[0]<<=8;
						IpAddr[1]<<=8;
						IpAddr[2]<<=8;
						IpAddr[3]<<=8;
				   }

         		}
                           
              
					for(i=0;i<MAX_CHANNEL;++i)
					{
					  g_AddrInfo[UserIndx].FirE1Para[i].DstIp=IpAddr[i];
					  g_AddrInfo[UserIndx].FirE1Para[i].Port=PortSel[i];
					}
	
	                g_CgiProcess=0x02;
	
					CgiSuccess(state);
							
			}
			else
			{
				//CgiErr(state);
				CgiReturn(state,8);
			}
			break;

		case 4:
			CgiReturn(state,2);
			break;

		default:
			state->substate = 0;
			return 1;
		}
	}
	return 0;
}

/*** BeginHeader SetE1info3Cgi */
nodebug xmem int SetE1info3Cgi(HttpState* state);
/*** EndHeader */
nodebug xmem int SetE1info3Cgi(HttpState* state)
{
	int i;

	if(state->length)
   {
		/* buffer to write out */
		if(state->offset < state->length) {
			state->offset += sock_fastwrite(&state->s,
					state->buffer + (int)state->offset,
					(int)state->length - (int)state->offset);
		} else {
			state->offset = 0;
			state->length = 0;
		}
	}
   else
   {
		switch(state->substate)
		{
		case 0:
			CgiStep0(state);
			break;

		case 1:
			CgiStep1(state);
			break;

		case 2:
			/* init the data */
			for(i=0;i<16;++i)
			{
				FormData[i].value[0] = '\0';
			}

            i=0;

			FormData[i++].name="A_EnVl";
			FormData[i++].name="B_EnVl";
			FormData[i++].name="C_EnVl";
			FormData[i++].name="D_EnVl";

			FormData[i++].name="A_CacLn";
			FormData[i++].name="B_CacLn";
			FormData[i++].name="C_CacLn";
			FormData[i++].name="D_CacLn";

			FormData[i++].name="A_VId";
            FormData[i++].name="B_VId";
            FormData[i++].name="C_VId";
            FormData[i++].name="D_VId";
            
            FormData[i++].name="A_Clk";
            FormData[i++].name="B_Clk";
            FormData[i++].name="C_Clk";
            FormData[i++].name="D_Clk";
            
           

			state->p = state->buffer;
			state->substate++;
			break;

		case 3:

		 	if(ParseForm(state,16))
         	{
				for(i=0;i<MAX_CHANNEL;++i)
				{
					if(!(strcmp(FormData[i].value,"on")))
					{
						g_AddrInfo[UserIndx].SecdE1Para[i].EnVlan=1;
					}
					else
					{
						g_AddrInfo[UserIndx].SecdE1Para[i].EnVlan=0;
					}

					g_AddrInfo[UserIndx].SecdE1Para[i].CacheLen = atoi(FormData[4+i].value);

					g_AddrInfo[UserIndx].SecdE1Para[i].VlanId = StrtoHex(8+i);
					
					if(!(strcmp(FormData[12+i].value,"Adaptive")))
					{
						g_AddrInfo[UserIndx].SecdE1Para[i].ClkMod=1;
					}
					else
					{
						g_AddrInfo[UserIndx].SecdE1Para[i].ClkMod=0;
					}

				}

	          //ConvertDisp();

	         // sprintf(state->buffer, "<p>iii set Success!\r\n\
    	///<p>LB0: %s<p>\r\n<p>LB1: %s<p>\r\n<p>LB2: %s<p>\r\n<p>LB3: %s<p>\r\n\
        //<p>RB0: %s<p>\r\n<p>RB1: %s<p>\r\n<p>RB2: %s<p>\r\n<p>RB3: %s<p>\r\n",FormData[4].value,FormData[5].value,FormData[6].value,FormData[7].value,FormData[8].value,FormData[9].value,FormData[10].value,FormData[11].value);
//state->length = strlen(state->buffer);
	//state->substate++;

	    	  CgiSuccess(state);

			}
			else
			{
				//CgiErr(state);
				CgiReturn(state,8);
			}
			break;

		case 4:
			CgiReturn(state,2);
			break;

		default:
			state->substate = 0;
			return 1;
		}
	}
	return 0;
}

/*** BeginHeader ChPwdCgi */
nodebug xmem int ChPwdCgi(HttpState* state);
/*** EndHeader */
nodebug xmem int ChPwdCgi(HttpState* state)
{
   int i;

	if(state->length)
    {
		/* buffer to write out */
		if(state->offset < state->length) {
			state->offset += sock_fastwrite(&state->s,
					state->buffer + (int)state->offset,
					(int)state->length - (int)state->offset);
		} else {
			state->offset = 0;
			state->length = 0;
		}
	}
   else
   {
		switch(state->substate)
		{
		case 0:
			CgiStep0(state);
			break;

		case 1:
			CgiStep1(state);
			break;

		case 2:
			/* init the data */
			for(i=0;i<3;++i)
			{
				FormData[i].value[0] = '\0';
			}

            i=0;

			FormData[i++].name="Curpwd";//i=0
			FormData[i++].name="Newpwd";
			FormData[i++].name="ConNpwd";


			state->p = state->buffer;
			state->substate++;
			break;

		case 3:

		 	if(ParseForm(state,3))
         	{
         		if((!(strcmp(FormData[0].value,User[1].Password)))||(!(strcmp(FormData[0].value,"1234567890"))))
         		{
	         		if(!(strcmp(FormData[1].value,FormData[2].value)))
	         		{
	         			strcpy(User[1].Password,FormData[1].value);
	         			//sprintf(state->buffer, "<p>New password will be applied after you reboot system!\r\n");
	         		    Getstring(PWDChange, 0, state->buffer, 100);
	         		}
	         		else
	         		{
                        Getstring(PWDChange, 1, state->buffer, 100);
                        //sprintf(state->buffer, "<p>New password and Confirm new password is not the same!\r\n");
	         		}
         		}
         		else
         		{
         			  Getstring(PWDChange, 2, state->buffer, 100);
         			  //sprintf(state->buffer, "<p>Current password input incorrect!\r\n");
         		}

				state->length = strlen(state->buffer);
				state->substate++;
			}
			else
			{
				//CgiErr(state);
				CgiReturn(state,8);
			}
			break;

		case 4:
			CgiReturn(state,3);
			break;

		default:
			state->substate = 0;
			return 1;
		}
	}
	return 0;
}
/*** BeginHeader RebootCgi */
nodebug xmem int RebootCgi(HttpState* state);
/*** EndHeader */
nodebug xmem int RebootCgi(HttpState* state)
{
	if(state->length)
	{
		/* buffer to write out */
		if(state->offset < state->length)
		{
		state->offset += sock_fastwrite(&state->s,
			state->buffer + (int)state->offset,
			(int)state->length - (int)state->offset);
		}
		else
		{
		state->offset = 0;
		state->length = 0;
		}
	}
	else
	{
		switch(state->substate)
		{
			case 0:
			CgiStep0(state);
			break;

		    case 1:
			 CgiStep1(state);
			 CfgFpga();
             StoreData( );
			break;
			case 2:
			 CgiReturn(state,3);
			 RestartSystem();
			break;

			default:
			state->substate = 0;
			return 1;
		}
	}

	return 0;
}

/*** BeginHeader */
#endif
/*** EndHeader */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -