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

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

?? s5authlib.c

?? ss5的socks5認擴展認證模塊,實現了基本了認證功能,需要的話,可以進行功能增強擴展. 已在Linux下測試通過.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * *  File  : S5AuthLib.c *  Author: NieJun *  Mail  : yhniejun@163.com *  Date  : 2008/10/21 * */#include "S5AuthServer.h"#include "S5AuthLib.h"static pthread_t auth_server_thread_id = 0;AuthCode get_s5auth_conf(){    FILE *conf_fp;    char confString[256];    int  get_conf_sts = 0;    char logString[256] = {0};    memset(&S5AuthConf, 0, sizeof(S5AuthConf));    printf("Conf struct size [%d]\n", sizeof(S5AuthConf));    sprintf(S5AuthConf.conf_file, "/etc/s5auth/s5auth.conf");    printf("Conf file [%s]\n", S5AuthConf.conf_file);    if((conf_fp = fopen(S5AuthConf.conf_file, "r")) == NULL )    {        printf("Can not find configure file [%s]!\n", S5AuthConf.conf_file);        return AuthFalse;    }    while(fscanf(conf_fp, "%255s", confString)!= EOF)    {#if 1        if(confString[0] == '#')        {            while(fgetc(conf_fp) != '\n');        }        else if (STREQ(confString, "AuthAddr\0", sizeof("AuthAddr\0")))        {            get_conf_sts = fscanf(conf_fp, "%16s", S5AuthConf.auth_addr);            if (get_conf_sts <= 0)                sprintf(S5AuthConf.auth_addr, "%s", S5AuthAddr);        }        else if (STREQ(confString, "AuthPort\0", sizeof("AuthPort\0")))        {            get_conf_sts = fscanf(conf_fp, "%hd", &(S5AuthConf.auth_port));            if (get_conf_sts <= 0)                S5AuthConf.auth_port = S5AuthPort;        }        else if (STREQ(confString, "db_host\0", sizeof("db_host\0")))        {            get_conf_sts = fscanf(conf_fp, "%20s", S5AuthConf.db_host);            if (get_conf_sts <= 0)                return AuthFalse;                    }        else if (STREQ(confString, "db_user\0", sizeof("db_user\0")))        {            get_conf_sts = fscanf(conf_fp, "%32s", S5AuthConf.db_user);            if (get_conf_sts <= 0)                return AuthFalse;        }        else if (STREQ(confString, "db_passwd\0", sizeof("db_passwd\0")))        {            get_conf_sts = fscanf(conf_fp, "%32s", S5AuthConf.db_passwd);            if (get_conf_sts <= 0)                return AuthFalse;        }        else if (STREQ(confString, "db_name\0", sizeof("db_name\0")))        {            get_conf_sts = fscanf(conf_fp, "%32s", S5AuthConf.db_name);            if (get_conf_sts <= 0)                return AuthFalse;        }        else if (STREQ(confString, "db_port\0", sizeof("db_port\0")))        {            get_conf_sts = fscanf(conf_fp, "%hd", &(S5AuthConf.db_port));            if (get_conf_sts <= 0)                S5AuthConf.db_port = 3306;        }        else if (STREQ(confString, "AuthMode\0", sizeof("AuthMode\0")))        {            get_conf_sts = fscanf(conf_fp, "%hd", (BINT2 *)&(S5AuthConf.auth_mode));            if (get_conf_sts <= 0)                S5AuthConf.auth_mode = AUTH_DATABASE_MODE;        }        else if (STREQ(confString, "LogFile\0", sizeof("LogFile\0")))        {            get_conf_sts = fscanf(conf_fp, "%128s", S5AuthConf.log_file);            if (get_conf_sts <= 0)                sprintf(S5AuthConf.log_file, "%s", DEF_LOG_FILE);        }        /*        else        {            fclose(conf_fp);            return AuthFalse;        }        */#endif    }    //fclose(conf_fp);    //Check confguer value and set default value    if (S5AuthConf.auth_addr[0] == '\0')    {        sprintf(S5AuthConf.auth_addr, "%s", S5AuthAddr);    }    if (S5AuthConf.auth_port == 0)    {        S5AuthConf.auth_port = S5AuthPort;    }        if (S5AuthConf.db_host[0] == '\0')    {        sprintf(logString, "[db_host] not configure\n");#ifdef MAIN_DEBUG_INFO        printf("%s", logString);#endif        fclose(conf_fp);        return AuthFalse;    }    if (S5AuthConf.db_user[0] == '\0')    {        sprintf(logString, "[db_user] not configure\n");#ifdef MAIN_DEBUG_INFO        printf("%s", logString);#endif        fclose(conf_fp);        return AuthFalse;    }    if (S5AuthConf.db_passwd[0] == '\0')    {        sprintf(logString, "[db_password] not configure\n");#ifdef MAIN_DEBUG_INFO        printf("%s", logString);#endif        fclose(conf_fp);        return AuthFalse;    }        if (S5AuthConf.db_name[0] == '\0')    {        sprintf(logString, "[db_name] not configure\n");#ifdef MAIN_DEBUG_INFO        printf("%s", logString);#endif        fclose(conf_fp);        return AuthFalse;    }    if (S5AuthConf.db_port == 0)    {        S5AuthConf.db_port = 3306;    }    if (S5AuthConf.auth_mode == 0)    {        S5AuthConf.auth_mode = AUTH_DATABASE_MODE;    }    if (S5AuthConf.log_file[0] == '\0')    {        sprintf(S5AuthConf.log_file, "%s", DEF_LOG_FILE);    }    fclose(conf_fp);    #ifdef MAIN_DEBUG_INFO    printf("AuthAddr [%s], AuthPort [%d], Db host [%s], \    db_user [%s], db_passwd [%s], db_name [%s], \    db_port [%d], auth_mode [%d], log_file [%s]\n",        S5AuthConf.auth_addr, S5AuthConf.auth_port, S5AuthConf.db_host,         S5AuthConf.db_user, S5AuthConf.db_passwd, S5AuthConf.db_name,         S5AuthConf.db_port, S5AuthConf.auth_mode, S5AuthConf.log_file);#endif    return AuthTrue;} /* End of get_s5auth_conf */AuthCode MakeDaemon(void){    pid_t pid;    pid=fork();    /*    If father then exit    */    if( pid )        exit(0);    /*    If child then ontinue and become process group leader    */    else if( pid != -1 )        setsid(); 	    else        return AuthFalse;    pid=fork();  	    /*    No terminal association    */    if(pid)         exit(0);     else if( pid != -1 )    {        chdir("/");        umask(0);	    }    else        return AuthFalse;  return AuthTrue;} /* End of MakeDaemon() */AuthCode S5AuthServerMake(char *addr, unsigned int port){    int reuseAddrFlag = 1;    if ((S5AuthSocket = socket(AF_INET, SOCK_STREAM, 0)) == -1)    {        return AuthFalse;    }    memset((char *)&S5AuthSsin, 0, sizeof(struct sockaddr_in));    S5AuthSsin.sin_family = AF_INET;    if(port)        S5AuthSsin.sin_port = htons(port);    else        S5AuthSsin.sin_port = htons(S5AuthPort);    if(STREQ(addr, "0.0.0.0", sizeof("0.0.0.0")))        S5AuthSsin.sin_addr.s_addr = htonl(INADDR_ANY);    else        S5AuthSsin.sin_addr.s_addr = inet_addr(addr);    setsockopt(S5AuthSocket, SOL_SOCKET, SO_REUSEADDR, &reuseAddrFlag, sizeof(int));    if (bind(S5AuthSocket, (struct sockaddr *)&S5AuthSsin, sizeof(struct sockaddr_in)) == -1)    {        return AuthFalse;    }    if (listen(S5AuthSocket, 6) == -1)     {        return AuthFalse;    }    return AuthTrue;} /* End of S5AuthServerMake */BINT4 AuthNameHash(const char* str, BINT4 hash_size){    unsigned int hash = 0;    unsigned int x    = 0;    while (*str)    {        hash = (hash << 4) + (*str++);        if ((x = hash & 0xF0000000L) != 0)        {            hash ^= (x >> 24);            hash &= ~x;        }    }    hash = (hash & 0x7FFFFFFF)%hash_size;    return hash;    } /* End of AuthHash */AuthUser *add_auth_user(AuthUser *new_user){    AuthUser *tUser=NULL;    BINT4 index_key;    index_key = AuthNameHash(new_user->UserName, MAX_USER_TBL);    tUser = authUserTbl[index_key];    while (tUser)    {        if (STRCEQ(tUser->UserName, new_user->UserName))        {            //Update user info            memcpy(tUser->PassWord, new_user->PassWord, MAX_PASSWD_LEN);            return tUser;        }        tUser = tUser->next;    }    tUser = (AuthUser *)malloc(sizeof(AuthUser));    if (tUser == NULL)        return NULL;    memset(tUser, 0, sizeof(AuthUser));    memcpy(tUser->UserName, new_user->UserName, MAX_NAME_LEN);    memcpy(tUser->PassWord, new_user->PassWord, MAX_PASSWD_LEN);    if (authUserTbl[index_key])    {        authUserTbl[index_key]->prev = tUser;        tUser->next = authUserTbl[index_key];    }    authUserTbl[index_key] = tUser;    return tUser;        } /* End of add_auth_user */AuthCode db_initialization(){    MYSQL *mysql_sts;    if (mysql_init(&db_conn) == NULL)    {        return AuthFalse;    }    //mysql_sts = mysql_real_connect(&db_conn, db_host, db_user, db_passwd, db_name, MYSQL_PORT, NULL, 0);    mysql_sts = mysql_real_connect(&db_conn, S5AuthConf.db_host, S5AuthConf.db_user, S5AuthConf.db_passwd, S5AuthConf.db_name, S5AuthConf.db_port, NULL, 0);    if (!mysql_sts)        return AuthFalse;    return AuthTrue;    } /* End of db_init */MYSQL_RES *db_query(const char *sql){    MYSQL_RES *result;        if (!sql)        return NULL;    if (mysql_query(&db_conn, sql))        return NULL;    result = mysql_store_result(&db_conn);    if (result == NULL)        return NULL;    return result;    } /* End of db_query */MYSQL_ROW db_next(MYSQL_RES *result){    MYSQL_ROW row;    row = mysql_fetch_row(result);    if (row == NULL)    {        mysql_free_result(result);        result = NULL;        return NULL;    }    return row;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区精品欧美日韩一区二区三区| 亚洲精品成人少妇| 欧美日韩精品高清| 成人永久看片免费视频天堂| 久久国产精品免费| 久久国产乱子精品免费女| 精品亚洲aⅴ乱码一区二区三区| 免费av成人在线| 久久精品理论片| 国产一区二区三区观看| 国产白丝精品91爽爽久久| 成人一区二区三区视频在线观看| 国产欧美精品国产国产专区 | 久久久久久**毛片大全| 91麻豆精品国产自产在线| 欧美日韩一二三区| 日韩午夜中文字幕| 精品蜜桃在线看| 久久婷婷成人综合色| 中文字幕在线不卡国产视频| 欧美日韩一区高清| 欧美日韩亚州综合| 欧美大片一区二区| 国产精品国产三级国产aⅴ原创| 亚洲视频香蕉人妖| 日韩成人精品在线观看| 国内一区二区在线| 色综合夜色一区| 日韩欧美一级二级三级久久久| 久久先锋影音av鲁色资源| 亚洲欧美电影一区二区| 日韩成人一区二区三区在线观看| 韩国av一区二区三区| 欧美伊人久久久久久久久影院| 欧美一级搡bbbb搡bbbb| 国产精品成人一区二区艾草| 亚洲18色成人| 成人网页在线观看| 3d动漫精品啪啪1区2区免费 | 欧美一区二区三区喷汁尤物| 久久婷婷一区二区三区| 亚洲国产视频一区二区| 国产福利91精品一区二区三区| 在线视频欧美区| 久久午夜免费电影| 日韩高清一级片| 91美女视频网站| 久久久久久久免费视频了| 亚洲大片免费看| av一二三不卡影片| 久久这里只有精品首页| 日韩成人精品在线观看| 欧美综合久久久| 成人欧美一区二区三区视频网页| 毛片av中文字幕一区二区| 欧美三级电影在线观看| 综合久久久久久久| 成人avav在线| 国产午夜三级一区二区三| 欧美bbbbb| 欧美军同video69gay| 亚洲一区在线观看网站| 99re这里只有精品6| 国产拍欧美日韩视频二区| 久久狠狠亚洲综合| 精品国产乱码久久久久久久久| 视频一区二区三区在线| 欧美日韩大陆一区二区| 亚洲一区二区在线免费观看视频 | 欧美一区二区视频在线观看| 亚洲人成7777| 91首页免费视频| 综合自拍亚洲综合图不卡区| 成人黄色国产精品网站大全在线免费观看 | 国产成人欧美日韩在线电影| 欧美tickling挠脚心丨vk| 日本人妖一区二区| 欧美一个色资源| 精品一区二区国语对白| 精品国产成人系列| 国产精品综合av一区二区国产馆| 日韩欧美国产三级| 久久国产精品无码网站| 久久亚洲综合色| 成人午夜看片网址| 亚洲人成影院在线观看| 欧美性受极品xxxx喷水| 午夜精品一区二区三区三上悠亚| 欧美人与禽zozo性伦| 亚洲欧美欧美一区二区三区| 国产一区二区三区最好精华液| 在线观看三级视频欧美| 亚洲一区二区三区在线播放| 欧美日本韩国一区| 日本成人在线一区| 精品国产凹凸成av人导航| 国产又黄又大久久| 国产精品国产精品国产专区不片| 成人av免费在线播放| 一级日本不卡的影视| 91精品国产综合久久精品图片| 精品一区二区三区的国产在线播放 | 成人国产在线观看| 国产精品国产三级国产aⅴ中文| 在线视频综合导航| 蜜桃精品在线观看| 国产精品久久久久久一区二区三区| 91在线视频播放地址| 日韩av在线免费观看不卡| 国产午夜亚洲精品不卡| 欧美在线观看一区| 国产剧情av麻豆香蕉精品| 一区二区三区四区激情| 337p粉嫩大胆噜噜噜噜噜91av| 99精品欧美一区二区三区小说| 日本在线播放一区二区三区| 国产精品电影一区二区| 精品国精品自拍自在线| 在线观看视频一区二区 | 国产精品久久看| 欧美高清激情brazzers| 成人国产一区二区三区精品| 日本欧美肥老太交大片| 亚洲久本草在线中文字幕| 久久久青草青青国产亚洲免观| 欧美日韩国产bt| 91免费在线看| 国产成人精品免费网站| 秋霞成人午夜伦在线观看| 亚洲精品日日夜夜| 中文字幕不卡一区| 日韩女优av电影在线观看| 欧美久久久久久久久中文字幕| 国产91精品免费| 精品一二三四区| 另类人妖一区二区av| 天天射综合影视| 亚洲与欧洲av电影| 亚洲少妇屁股交4| 中文字幕日本乱码精品影院| 久久综合色8888| 日韩女优av电影在线观看| 欧美一区二区三区成人| 欧美日韩精品福利| 欧美色视频一区| 欧美视频在线播放| 在线观看成人小视频| 91黄色激情网站| 欧美亚洲日本国产| 欧美美女直播网站| 欧美精品乱码久久久久久按摩 | 日本欧美大码aⅴ在线播放| 亚洲女人的天堂| 亚洲精选一二三| 亚洲三级免费电影| 亚洲综合在线第一页| 一区二区欧美视频| 亚洲成年人影院| 免费在线欧美视频| 国产尤物一区二区在线| 国产成人综合在线播放| yourporn久久国产精品| 色偷偷88欧美精品久久久| 色就色 综合激情| 91麻豆精品91久久久久久清纯| 欧美一区三区二区| 精品1区2区在线观看| 国产情人综合久久777777| 中文字幕制服丝袜一区二区三区| 亚洲国产精品v| 一区二区三区高清| 免费一级片91| 粉嫩嫩av羞羞动漫久久久 | 国产日产欧产精品推荐色 | 欧美不卡视频一区| 国产精品素人一区二区| 亚洲桃色在线一区| 日本成人在线一区| av在线一区二区三区| 欧美日韩国产高清一区二区| 欧美刺激午夜性久久久久久久| 久久久久国产成人精品亚洲午夜| 成人欧美一区二区三区1314| 亚洲成av人在线观看| 国产精品一级片在线观看| 色一区在线观看| 精品乱人伦小说| 亚洲精品视频自拍| 久久99这里只有精品| 色综合久久中文字幕综合网| 日韩欧美你懂的| 亚洲精品欧美专区| 国产福利91精品一区二区三区| 欧美日韩一本到| 国产精品入口麻豆原神| 日本伊人午夜精品| 欧美在线一区二区| 国产精品卡一卡二| 精品一区二区三区不卡| 欧美日高清视频|