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

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

?? main.c

?? cygwin環境編譯,saac登陸服務端,石器2最新代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
#define _MAIN_C_#include "main.h"#include "util.h"#include "mail.h"#include "db.h"#include "saacproto_util.h"#include "saacproto_serv.h"// CoolFish: Family 2001/5/9#include "acfamily.h"#include "version.h"#ifdef _SEND_EFFECT				  // WON ADD 送下雪、下雨等特效 #include "recv.h"#endif#include "char.h"#ifdef _SASQL#include "sasql.h"#endif#include <stdio.h> #include <time.h> #include <signal.h>#include <sys/types.h>#include <time.h>#include <sys/time.h>#include <errno.h>#include <sys/wait.h>#include <getopt.h>#include <stdio.h>#include <malloc.h>#include <strings.h>#include <string.h>#include <unistd.h>#include <netdb.h>#include <errno.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <time.h>#include <fcntl.h>#include <netinet/tcp.h>#include "lock.h"#define BACKLOGNUM 5int worksockfd;struct membuf{    int use;    char buf[512];//    char buf[1024*128];    int len;    int next;};struct connection{    int use;        int fd;           int mbtop_ri;    int mbtop_wi;    struct sockaddr_in remoteaddr;    int closed_by_remote;};struct membuf *mb;int mbsize;int mbuse ;int cpuuse;int mainsockfd;             /* accept 及  域婁醒卞中木月 */struct sockaddr_in localaddr;       /* bind 允月失玉伊旦 */    struct connection *con;        /* 戊生弁撲亦件     */static int mb_finder=0;              /* mb及塢五毛腹綢允月兇戶及                               腹綢玄永皿及匏  筏盛迕 */// WON FIX//char tmpbuf[65536];char tmpbuf[1024*32];//char tmpbuf[65536*3];         /* read迕 */struct timeval select_timeout;time_t sys_time =0; // Robin addextern gmsv gs[MAXCONNECTION];int tcpstruct_init( char *addr, int port, int timeout_ms, int mem_use, int deb);int tcpstruct_accept1( void );int tcpstruct_accept( int *tis , int ticount );int tcpstruct_close( int ti );int tcpstruct_read( int ti , char *buf , int len );int tcpstruct_readline( int ti , char *buf , int len ,int k ,int r);int tcpstruct_readline_chop( int ti , char *buf, int len );int tcpstruct_write( int ti , char *buf , int len );int tcpstruct_countmbuse( void );int tcpstruct_connect( char *addr , int port );void set_nodelay( int sock );#define OK     0        /* 岳   */#define TCPSTRUCT_ENOMEM -1       /* malloc 撩   */#define TCPSTRUCT_ESOCK -2        /* socket 撩   */#define TCPSTRUCT_EBIND -3        /* bind 撩   */#define TCPSTRUCT_ELISTEN -4      /* listen 撩   */#define TCPSTRUCT_EBUG -6         /* 田弘匹丐月 */#define TCPSTRUCT_EINVCIND -7     /* con尺及index互云井仄中方 */#define TCPSTRUCT_EREADFIN -8     /* read 允月犯□正互卅仁化 closed by remote */#define TCPSTRUCT_EHOST -9        /* gethostbyname 撩   */#define TCPSTRUCT_ECONNECT -10    /* connect 撩   */#define TCPSTRUCT_ECFULL -11      /* con 互中勻天中 */#define TCPSTRUCT_ETOOLONG -12    /* 墊互卅互允亢 */#define TCPSTRUCT_EMBFULL -13     /* mb 互中勻天中  */#define TCPSTRUCT_ECLOSEAGAIN -14 /* close 互2莢今木兇 */int port;               /* 必□丞扔□田□互濤糧仄化仁月禾□玄 */int Total_Charlist;int Expired_mail;int Del_Family_or_Member;int Write_Family;// Nuke startchar *chartime(){    static char buf[80];    time_t t;    t=time(0);    strcpy(buf,ctime(&t));    buf[strlen(buf)-1]=0;    return(buf);}static int initRankTable( void );/*  sigaction白弁 */void sighandle( int a ){  if (a==SIGUSR1) log("sigusr1信號!\n");  log("得到一個信號! 異常中斷......\n" );  writeFamily(familydir);  writeFMPoint(fmpointdir);  writeFMSMemo(fmsmemodir);  exit(1);}// Arminius 7.20 memory unlockvoid sigusr1(int a){  int i;  FILE *f;  char key[4096],buf[4096];  signal(SIGUSR1, sigusr1);    f = fopen("./unlock.arg", "r");  if (f) {    memset(key, 0, 4096);    fread(key, 4096, 1, f);    for (i=0; i<strlen(key); i++) if (key[i]=='\n') key[i]='\0';    switch (key[0]) {    case 'P':	// unlock player      if (DeleteMemLock(getHash(&key[1]) & 0xff,&key[1],&i)) {        log("ADM: memunlock: %s success.\n", key);      } else {        log("ADM: memunlock: %s failed.\n", key);      }    break;    case 'S':	// unlock server      DeleteMemLockServer(&key[1]);      log("ADM: memunlock: %s\n", key);    break;    case 'C':	// check player lock      GetMemLockState(getHash(&key[1]) & 0xff, &key[1], buf);      sprintf(key, "echo \"%s\" > ./sigusr1.result", buf);      system(key);    break;#ifdef _SEND_EFFECT		   // WON ADD 送下雪、下雨等特效	case 'E':			log("\nAC 向 GS 發送下雪特效!!\n");	    SendEffect(&key[1]);	break;#endif	case 'L':  // Robin 列出所有Server連線		log("\nList All Server Conncet!!!!!\n");		for( i =0; i <MAXCONNECTION; i++)			if( gs[i].use)				log("\n gs[%d] fd:%d name:%s ", i, gs[i].fd, gs[i].name );	break;  }	log(" sigusr1_over_1 ");	fclose(f);	log(" sigusr1_over_2 ");  }}static int netWrite( int ti , char *buf , int len){    return tcpstruct_write( ti , buf, len );}gmsv gs[MAXCONNECTION];#ifdef _VIPint login_game_server( int ti , char *svname , char *svpas , int checkvip,               char *result , int resultlen ,               char *retdata , int retdatalen )#elseint login_game_server( int ti , char *svname , char *svpas ,               char *result , int resultlen ,               char *retdata , int retdatalen )#endif{#ifndef _VIP		char buff[50];		sprintf(buff,"vipe-%s-%d",svpass);    if( strcmp( svpas , buff ) == 0 ){#else		if( strcmp( svpas , svpass ) == 0 ){#endif        log( "服務器密碼正確 %s\n" , svname );    } else {        log( "服務器密碼錯誤 %s\n" , svname );        snprintf( result , resultlen , "失敗" );        snprintf( retdata , retdatalen , "密碼錯誤" );        return 0;    }#ifdef _VIP    if(checkvip==0 || checkvip!=4303225 * 2)    {    	snprintf( result , resultlen , "失敗" );      snprintf( retdata , retdatalen , "QQ驗證錯誤" );      return 0;    }#endif    {        int i;        for(i=0;i<MAXCONNECTION;i++){            if( gs[i].use &&                strcmp( gs[i].name , svname ) == 0 ){                snprintf( result, resultlen, "failed" );                snprintf( retdata , retdatalen, "duplicate login" );                return 0;            }         }    }    snprintf( gs[ti].name , sizeof(gs[ti].name), "%s" , svname );	  gs[ti].fd = ti;    snprintf( result , resultlen ,SUCCESSFUL );    snprintf( retdata , retdatalen , "Nothing special" );    DeleteMemLockServer(svname);	// Arminius 7.31 unlock server    return 0;}int logout_game_server( int ti ){    gs[ti].use = 0;	gs[ti].fd = -1;    gs[ti].name[0] = 0;    tcpstruct_close( ti );    return 0;}int is_game_server_login( int ti ){    return gs[ti].use;}static int readConfig( char *path ){    char buf[2048];    FILE *fp;    fp = fopen( path , "r" );    if( fp == NULL ){ return -2; }    while( fgets( buf , sizeof( buf ) , fp )){        char command[128];        char param[128];        chop(buf);                easyGetTokenFromString( buf , 1 , command , sizeof( command ));        easyGetTokenFromString( buf , 2 , param , sizeof( param ));        if( strcmp( command , "port" ) == 0 ){            port = atoi( param );        		log( "\n監聽端口:%d\n",port );        } else if( strcmp( command , "logdir" ) == 0 ){            snprintf( logdir , sizeof( logdir) , param );            log( "日志目錄:%s\n",logdir );        } else if( strcmp( command , "chardir" ) == 0 ){            snprintf( chardir , sizeof( chardir) , param );            log( "檔案目錄:%s\n",chardir );#ifdef _SLEEP_CHAR						snprintf( sleepchardir , sizeof( sleepchardir), "%s_sleep", chardir);						log( "睡眠目錄:%s\n",sleepchardir );#endif        } else if( strcmp( command , "pass" ) == 0 ){        		snprintf( svpass , sizeof( svpass ) , param);            log( "驗證密碼:%s\n",param );        } else if( strcmp( command , "dbdir" ) == 0 ){            snprintf( dbdir , sizeof( dbdir) , param );                log( "數據目錄:%s\n",dbdir );                } else if( strcmp( command, "rotate_interval" ) == 0 ){            log_rotate_interval = atoi( param );            log( "日志循環間隔:%d\n",log_rotate_interval );         } else if( strcmp( command, "maildir" ) == 0 ){            snprintf( maildir, sizeof( maildir ), param );            log( "郵件目錄:%s\n",maildir );#ifdef	_FAMILY        // CoolFish: Family 2001/5/9        } else if( strcmp( command, "familydir" ) == 0 ){            snprintf( familydir, sizeof( familydir ), param );            log( "家族目錄:%s\n",familydir );        } else if( strcmp( command, "fmpointdir" ) == 0 ){            snprintf( fmpointdir, sizeof( fmpointdir ), param );            log( "莊園表列:%s\n",fmpointdir );        } else if( strcmp( command, "fmsmemodir" ) == 0 ){            snprintf( fmsmemodir, sizeof( fmsmemodir ), param );            log( "家族備份:%s\n",fmsmemodir );#endif			  } else if( strcmp( command , "Total_Charlist" ) == 0 ){        	Total_Charlist = atoi( param );        	log( "更新人物點數間隔:%d秒\n",Total_Charlist );        } else if( strcmp( command , "Expired_mail" ) == 0 ){        	Expired_mail = atoi( param );        	log( "更新過期郵件間隔:%d秒\n",Expired_mail );        } else if( strcmp( command , "Del_Family_or_Member" ) == 0 ){        	Del_Family_or_Member = atoi( param );        	log( "刪除家族成員間隔:%d秒\n",Del_Family_or_Member );        } else if( strcmp( command , "Write_Family" ) == 0 ){        	Write_Family = atoi( param );        	log( "更新家族信息間隔:%d秒\n",Write_Family );				} else if( strcmp( command , "SameIpMun" ) == 0 ){        	sameipmun = atoi( param );        	if(sameipmun>0){        		log( "同IP允許同時登陸:%d次\n",sameipmun );        	}else{        		log( "同IP允許同時登陸:無限制\n" );        	}				}    }    fclose(fp);    return 0;}static void parseOpts( int argc, char **argv ){    int c , option_index;		while(1){        static struct option long_options[] = {            {"nice" , 1 , 0 , 'n'},            {"help" , 0 , 0 , 'h' },            {"userinfo",0 , 0 , 'i'},            {"lockuser",0 , 0 , 'l'}        };        c = getopt_long( argc , argv , "n:hil" , long_options , &option_index );        if( c == -1 )break;        switch( c ){        case 'h':            fprintf( stderr ,                     "使用方法: saac [-h] [-w port] [-w port] ... \n"                     "-h : 顯示saac的幫助\n"                     "-w port : 添加一個工作站進程端口\n"                     "( vipe system supply)\n");            exit(0);            break;        case 'i':#ifdef _SASQL        		sasql_init();        		sasql_craete_userinfo();        		sasql_close();#endif						exit(0);            break;        case 'l':#ifdef _SASQL        		sasql_init();        		sasql_craete_lock();        		sasql_close();#endif        		exit(0);            break;        case 'n':        		nice(atoi( optarg ));        		break;        default:            log( "不能讀懂選項 %c\n" , c );            exit(0);        }    }}double time_diff(struct timeval subtrahend,  struct timeval subtractor);int main( int argc , char **argv ){		parseOpts( argc, argv );		    // Nuke +1 1012: Loop counter    int counter1 = 0;        int counter2 = 0;        int counter3 = 0;        int counter4 = 0;    signal(SIGUSR1, sigusr1);    log_rotate_interval = 3600 * 24 * 7;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产无人区一区二区三区| 久久色.com| 国产精品私人影院| 国内一区二区在线| 精品久久人人做人人爰| 日日摸夜夜添夜夜添亚洲女人| 色综合咪咪久久| 一区二区三区四区不卡视频| 在线观看一区不卡| 亚洲第一福利视频在线| 日韩欧美的一区| 国产丶欧美丶日本不卡视频| 日韩一区日韩二区| 欧美久久久久久蜜桃| 日本不卡123| 国产欧美一区二区精品久导航 | 亚洲成人黄色小说| 欧美一区永久视频免费观看| 国产一区二区h| 亚洲女同一区二区| 日韩一区二区三区精品视频| 国产成人小视频| 亚洲午夜国产一区99re久久| 欧美一区二区三区爱爱| 成人免费va视频| 亚洲成va人在线观看| 久久久久久久精| 欧美性三三影院| 国产精品99久久久| 亚洲一区视频在线观看视频| 精品国产成人系列| 色88888久久久久久影院按摩| 日本不卡一区二区三区| 国产精品不卡在线| 欧美不卡一区二区| 91国偷自产一区二区三区成为亚洲经典 | 久久久亚洲精品一区二区三区| 成人国产精品视频| 日韩电影在线观看电影| 国产精品女主播av| 91.xcao| 91麻豆精东视频| 欧美男人的天堂一二区| 国内精品伊人久久久久av一坑 | 国产原创一区二区| 亚洲国产精品久久不卡毛片| 国产精品五月天| 欧美一卡2卡三卡4卡5免费| 一本一道久久a久久精品综合蜜臀| 麻豆精品一区二区综合av| 一区二区三区在线观看欧美| 久久久一区二区三区| 91精品国产手机| 91免费观看在线| 国产精品一区二区在线播放| 日韩激情视频网站| 亚洲成a人片在线不卡一二三区| 国产精品乱码一区二三区小蝌蚪| 日韩欧美一级特黄在线播放| 欧美日韩高清一区二区不卡 | 国产老女人精品毛片久久| 午夜精品福利一区二区三区蜜桃| 亚洲欧美在线视频观看| 欧美激情综合五月色丁香小说| 日韩欧美综合在线| 555夜色666亚洲国产免| 欧美日韩一区二区三区视频 | 激情六月婷婷久久| 日本亚洲三级在线| 日韩精品午夜视频| 亚洲视频在线一区| 亚洲一区二区欧美日韩| 久草这里只有精品视频| 日韩中文字幕亚洲一区二区va在线| 亚洲欧洲成人自拍| 中文字幕亚洲成人| 中文字幕成人av| 国产精品美女一区二区三区| 中文字幕精品在线不卡| 欧美激情中文字幕一区二区| 久久综合九色欧美综合狠狠| 欧美精品一区视频| xvideos.蜜桃一区二区| 欧美大片一区二区| 久久伊99综合婷婷久久伊| 欧美一区二区三区四区高清| 日韩视频一区二区三区在线播放| 欧美一二区视频| 午夜精品一区在线观看| 五月婷婷久久综合| 狠狠色丁香久久婷婷综| 免费一级欧美片在线观看| 一区二区三区小说| 亚洲激情图片一区| 欧美日韩国产高清一区二区三区 | 99精品视频一区| 一本到不卡免费一区二区| 91福利在线观看| 91麻豆精品国产91久久久更新时间| 欧美久久久久中文字幕| 欧美哺乳videos| 亚洲国产成人自拍| 亚洲已满18点击进入久久| 日韩av网站免费在线| 国产精品亚洲第一区在线暖暖韩国| 国产精品夜夜嗨| 色偷偷久久人人79超碰人人澡| 欧美日韩综合在线| 精品国产露脸精彩对白| 国产精品九色蝌蚪自拍| 一区二区在线免费观看| 久久精品国产一区二区| 99久久免费视频.com| 欧美日本乱大交xxxxx| 精品国产乱码久久久久久图片| 国产精品色在线| 午夜激情一区二区三区| 国产福利视频一区二区三区| 91亚洲大成网污www| 日韩亚洲欧美在线观看| 欧美国产一区在线| 偷拍一区二区三区四区| 国产传媒日韩欧美成人| 欧美系列亚洲系列| 欧美经典一区二区| 亚洲bt欧美bt精品| 成人在线综合网站| 欧美丰满嫩嫩电影| 中文字幕精品一区二区精品绿巨人| 亚洲第一在线综合网站| www.激情成人| 精品国精品自拍自在线| 亚洲一区二区三区四区在线免费观看 | 欧美日韩国产精品成人| 中文字幕免费观看一区| 日本视频一区二区| 色婷婷亚洲一区二区三区| 久久亚洲精华国产精华液| 偷拍一区二区三区四区| 99久久婷婷国产| 久久久另类综合| 美国十次综合导航| 欧美伦理影视网| 亚洲卡通欧美制服中文| 成人黄色在线视频| 欧美成人三级电影在线| 亚洲午夜电影网| 色哟哟一区二区三区| 欧美高清在线视频| 精品影视av免费| 日韩一级二级三级| 图片区小说区国产精品视频| 色香蕉久久蜜桃| 国产精品成人一区二区艾草| 国产精品一品二品| 久久婷婷国产综合精品青草| 色哟哟国产精品| 国产精品国产馆在线真实露脸 | 成人av免费网站| 久久九九国产精品| 国产精品99久久不卡二区| 欧美精品一区二区三区很污很色的 | 精品国产乱码久久久久久久久| 日精品一区二区三区| 欧美日韩国产不卡| 午夜激情一区二区三区| 欧美高清性hdvideosex| 亚洲福利视频三区| 欧美视频在线观看一区| 亚洲图片欧美视频| 欧美性xxxxxx少妇| 日韩精品乱码av一区二区| 欧美一区中文字幕| 国内精品伊人久久久久av影院 | 国产精品你懂的在线欣赏| 国产伦精品一区二区三区免费| 久久综合九色综合97婷婷| 国产成人精品aa毛片| 国产精品色哟哟| 在线视频你懂得一区二区三区| 一区2区3区在线看| 在线播放亚洲一区| 国内外成人在线| 中文字幕一区二区三区不卡 | 成人午夜免费av| 国产精品第五页| 欧美专区日韩专区| 日韩在线一区二区三区| 日韩精品综合一本久道在线视频| 国产在线播放一区三区四| 欧美极品少妇xxxxⅹ高跟鞋 | 日韩精品一二三| 26uuu亚洲婷婷狠狠天堂| 国产91综合网| 一区二区三区国产| 欧美不卡一区二区三区四区| 国产精品99久| 亚洲韩国一区二区三区| 欧美精品一区二区三区四区| 99riav一区二区三区|