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

📄 savenetwork.c

📁 webserver
💻 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 + -