📄 savenetwork.c
字号:
/****************************************************************************by grandchips #gcc -c SaveNetwork.c -o SaveNetwork.cgi ****************************************************************************/#include<sys/types.h>#include<stdio.h>#include <string.h>#include <unistd.h>#include <sys/stat.h>#include <fcntl.h>#include<stdlib.h>#define PATH "/config/www/" main(){ char mac[20];char ip[20];char mask[20];char gateway[20];char buf[160];char dns1[20];char dns2[20];char ntpserver[150];strcpy(ip,"192.168.1.56");strcpy(mask,"255.255.255.0");strcpy(gateway,"192.168.1.1");strcpy(dns1,"192.168.1.1");strcpy(dns2,"211.98.4.1");strcpy(ntpserver,"61.129.42.44");/********************read the config file*********************************************/ FILE *netfpr; char filename_net[100]; strcpy(filename_net,PATH); strcat(filename_net,"network.conf"); //read MAC info if ( (netfpr=fopen(filename_net,"r"))==NULL ) {printf("can not open network.conf to read!<br>\n"); } while(fscanf(netfpr,"MACADDR=%s\n",mac)!=EOF) { fscanf(netfpr,"%*[^\n]%*c"); if (strlen(mac)!=0) break; } fclose(netfpr); //read IP info if ( (netfpr=fopen(filename_net,"r"))==NULL ) {printf("can not open network.conf to read!<br>\n"); } while(fscanf(netfpr,"IPADDR=%s\n",ip)!=EOF) { fscanf(netfpr,"%*[^\n]%*c"); if (strlen(ip)!=0) break; } fclose(netfpr); //read mask info if ( (netfpr=fopen(filename_net,"r"))==NULL ) {printf("can not open network.conf to read!<br>\n"); } while(fscanf(netfpr,"NETMASK=%s\n",mask)!=EOF) {fscanf(netfpr,"%*[^\n]%*c"); if (strlen(mask)!=0) break; } fclose(netfpr); //read gateway info if ( (netfpr=fopen(filename_net,"r"))==NULL ) {printf("can not open network.conf to read!<br>\n"); } while(fscanf(netfpr,"GATEWAY=%s\n",gateway)!=EOF) {fscanf(netfpr,"%*[^\n]%*c"); if (strlen(gateway)!=0) break; } fclose(netfpr); //read dns1 info if ( (netfpr=fopen(filename_net,"r"))==NULL ) {printf("can not open network.conf to read!<br>\n"); } while(fscanf(netfpr,"DNS1=%s\n",dns1)!=EOF) {fscanf(netfpr,"%*[^\n]%*c"); if (strlen(dns1)!=0) break; } fclose(netfpr); //read dns2 info if ( (netfpr=fopen(filename_net,"r"))==NULL ) {printf("can not open network.conf to read!<br>\n"); } while(fscanf(netfpr,"DNS2=%s\n",dns2)!=EOF) {fscanf(netfpr,"%*[^\n]%*c"); if (strlen(dns2)!=0) break; } //read ntpserver info if ( (netfpr=fopen(filename_net,"r"))==NULL ) {printf("can not open network.conf to read!<br>\n"); } while(fscanf(netfpr,"NTPSERVER=%s\n",ntpserver)!=EOF) {fscanf(netfpr,"%*[^\n]%*c"); if (strlen(ntpserver)!=0) break; } fclose(netfpr); //***/********************read the config file*********************************************/ //state the translate variancechar test[160]; test[160]=" ";//printf test int i;int n;char c;char netconfig;int var_num=0;if (getenv("CONTENT_LENGTH")) n=atoi(getenv("CONTENT_LENGTH"));for (i=0; i<12;i++){ if (i==10) netconfig=getchar();else c=getchar();}for (i=12; i<n;i++){ c=getchar();if (c=='&') { test[i-12]=' '; var_num++; if (var_num==6) break;} else if (c=='=') test[i-12]=' ';else if (c=='%') { test[i-12]=':'; c=getchar();c=getchar(); }else test[i-12]=c; }//end for if (netconfig=='0') //udhcpc { printf("Contenttype:text/html\n\n");printf("<html>\n");printf("<head><title> Setting </title></head>\n");printf("<br><br><br><br>\n");printf("Network have setted, please reboot the system..........<br>\n");printf("<body><br>\n");printf("</body><br>\n");printf("</html>\n");fflush(stdout); //write configure file network.conf FILE *netfpw; if ( !(netfpw=fopen(filename_net,"w")) ) {printf("can not open network.conf to write!<br>\n"); } fprintf(netfpw,"MACADDR=%s\n",mac); fprintf(netfpw,"IPADDR=%s\n",ip); fprintf(netfpw,"NETMASK=%s\n",mask); fprintf(netfpw,"GATEWAY=%s\n",gateway); fprintf(netfpw,"DNS1=%s\n",dns1); fprintf(netfpw,"DNS2=%s\n",dns2); fprintf(netfpw,"NTPSERVER=%s\n",ntpserver); fprintf(netfpw,"DHCPC=1\n"); fprintf(netfpw,"DHCPD=0\n"); fclose(netfpw); } //udhcpc else if (netconfig=='1')//static {printf("Contenttype:text/html\n\n");printf("<html>\n");printf("<head><title> Set Network</title></head>\n");printf("<body><br><br>\n");printf("network configure have saved, please reboot the system.....<br>\n");//printf("<meta http-equiv=\"Refresh\" content=\"5;url=http://");//"/cgi-bin/NetworkCfg.cgi\">");printf("</body><br>\n");printf("</html>\n");fflush(stdout);//printf("test=%s\n",test); //get the custom ip, gateway, dns info sscanf(test,"%s%s%s%s%s%s%s%s%s%s%s%s",buf,mac,buf+2,ip,buf+3,mask,buf+4,gateway,buf+5,dns1,buf+6,dns2,buf); //write dns configure file /etc/resolv.conf ->PATH + resolv.conf int dnsfd; char filename_dns[100]; strcpy(filename_dns,PATH); strcat(filename_dns,"resolv.conf"); if ( (dnsfd=open(filename_dns,O_WRONLY|O_CREAT|O_TRUNC,0600))<0) {printf("can not open resolv.conf to write!<br>\n"); } flock(dnsfd,LOCK_EX); char dns[50]; strcpy(dns,"nameserver "); strcat(dns,dns1); //printf("%s......<br>\n",dns); strcat(dns,"\n"); write(dnsfd,dns,strlen(dns)); strcpy(dns,"nameserver "); strcat(dns,dns2); //printf("%s......<br>\n",dns); strcat(dns,"\n"); write(dnsfd,dns,strlen(dns)); flock(dnsfd,LOCK_UN); close(dnsfd); printf("mac=%s<br>\n",mac); printf("ip=%s<br>\n",ip); printf("mask=%s<br>\n",mask); printf("dns1=%s<br>\n",dns1); printf("dns2=%s<br>\n",dns2);//printf("Contenttype:text/html\n\n");printf("<html>\n");printf("<head><title> Set Network</title></head>\n");printf("<body><br>\n");printf("ok...<br>\n");//printf("<meta http-equiv=\"Refresh\" content=\"5;url=NetworkCfg.cgi\">");printf("</body><br>\n");printf("</html>\n");fflush(stdout); FILE *netfpw; if ( !(netfpw=fopen(filename_net,"w")) ) {printf("can not open network.conf to write!<br>\n"); } //fprintf(netfp,"#!/bin/sh\n"); fprintf(netfpw,"MACADDR=%s\n",mac); fprintf(netfpw,"IPADDR=%s\n",ip); fprintf(netfpw,"NETMASK=%s\n",mask); fprintf(netfpw,"GATEWAY=%s\n",gateway); fprintf(netfpw,"DNS1=%s\n",dns1); fprintf(netfpw,"DNS2=%s\n",dns2); fprintf(netfpw,"NTPSERVER=%s\n",ntpserver); fprintf(netfpw,"DHCPC=0\n"); fprintf(netfpw,"DHCPD=0\n"); fclose(netfpw); }//staticelse {//go to the network page printf("Contenttype:text/html\n\n");printf("<html>\n");printf("<head><title> Save</title></head>\n");printf("<body><br>\n");printf("<meta http-equiv=\"Refresh\" content=\"5;url=NetworkCfg.cgi\">");printf("please select a option.............<br>\n");printf("</body><br>\n");printf("</html>\n");fflush(stdout);}//else }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -