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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pamdl.c

?? 可以實(shí)現(xiàn)搭建VPN服務(wù)器
?? C
字號:
#if DLOPEN_PAM/* * If you want to dynamically load libpam using dlopen() or something, * then dlopen( ' this shared object ' ); It takes care of exporting * the right symbols to any modules loaded by libpam. * * Modified by JY for use with openvpn-pam-auth */#include <stdio.h>#include <dlfcn.h>#include <security/pam_appl.h>#include <security/_pam_macros.h>#include "pamdl.h"static void *libpam_h = NULL;#define RESOLVE_PAM_FUNCTION(x, y, z, err) \    { \        union { const void *tpointer; y (*fn) z ; } fptr; \	fptr.tpointer = dlsym(libpam_h, #x); real_##x = fptr.fn; \	if (real_##x == NULL) { \	    fprintf (stderr, "PAMDL: unable to resolve '%s': %s\n", #x, dlerror()); \	    return err; \	} \    }intdlopen_pam (const char *so){  if (libpam_h == NULL)    {      libpam_h = dlopen(so, RTLD_GLOBAL|RTLD_NOW);    }  return libpam_h != NULL;}voiddlclose_pam (void){  if (libpam_h != NULL)    {      dlclose(libpam_h);      libpam_h = NULL;    }}int pam_start(const char *service_name, const char *user,	      const struct pam_conv *pam_conversation,	      pam_handle_t **pamh){    int (*real_pam_start)(const char *, const char *,				 const struct pam_conv *,				 pam_handle_t **);    RESOLVE_PAM_FUNCTION(pam_start, int, (const char *, const char *,					  const struct pam_conv *,					  pam_handle_t **), PAM_ABORT);    return real_pam_start(service_name, user, pam_conversation, pamh);}int pam_end(pam_handle_t *pamh, int pam_status){    int (*real_pam_end)(pam_handle_t *, int);    RESOLVE_PAM_FUNCTION(pam_end, int, (pam_handle_t *, int), PAM_ABORT);    return real_pam_end(pamh, pam_status);}int pam_set_item(pam_handle_t *pamh, int item_type, const void *item){    int (*real_pam_set_item)(pam_handle_t *, int, const void *);    RESOLVE_PAM_FUNCTION(pam_set_item, int,			 (pam_handle_t *, int, const void *), PAM_ABORT);    return real_pam_set_item(pamh, item_type, item);}int pam_get_item(const pam_handle_t *pamh, int item_type, const void **item){    int (*real_pam_get_item)(const pam_handle_t *, int, const void **);    RESOLVE_PAM_FUNCTION(pam_get_item, int,			 (const pam_handle_t *, int, const void **),			 PAM_ABORT);    return real_pam_get_item(pamh, item_type, item);}int pam_fail_delay(pam_handle_t *pamh, unsigned int musec_delay){    int (*real_pam_fail_delay)(pam_handle_t *, unsigned int);    RESOLVE_PAM_FUNCTION(pam_fail_delay, int, (pam_handle_t *, unsigned int),			 PAM_ABORT);    return real_pam_fail_delay(pamh, musec_delay);}typedef const char * const_char_pointer;const_char_pointer pam_strerror(pam_handle_t *pamh, int errnum){    const_char_pointer (*real_pam_strerror)(pam_handle_t *, int);    RESOLVE_PAM_FUNCTION(pam_strerror, const_char_pointer,			 (pam_handle_t *, int), NULL);    return real_pam_strerror(pamh, errnum);}int pam_putenv(pam_handle_t *pamh, const char *name_value){    int (*real_pam_putenv)(pam_handle_t *, const char *);    RESOLVE_PAM_FUNCTION(pam_putenv, int, (pam_handle_t *, const char *),			 PAM_ABORT);    return real_pam_putenv(pamh, name_value);}const_char_pointer pam_getenv(pam_handle_t *pamh, const char *name){    const_char_pointer (*real_pam_getenv)(pam_handle_t *, const char *);    RESOLVE_PAM_FUNCTION(pam_getenv, const_char_pointer,			 (pam_handle_t *, const char *), NULL);    return real_pam_getenv(pamh, name);}typedef char ** char_ppointer;char_ppointer pam_getenvlist(pam_handle_t *pamh){    char_ppointer (*real_pam_getenvlist)(pam_handle_t *);    RESOLVE_PAM_FUNCTION(pam_getenvlist, char_ppointer, (pam_handle_t *),			 NULL);    return real_pam_getenvlist(pamh);}/* Authentication management */int pam_authenticate(pam_handle_t *pamh, int flags){    int (*real_pam_authenticate)(pam_handle_t *, int);    RESOLVE_PAM_FUNCTION(pam_authenticate, int, (pam_handle_t *, int),			 PAM_ABORT);    return real_pam_authenticate(pamh, flags);}int pam_setcred(pam_handle_t *pamh, int flags){    int (*real_pam_setcred)(pam_handle_t *, int);    RESOLVE_PAM_FUNCTION(pam_setcred, int, (pam_handle_t *, int), PAM_ABORT);    return real_pam_setcred(pamh, flags);}/* Account Management API's */int pam_acct_mgmt(pam_handle_t *pamh, int flags){    int (*real_pam_acct_mgmt)(pam_handle_t *, int);    RESOLVE_PAM_FUNCTION(pam_acct_mgmt, int, (pam_handle_t *, int), PAM_ABORT);    return real_pam_acct_mgmt(pamh, flags);}/* Session Management API's */int pam_open_session(pam_handle_t *pamh, int flags){    int (*real_pam_open_session)(pam_handle_t *, int);    RESOLVE_PAM_FUNCTION(pam_open_session, int, (pam_handle_t *, int),			 PAM_ABORT);    return real_pam_open_session(pamh, flags);}int pam_close_session(pam_handle_t *pamh, int flags){    int (*real_pam_close_session)(pam_handle_t *, int);    RESOLVE_PAM_FUNCTION(pam_close_session, int, (pam_handle_t *, int),			 PAM_ABORT);    return real_pam_close_session(pamh, flags);}/* Password Management API's */int pam_chauthtok(pam_handle_t *pamh, int flags){    int (*real_pam_chauthtok)(pam_handle_t *, int);    RESOLVE_PAM_FUNCTION(pam_chauthtok, int, (pam_handle_t *, int), PAM_ABORT);    return real_pam_chauthtok(pamh, flags);}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情五月婷婷综合| 成人小视频在线| 欧美电影精品一区二区| 国产成人一区二区精品非洲| ...中文天堂在线一区| 欧美日韩精品欧美日韩精品一 | 亚洲一区在线视频| 欧美精品一区在线观看| 色哟哟国产精品| 国产丶欧美丶日本不卡视频| 天使萌一区二区三区免费观看| 欧美极品另类videosde| 欧美一级高清片| 欧美色图片你懂的| 不卡的看片网站| 看片的网站亚洲| 日日夜夜免费精品视频| 一区二区在线观看免费| 国产精品色哟哟网站| 久久久久久一二三区| 欧美一区二区三区在线电影| 在线观看日韩一区| 99久精品国产| 丁香婷婷综合五月| 国产在线看一区| 久久草av在线| 日韩精品免费专区| 亚洲成人av福利| 亚洲午夜久久久久久久久电影院| 国产精品女主播av| 国产女主播视频一区二区| 久久美女艺术照精彩视频福利播放| 欧美一级片免费看| 91麻豆精品国产自产在线观看一区| 欧美体内she精高潮| 色婷婷av一区二区三区大白胸 | 美女视频免费一区| 日韩电影免费在线| 日本一不卡视频| 男女男精品视频| 久久不见久久见中文字幕免费| 99国内精品久久| 国产乱码精品1区2区3区| 一区二区国产视频| 亚洲欧美视频一区| 亚洲综合区在线| 一级精品视频在线观看宜春院 | 国产精品久久久久久久浪潮网站 | 成人激情av网| 国产一区二区三区观看| 极品少妇xxxx精品少妇| 美女视频第一区二区三区免费观看网站| 偷拍自拍另类欧美| 免费在线观看视频一区| 九九**精品视频免费播放| 国产一区二区三区四区五区入口| 国产精品亚洲成人| 91在线小视频| 日韩一级大片在线| 岛国av在线一区| 成人国产精品视频| 日本高清不卡视频| 欧美日韩国产综合视频在线观看| 欧美一级在线观看| 国产性色一区二区| 亚洲裸体xxx| 日韩国产欧美三级| 国产高清不卡二三区| 91美女在线视频| 7878成人国产在线观看| 久久久亚洲欧洲日产国码αv| 中文子幕无线码一区tr| 亚洲情趣在线观看| 日本欧美一区二区| 成人晚上爱看视频| 欧美美女黄视频| 久久丝袜美腿综合| 亚洲黄色小视频| 久久激情五月激情| 99免费精品视频| 欧美日韩五月天| 久久久久久久电影| 亚洲成人自拍偷拍| 丰满少妇在线播放bd日韩电影| 91理论电影在线观看| 日韩欧美一级片| 亚洲欧美日韩在线| 精品一区二区三区免费| 色av综合在线| 国产性天天综合网| 午夜欧美电影在线观看| 粉嫩aⅴ一区二区三区四区五区| 欧美视频一区二| 欧美—级在线免费片| 日韩高清欧美激情| 91老师片黄在线观看| 日韩精品一区二区三区视频播放| 1000部国产精品成人观看| 欧美a一区二区| 91年精品国产| 国产午夜精品美女毛片视频| 日韩电影一区二区三区四区| 91亚洲精华国产精华精华液| 日韩精品专区在线影院重磅| 一区二区三区四区视频精品免费| 狠狠色伊人亚洲综合成人| 在线视频欧美精品| 国产精品色在线| 激情国产一区二区 | 欧美三级电影精品| 国产欧美日韩激情| 韩国av一区二区三区四区| 欧美情侣在线播放| 亚洲一区二区三区爽爽爽爽爽| 成人免费视频app| 精品久久久久久无| 麻豆91精品91久久久的内涵| 欧美日韩综合在线免费观看| 亚洲欧洲三级电影| 99久久伊人久久99| 国产日韩欧美a| 国产麻豆精品95视频| 精品国偷自产国产一区| 日本不卡视频在线观看| 欧美精品在线观看一区二区| 亚洲国产视频在线| 欧美在线视频全部完| 亚洲人被黑人高潮完整版| 99久久99久久精品国产片果冻| 欧美国产综合一区二区| 国产精品一区一区三区| 国产亚洲精品7777| 国产成人欧美日韩在线电影 | 亚洲一区在线观看网站| 91免费视频观看| 亚洲精品成人精品456| 97久久久精品综合88久久| 中文字幕亚洲综合久久菠萝蜜| 国产成人av电影| 国产欧美一区二区在线| 东方aⅴ免费观看久久av| 欧美激情在线一区二区| 成人app在线| 自拍偷拍亚洲激情| 97国产精品videossex| 亚洲免费电影在线| 精品视频在线免费观看| 日本亚洲欧美天堂免费| 日韩视频在线你懂得| 狠狠狠色丁香婷婷综合久久五月| 欧美精品一区二区三区蜜桃视频 | 国产欧美日韩卡一| 99九九99九九九视频精品| 一区二区在线观看免费| 欧美老肥妇做.爰bbww视频| 蜜芽一区二区三区| 久久久99精品免费观看| av一区二区三区四区| 亚洲国产日韩综合久久精品| 4438x成人网最大色成网站| 麻豆91在线播放| 国产精品天干天干在观线| 一本一道综合狠狠老| 日韩有码一区二区三区| 久久先锋影音av| 成av人片一区二区| 亚洲成人av中文| 久久这里只有精品6| 91污片在线观看| 日本女人一区二区三区| 国产日韩影视精品| 在线精品视频一区二区| 激情综合亚洲精品| 亚洲免费毛片网站| 日韩欧美国产电影| 成人开心网精品视频| 午夜精品国产更新| 国产丝袜在线精品| 欧美日韩1区2区| 国产mv日韩mv欧美| 亚洲国产精品久久艾草纯爱| 久久蜜桃av一区二区天堂| 在线观看免费亚洲| 国产精品一区在线观看你懂的| 一区二区三区电影在线播| 精品国产91洋老外米糕| 色婷婷国产精品综合在线观看| 精品一区二区三区香蕉蜜桃 | 一区二区三区中文字幕| 欧美大片一区二区| 色欧美日韩亚洲| 黄页视频在线91| 午夜免费久久看| 亚洲天堂av老司机| 欧美精品一区男女天堂| 欧美日韩一区二区在线视频| 粉嫩aⅴ一区二区三区四区五区 | 日本不卡123| 亚洲精品国产一区二区精华液| 精品美女在线观看|