亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 一個相當小的WEB服務器
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/wait.h>#include <signal.h>#include <stdio.h>#include <libgen.h>#include <fcntl.h>#include <ctype.h>#include <time.h>*/#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/wait.h>#include <signal.h>#include <stdio.h>#include <libgen.h>#include <fcntl.h>#include <ctype.h>#include <time.h>//#include <pthread.h>struct newthread{  char ip[16];  int  sfd;};char serverpath[150];int  serverport=8888;char rheader[2048];char wheader[2048];char password[20]="password";int  contentsize=0;int  needauth=0;char defaultcgiext[10]="cgi";//默認程序擴展名為cgichar defaultdoc[100]="index.html";//默認首頁char returndata[120];char isauth=0;char cgiconffile[254]="./cgi.conf";//配置文件char request[2048];char requestcmd[2048]="";char requestparam[2048]="";/*******************************Read & write Option function******************************/struct rwoption {  char name[512];  char value[512];  struct rwoption *prev;  struct rwoption *next;};void delblank(char *lstr)//刪除字符串尾空白字符{  int i;  char tmpstr[512];  for(i=strlen(lstr)-1;i>=0;i--)    if(*(lstr+i)==' ')      *(lstr+i)='\0';    else      break;  for(i=0;i<strlen(lstr);i++)    if(*(lstr+i)!=' ')      break;  memset(tmpstr,0,512);  strcpy(tmpstr,(char *)(lstr+i));  memset(lstr,0,strlen(lstr));  strcpy(lstr,tmpstr);}int readoption(FILE *fp,char *paraname,char *value)//從參數文件讀出參數{  char o1[512],*o2;  char s1[512],s2[512];  fseek(fp,0L,SEEK_SET);  while(!feof(fp))  {    fscanf(fp,"%[^\n]\n",o1);//讀一行//    printf("%s\n",o1);    o2=strstr(o1,"=")+1;    memset(s1,0,512);    memset(s2,0,512);    strncpy(s1,o1,o2-o1-1);    strcpy(s2,o2);    delblank(s1);    delblank(s2);    if(strcasecmp(paraname,s1)==0)//比較參數名    {      strcpy(value,s2);//得到參數值      return 1;    }  }  return 0;}int writeoption(char *filename,char *paraname,char *value)//寫參數到參數文件{  FILE *fp=NULL;  char o1[512],*o2;  char s1[512],s2[512];  struct rwoption *s=NULL,*l=NULL,*t=NULL;  if((fp=fopen(filename,"r"))==NULL)    return 0;  fseek(fp,0L,SEEK_SET);  while(!feof(fp))  {    fscanf(fp,"%[^\n]\n",o1);    o2=strstr(o1,"=")+1;    memset(s1,0,512);    memset(s2,0,512);    strncpy(s1,o1,o2-o1-1);    if(strcasecmp(paraname,s1)==0)      strcpy(s2,value);    else      strcpy(s2,o2);    delblank(s1);    delblank(s2);    if(s==NULL)    {      s=(struct rwoption *)malloc(sizeof(struct rwoption));      s->prev=NULL;      s->next=NULL;      l=s;    }    else    {      l->next=(struct rwoption *)malloc(sizeof(struct rwoption));      l->next->prev=l;      l=l->next;      l->next=NULL;    }    strcpy(l->name,s1);    strcpy(l->value,s2);  }  fclose(fp);  if((fp=fopen(filename,"w"))==NULL)    return 0;  l=s;  t=l;  while(l)  {    fprintf(fp,"%s=%s\n",l->name,l->value);    l=t->next;    free(t);    t=l;  }  fclose(fp);  return 1;}/*******************************Read & write Option function******************************/void log(char *s)//打印日志信息{	time_t timer;  char lt[50];	struct tm *tblock;	timer = time(NULL);	tblock = localtime(&timer);  strcpy(lt,asctime(tblock));  lt[strlen(lt)-1]='\0';  printf("%s - %s\n",lt,s);}/***********************************base64 Decode*****************************************/  unsigned char B64[64] = {65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,    81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,    109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,    54,55,56,57,43,47};int base64decode(void *pinput,void * poutput,int Size)//base64解碼{  int i, j, iptr, optr;  unsigned char Temp[4];  unsigned char *Input, *Output;  int rtvalue=0;  Input = (unsigned char *)pinput;  Output = (unsigned char *)poutput;  iptr = 0;  optr = 0;    for(i=1;i<Size/4+1;i++)  {    for(j=0;j<4;j++)    {      if(Input[iptr]>=65&&Input[iptr]<=90)        Temp[j] = Input[iptr] - 'A';      if(Input[iptr]>=97&&Input[iptr]<=122)        Temp[j] = Input[iptr] - 'a' + 26;      if(Input[iptr]>=48&&Input[iptr]<=57)        Temp[j] = Input[iptr] - '0' + 52;      if(Input[iptr]==43)        Temp[j] = 62;      if(Input[iptr]==47)        Temp[j] = 63;      if(Input[iptr]==61)        Temp[j] = 0xFF;      iptr++;    }    Output[optr] = (Temp[0] << 2) | (Temp[1] >> 4);        if ((Temp[2]!= 0xFF) && (Temp[3]== 0xFF))    {      Output[optr+1] = (Temp[1] << 4) | (Temp[2] >> 2);      rtvalue = optr+2;      optr++;    }    else if (Temp[2]!= 0xFF)    {      Output[optr+1] = (Temp[1] << 4) | (Temp[2] >> 2);      Output[optr+2] = (Temp[2] << 6) |  Temp[3];      rtvalue = optr+3;      optr+=2;    };    optr++;  }  return 1;}    /***********************************base64 Decode*****************************************/char * filetype(char *filename){  char a1[128];  char a2[128];  sscanf(filename,"%[^.].%s",a1,a2);//a1得到文件名  a2得到文件擴展名  if(strcasecmp(a2,"jpg")==0 || strcmp(a2,"jpge")==0)  {    strcpy(returndata,"image/jpeg");  }  else if(strcasecmp(a2,"gif")==0)  {    strcpy(returndata,"image/gif");  }  else if(strcasecmp(a2,"ezw")==0)  {    strcpy(returndata,"ezw");  }  else if(strcasecmp(a2,"html")==0 || strcmp(a2,"htm") ==0)  {    strcpy(returndata,"text/html");  }  else  {    strcpy(returndata,"file/unknown");  }  return(returndata);}int sendfile(FILE *fp, int socket){  char filedata[2048];  int rlen=0;  int slen;  while(1)  {    rlen=fread(filedata,1,80,fp);    if(rlen<=0)      break;    slen=send(socket, filedata, rlen, 0);    if (slen == -1)                perror("\nsend from client");    else      if (slen<rlen)        log("not send all to client!");  }  return 0;}void readconfig(void){  FILE *fp;  char option1[20],option2[100];  strcpy(serverpath,"./www/");  serverport=1080;  needauth=0;  getcwd(cgiconffile,254);  strcat(cgiconffile,"/cgi.conf");  //printf("%s\n",cgiconffile);  strcpy(defaultcgiext,"cgi");  if((fp=fopen("miniweb.conf","r"))==NULL)  {    log("Error read the miniweb.conf,Use Default Configs!");  }  else  {    while(!feof(fp))    {      fscanf(fp,"\n%[^=]=%s\n",option1,option2);      //strcpy(option1,(char *)strlwr(option1));      delblank(option1);      if(strcasecmp(option1,"port")==0)        serverport=atoi(option2);      if(strcasecmp(option1,"homedir")==0)        strcpy(serverpath,option2);      if(strcasecmp(option1,"cgiext")==0)        strcpy(defaultcgiext,option2);      if(strcasecmp(option1,"needauth")==0)        needauth=atoi(option2);      if(strcasecmp(option1,"defaultdoc")==0)        strcpy(defaultdoc,option2);      if(strcasecmp(option1,"password")==0)      	strcpy(password,option2);      if(strcasecmp(option1,"cgiconfig")==0)        strcpy(cgiconffile,option2);    }  }  log("Read the config completed!");  //printf("Home dir:%s\nServer Port:%d\nDefault CGI Ext:%s\nPassword:%s\n",serverpath,serverport,defaultcgiext,password);  return;}char * readheadervalue(char *name){  char *lsub;  lsub=strstr(rheader,name);  if(lsub)  {    strcpy(returndata,lsub);    return(returndata);  }  return NULL;}int readheader(int socket){  int readlen=recv(socket,(void *)rheader,2048,0);  if(readlen==-1)     perror("Error Read Header request\n");  return readlen;}int writeheader(int socket,int code,char * contenttype){    char codestr[100];    if(code==200)      strcpy(codestr,"200 OK");    if(code==404)      strcpy(codestr,"404 Not Found");    if(code==400)      strcpy(codestr,"400 Bad Request");    if(code==401)      strcpy(codestr,"401 Unauthorized\nConnection: close\nWWW-Authenticate: Basic realm=\"Netstorage Setup\"");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月综合激情婷婷六月色窝| 欧美tickling挠脚心丨vk| 国产精品一区2区| 日韩专区欧美专区| 亚洲123区在线观看| 亚洲欧美一区二区三区孕妇| 亚洲精品国产品国语在线app| 国产日韩精品一区| 亚洲人午夜精品天堂一二香蕉| 亚洲色图制服诱惑| 日本成人在线视频网站| 蜜桃久久久久久久| 久久av资源网| 成人的网站免费观看| 在线观看一区二区精品视频| 国产精品久久毛片a| 国产女主播一区| 亚洲色图欧洲色图| 亚洲一区二区三区国产| 日本在线不卡视频| 波多野结衣的一区二区三区| 欧美日韩综合不卡| 日韩免费观看高清完整版在线观看| 久久免费看少妇高潮| 亚洲欧美日韩久久| 国产又粗又猛又爽又黄91精品| 99视频超级精品| 久久久久久99久久久精品网站| 国产精品久久久久久久久果冻传媒 | 激情欧美日韩一区二区| 欧美性猛片xxxx免费看久爱| 国产亚洲人成网站| 极品少妇xxxx偷拍精品少妇| 51久久夜色精品国产麻豆| 一区二区三区中文在线| 91美女福利视频| 中文一区二区在线观看| 久久99精品一区二区三区| 在线观看亚洲专区| 一区二区激情视频| 99国产精品久久久久久久久久久| wwwwxxxxx欧美| 国产成人亚洲综合a∨猫咪| 日韩欧美区一区二| 久草精品在线观看| 久久久久久久久久久久电影| 精品一区二区在线观看| 欧美一区二区日韩一区二区| 日本欧美一区二区三区乱码| 精品美女被调教视频大全网站| 日韩成人免费电影| 精品国产一区二区三区久久久蜜月| 久久99最新地址| 一区二区不卡在线播放 | 亚洲男人都懂的| 91麻豆精品国产91久久久| 国产一区二区三区四 | av激情综合网| 蜜臀av一区二区在线免费观看 | 99精品视频中文字幕| 免费欧美高清视频| 亚洲精品免费电影| 亚洲图片另类小说| 精品日韩在线观看| 欧美高清视频在线高清观看mv色露露十八| 青娱乐精品视频| 午夜精品国产更新| 怡红院av一区二区三区| 国产欧美精品一区aⅴ影院 | 2023国产精品自拍| 欧美精品一级二级三级| 91猫先生在线| 成人av动漫在线| 天天亚洲美女在线视频| 亚洲永久精品国产| 一区二区三区成人在线视频| 综合欧美亚洲日本| 亚洲精选免费视频| 国产精品久久久久久亚洲毛片| 2017欧美狠狠色| 国产欧美中文在线| 亚洲午夜免费电影| 亚洲色图一区二区| 国产精品久久久久天堂| 国产精品丝袜91| 亚洲国产成人午夜在线一区| 欧美精品一区视频| 中日韩免费视频中文字幕| 国产精品美女一区二区在线观看| 国产精品妹子av| 亚洲电影激情视频网站| 日韩和的一区二区| 免费观看30秒视频久久| 国产在线麻豆精品观看| 不卡一区二区在线| 欧美性猛交xxxx乱大交退制版 | 石原莉奈一区二区三区在线观看| 久久成人羞羞网站| 不卡在线视频中文字幕| 欧美丰满一区二区免费视频| 一区二区三国产精华液| 美女诱惑一区二区| 91成人在线观看喷潮| 久久这里只有精品首页| 国产精品久久免费看| 激情五月播播久久久精品| www.欧美色图| 国产无遮挡一区二区三区毛片日本| 亚洲亚洲人成综合网络| 国产大陆a不卡| 欧美成人伊人久久综合网| 亚洲成人在线免费| 91蜜桃网址入口| 国产色产综合产在线视频| 久久精品国内一区二区三区| 欧美在线一区二区| 亚洲伦理在线精品| 99r国产精品| 最新国产精品久久精品| eeuss影院一区二区三区| 国产亚洲欧美在线| 国产精品一区二区三区网站| 亚洲精品久久久久久国产精华液| 成人午夜激情影院| 中文字幕精品—区二区四季| 国产成人精品亚洲日本在线桃色| 欧美精品一区二区三区蜜臀 | 欧美大胆一级视频| 久久99国产精品久久99| 久久综合色之久久综合| 韩国理伦片一区二区三区在线播放| 日韩欧美国产三级| 成人一区在线看| 综合久久一区二区三区| 欧美日韩aaa| 国产高清成人在线| 一区二区三区 在线观看视频 | 日韩国产精品久久久| 精品区一区二区| 色激情天天射综合网| 国产精品一二二区| 午夜久久电影网| 国产午夜亚洲精品理论片色戒 | 亚洲第一会所有码转帖| 日韩精品一区二区三区视频播放 | 国产在线精品一区二区夜色| 中文字幕av一区二区三区| 欧美性三三影院| 国产河南妇女毛片精品久久久| 亚洲国产精品ⅴa在线观看| 欧美日韩在线综合| 播五月开心婷婷综合| 舔着乳尖日韩一区| 亚洲欧洲在线观看av| 精品日韩av一区二区| 欧美精品一级二级| 91色porny蝌蚪| 粉嫩蜜臀av国产精品网站| 日韩精品一二三四| 亚洲一区在线观看免费| 国产精品久久久久久久岛一牛影视| 欧美一区二区三区视频免费播放| 色婷婷久久久亚洲一区二区三区 | 26uuu成人网一区二区三区| 色综合久久久久久久久| 国产成人久久精品77777最新版本| 日精品一区二区| 日日夜夜精品视频免费| 午夜电影一区二区| 亚洲大尺度视频在线观看| 亚洲综合成人在线| 日韩综合一区二区| 久久国产成人午夜av影院| 捆绑调教一区二区三区| 精品无人码麻豆乱码1区2区| 激情六月婷婷综合| 国产suv精品一区二区883| 成人黄色国产精品网站大全在线免费观看| 国产一区高清在线| 国产成a人无v码亚洲福利| 91蜜桃在线观看| 欧美一级日韩一级| 欧美国产成人精品| 亚洲最新视频在线观看| 久久国产视频网| 本田岬高潮一区二区三区| 欧美网站大全在线观看| 日韩精品专区在线影院重磅| 精品日韩欧美在线| 亚洲综合精品自拍| 国产一区二区福利视频| 91免费小视频| 久久久三级国产网站| 一区二区三区电影在线播| 麻豆精品在线视频| 一本大道久久精品懂色aⅴ| 欧美电影免费观看完整版| 一区二区三区蜜桃| 国产一区二区免费视频| 色综合一个色综合|