亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品美女久久久久aⅴ | 成人午夜又粗又硬又大| 国产成人在线视频网址| 欧美在线免费观看亚洲| 久久―日本道色综合久久| 亚洲黄色性网站| 国产成人综合在线观看| 欧美日本韩国一区| 亚洲自拍偷拍综合| 国产91精品一区二区| 欧美一区二区三区在线看| 最新日韩av在线| 国产suv精品一区二区三区| 欧美色综合网站| 伊人性伊人情综合网| 国产成人综合在线观看| 精品免费99久久| 日韩国产精品大片| 欧美性大战久久久久久久| 亚洲欧洲av在线| 成人免费观看视频| 久久久青草青青国产亚洲免观| 日韩电影免费在线| 欧美图区在线视频| 亚洲一区在线视频观看| www.欧美精品一二区| 国产亚洲成aⅴ人片在线观看| 五月婷婷激情综合网| 在线免费视频一区二区| 中文字幕欧美区| 成人性视频免费网站| 国产欧美日韩综合精品一区二区| 国产美女视频91| 国产色91在线| 成人高清视频在线| 中文字幕一区二区在线播放 | 久久人人爽人人爽| 久久成人免费网站| 久久综合给合久久狠狠狠97色69| 日韩成人一级大片| 久久亚洲精精品中文字幕早川悠里| 麻豆精品视频在线观看免费| 日韩一级欧美一级| 国产一区二区影院| 国产农村妇女毛片精品久久麻豆 | 91精品国产综合久久精品麻豆| 亚洲成a人在线观看| 欧美日韩高清在线| 蜜桃精品视频在线| 国产日韩欧美精品一区| 国产成人av电影在线观看| 欧美激情一区二区三区四区| www.在线成人| 丝袜国产日韩另类美女| 69堂精品视频| 高清av一区二区| 一区二区视频免费在线观看| 欧美日本不卡视频| 国产一区999| 一区二区三区中文免费| 91麻豆精品国产综合久久久久久| 美女诱惑一区二区| 自拍视频在线观看一区二区| 欧美日韩成人综合在线一区二区| 激情六月婷婷久久| 伊人婷婷欧美激情| 2023国产一二三区日本精品2022| 成人免费的视频| 亚洲最新视频在线观看| 欧美一区午夜精品| 99综合电影在线视频| 亚洲va韩国va欧美va精品| 久久综合色鬼综合色| 色天天综合色天天久久| 老司机精品视频线观看86| 中文欧美字幕免费| 91精品视频网| av亚洲产国偷v产偷v自拍| 日韩av网站在线观看| 国产精品国产三级国产普通话蜜臀 | 一区二区成人在线| 精品美女被调教视频大全网站| 91在线观看一区二区| 麻豆精品在线视频| 亚洲一区在线播放| 国产精品国产三级国产aⅴ入口 | 欧美精品乱码久久久久久按摩| 国产乱码精品1区2区3区| 亚洲图片欧美综合| 亚洲国产精华液网站w| 日韩视频免费观看高清完整版在线观看| 成人综合在线观看| 不卡电影一区二区三区| 奇米888四色在线精品| 亚洲人快播电影网| 国产精品免费久久| 精品福利av导航| 精品国产髙清在线看国产毛片| 在线观看日韩电影| 91在线视频播放地址| 国产福利91精品| 国产精品一区二区在线播放| 亚洲国产成人av网| 亚洲一区二区三区四区在线| 亚洲欧美在线另类| 成人免费一区二区三区视频| 久久先锋影音av鲁色资源| 日韩亚洲欧美在线| 91精品国产综合久久香蕉麻豆| 欧美高清www午色夜在线视频| 欧美综合视频在线观看| 色综合久久久久久久久久久| jvid福利写真一区二区三区| 成人黄色小视频| 99久免费精品视频在线观看| 成人免费va视频| 99久久精品国产导航| 北条麻妃国产九九精品视频| 成人app软件下载大全免费| 成人av在线观| 91在线视频播放地址| 日本韩国欧美国产| 欧美日韩视频第一区| 欧美精品v国产精品v日韩精品| 欧美裸体bbwbbwbbw| 欧美一区二区三级| 精品国产自在久精品国产| 精品日韩欧美一区二区| 日韩美女在线视频| 欧美激情综合在线| 亚洲日本丝袜连裤袜办公室| 亚洲精品国产无套在线观| 亚洲第一精品在线| 久久av中文字幕片| 成人av电影在线观看| 色综合久久久久综合体桃花网| 欧美日精品一区视频| 日韩手机在线导航| 国产网站一区二区| 亚洲欧美另类在线| 青青草原综合久久大伊人精品优势 | 中文字幕一区免费在线观看| 亚洲欧美日韩国产一区二区三区 | 亚洲欧洲在线观看av| 亚洲激情欧美激情| 久久国产精品99久久人人澡| 国产精品亚洲成人| 欧美日韩一区二区三区在线 | 国产在线播精品第三| 国产91精品一区二区麻豆亚洲| 91久久精品午夜一区二区| 欧美一区欧美二区| 亚洲色图在线视频| 精品在线观看免费| 91在线看国产| 久久久久国产成人精品亚洲午夜| 最新热久久免费视频| 久久国产精品99久久久久久老狼| 99久久国产综合精品女不卡| 欧美日韩视频在线一区二区| 久久综合九色综合97婷婷女人| 亚欧色一区w666天堂| 成人免费毛片app| 精品日韩在线观看| 亚洲一区二区三区三| 国产精品一区二区三区乱码| 欧美日韩一区二区三区免费看| 日本一区二区三级电影在线观看| 三级欧美在线一区| 日本福利一区二区| 欧美国产一区在线| 另类小说图片综合网| 色94色欧美sute亚洲线路二| 久久青草国产手机看片福利盒子| 亚洲一区二区3| 99久久婷婷国产综合精品 | 欧美日韩中文精品| 国产免费成人在线视频| 日韩中文字幕麻豆| 在线一区二区三区四区五区| 国产亚洲欧洲一区高清在线观看| 日本不卡视频在线| 欧美日韩在线一区二区| 亚洲色图一区二区三区| 国产在线看一区| 日韩一区二区三区四区| 亚洲午夜久久久久久久久电影网| 不卡在线观看av| 国产精品久久久久久久午夜片| 久草中文综合在线| 欧美一区二视频| 蜜桃精品视频在线| 91精品国产综合久久久久久 | 成人福利视频网站| 国产三级精品在线| 国产传媒久久文化传媒| 久久精品一区二区三区不卡牛牛 | 91看片淫黄大片一级在线观看| 亚洲国产精品t66y| 99久久精品国产一区二区三区|