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

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

?? squid_ldap_auth.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * squid_ldap_auth: authentication via ldap for squid proxy server *  * Authors: * Henrik Nordstrom * hno@squid-cache.org * * Glen Newton  * glen.newton@nrc.ca * Advanced Services  * CISTI * National Research Council * * with contributions from others mentioned in the Changes section below *  * Usage: squid_ldap_auth -b basedn [-s searchscope] *                        [-f searchfilter] [-D binddn -w bindpasswd] *                        [-u attr] [-h host] [-p port] [-P] [-R] [ldap_server_name[:port]] ... *  * Dependencies: You need to get the OpenLDAP libraries * from http://www.openldap.org or another compatible LDAP C-API * implementation. * * If you want to make a TLS enabled connection you will also need the * OpenSSL libraries linked into openldap. See http://www.openssl.org/ *  * License: squid_ldap_auth is free software; you can redistribute it  * and/or modify it under the terms of the GNU General Public License  * as published by the Free Software Foundation; either version 2,  * or (at your option) any later version. * * Changes: * 2005-01-07: Henrik Nordstrom <hno@squid-cache.org> *             - Added some sanity checks on login names to avoid *               users bypassing equality checks by exploring the *               overly helpful match capabilities of LDAP * 2004-07-17: Henrik Nordstrom <hno@squid-cache.org> *             - Corrected non-persistent mode to only issue one *               ldap_bind per connection. *             - -U option to compare the users password rather *               than binding. * 2004-03-01: Henrik Nordstrom <hno@squid-cache.org> *             - corrected building of search filters to escape *               unsafe input *             - -d option for "debug" like squid_ldap_group * 2004-01-05: Henrik Nordstrom <hno@squid-cache.org> *             - Corrected TLS mode * 2003-03-01: David J N Begley *             - Support for Netscape API method of ldap over SSL *               connections *             - Timeout option for better recovery when using *               multiple LDAP servers * 2003-03-01: Christoph Lechleitner <lech@ibcl.at> *             - Added -W option to read bindpasswd from file * 2003-03-01: Juerg Michel *             - Added support for ldap URI via the -H option *               (requires OpenLDAP) * 2001-12-12: Michael Cunningham <m.cunningham@xpedite.com> *             - Added TLS support and partial ldap version 3 support.  * 2001-10-04: Henrik Nordstrom <hno@squid-cache.org> *             - Be consistent with the other helpers in how *               spaces are managed. If there is space characters *               then these are assumed to be part of the password * 2001-09-05: Henrik Nordstrom <hno@squid-cache.org> *             - Added ability to specify another default LDAP port to *               connect to. Persistent connections moved to -P * 2001-05-02: Henrik Nordstrom <hno@squid-cache.org> *             - Support newer OpenLDAP 2.x libraries using the *               revised Internet Draft API which unfortunately *               is not backwards compatible with RFC1823.. * 2001-04-15: Henrik Nordstrom <hno@squid-cache.org> *             - Added command line option for basedn *             - Added the ability to search for the user DN * 2001-04-16: Henrik Nordstrom <hno@squid-cache.org> *             - Added -D binddn -w bindpasswd. * 2001-04-17: Henrik Nordstrom <hno@squid-cache.org> *             - Added -R to disable referrals *             - Added -a to control alias dereferencing * 2001-04-17: Henrik Nordstrom <hno@squid-cache.org> *             - Added -u, DN username attribute name * 2001-04-18: Henrik Nordstrom <hno@squid-cache.org> *             - Allow full filter specifications in -f */#define LDAP_DEPRECATED 1#include "util.h"#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#ifdef _SQUID_MSWIN_		/* Native Windows port and MinGW */#define snprintf _snprintf#include <windows.h>#include <winldap.h>#ifndef LDAPAPI#define LDAPAPI __cdecl#endif#ifdef LDAP_VERSION3#ifndef LDAP_OPT_X_TLS#define LDAP_OPT_X_TLS 0x6000#endif/* Some tricks to allow dynamic bind with ldap_start_tls_s entry point at * run time. */#undef ldap_start_tls_s#if LDAP_UNICODE#define LDAP_START_TLS_S "ldap_start_tls_sW"typedef WINLDAPAPI ULONG(LDAPAPI * PFldap_start_tls_s) (IN PLDAP, OUT PULONG, OUT LDAPMessage **, IN PLDAPControlW *, IN PLDAPControlW *);#else#define LDAP_START_TLS_S "ldap_start_tls_sA"typedef WINLDAPAPI ULONG(LDAPAPI * PFldap_start_tls_s) (IN PLDAP, OUT PULONG, OUT LDAPMessage **, IN PLDAPControlA *, IN PLDAPControlA *);#endif /* LDAP_UNICODE */PFldap_start_tls_s Win32_ldap_start_tls_s;#define ldap_start_tls_s(l,s,c) Win32_ldap_start_tls_s(l,NULL,NULL,s,c)#endif /* LDAP_VERSION3 */#else#include <lber.h>#include <ldap.h>#endif#define PROGRAM_NAME "squid_ldap_auth"/* Global options */static const char *basedn;static const char *searchfilter = NULL;static const char *binddn = NULL;static const char *bindpasswd = NULL;static const char *userattr = "uid";static const char *passwdattr = NULL;static int searchscope = LDAP_SCOPE_SUBTREE;static int persistent = 0;static int bind_once = 0;static int noreferrals = 0;static int aliasderef = LDAP_DEREF_NEVER;#if defined(NETSCAPE_SSL)static const char *sslpath = NULL;static int sslinit = 0;#endifstatic int connect_timeout = 0;static int timelimit = LDAP_NO_LIMIT;static int debug = 0;/* Added for TLS support and version 3 */static int use_tls = 0;static int version = -1;static int checkLDAP(LDAP * ld, const char *userid, const char *password, const char *server, int port);static int readSecret(const char *filename);/* Yuck.. we need to glue to different versions of the API */#ifndef LDAP_NO_ATTRS#define LDAP_NO_ATTRS "1.1"#endif#if defined(LDAP_API_VERSION) && LDAP_API_VERSION > 1823static intsquid_ldap_errno(LDAP * ld){    int err = 0;    ldap_get_option(ld, LDAP_OPT_ERROR_NUMBER, &err);    return err;}static voidsquid_ldap_set_aliasderef(LDAP * ld, int deref){    ldap_set_option(ld, LDAP_OPT_DEREF, &deref);}static voidsquid_ldap_set_referrals(LDAP * ld, int referrals){    int *value = referrals ? LDAP_OPT_ON : LDAP_OPT_OFF;    ldap_set_option(ld, LDAP_OPT_REFERRALS, value);}static voidsquid_ldap_set_timelimit(LDAP * ld, int timelimit){    ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &timelimit);}static voidsquid_ldap_set_connect_timeout(LDAP * ld, int timelimit){#if defined(LDAP_OPT_NETWORK_TIMEOUT)    struct timeval tv;    tv.tv_sec = timelimit;    tv.tv_usec = 0;    ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, &tv);#elif defined(LDAP_X_OPT_CONNECT_TIMEOUT)    timelimit *= 1000;    ldap_set_option(ld, LDAP_X_OPT_CONNECT_TIMEOUT, &timelimit);#endif}static voidsquid_ldap_memfree(char *p){    ldap_memfree(p);}#elsestatic intsquid_ldap_errno(LDAP * ld){    return ld->ld_errno;}static voidsquid_ldap_set_aliasderef(LDAP * ld, int deref){    ld->ld_deref = deref;}static voidsquid_ldap_set_referrals(LDAP * ld, int referrals){    if (referrals)	ld->ld_options |= ~LDAP_OPT_REFERRALS;    else	ld->ld_options &= ~LDAP_OPT_REFERRALS;}static voidsquid_ldap_set_timelimit(LDAP * ld, int timelimit){    ld->ld_timelimit = timelimit;}static voidsquid_ldap_set_connect_timeout(LDAP * ld, int timelimit){    fprintf(stderr, "Connect timeouts not supported in your LDAP library\n");}static voidsquid_ldap_memfree(char *p){    free(p);}#endif#ifdef LDAP_API_FEATURE_X_OPENLDAP#if LDAP_VENDOR_VERSION > 194#define HAS_URI_SUPPORT 1#endif#endifstatic LDAP *open_ldap_connection(const char *ldapServer, int port){    LDAP *ld = NULL;#if HAS_URI_SUPPORT    if (strstr(ldapServer, "://") != NULL) {	int rc = ldap_initialize(&ld, ldapServer);	if (rc != LDAP_SUCCESS) {	    fprintf(stderr, "\nUnable to connect to LDAPURI:%s\n", ldapServer);	    exit(1);	}    } else#endif#if NETSCAPE_SSL    if (sslpath) {	if (!sslinit && (ldapssl_client_init(sslpath, NULL) != LDAP_SUCCESS)) {	    fprintf(stderr, "\nUnable to initialise SSL with cert path %s\n",		sslpath);	    exit(1);	} else {	    sslinit++;	}	if ((ld = ldapssl_init(ldapServer, port, 1)) == NULL) {	    fprintf(stderr, "\nUnable to connect to SSL LDAP server: %s port:%d\n",		ldapServer, port);	    exit(1);	}    } else#endif    if ((ld = ldap_init(ldapServer, port)) == NULL) {	fprintf(stderr, "\nUnable to connect to LDAP server:%s port:%d\n",	    ldapServer, port);	exit(1);    }    if (connect_timeout)	squid_ldap_set_connect_timeout(ld, connect_timeout);#ifdef LDAP_VERSION3    if (version == -1) {	version = LDAP_VERSION2;    }    if (ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &version) != LDAP_SUCCESS) {	fprintf(stderr, "Could not set LDAP_OPT_PROTOCOL_VERSION %d\n",	    version);	exit(1);    }    if (use_tls) {#ifdef LDAP_OPT_X_TLS	if (version != LDAP_VERSION3) {	    fprintf(stderr, "TLS requires LDAP version 3\n");	    exit(1);	} else if (ldap_start_tls_s(ld, NULL, NULL) != LDAP_SUCCESS) {	    fprintf(stderr, "Could not Activate TLS connection\n");	    exit(1);	}#else	fprintf(stderr, "TLS not supported with your LDAP library\n");	exit(1);#endif    }#endif    squid_ldap_set_timelimit(ld, timelimit);    squid_ldap_set_referrals(ld, !noreferrals);    squid_ldap_set_aliasderef(ld, aliasderef);    return ld;}/* Make a sanity check on the username to reject oddly typed names */static intvalidUsername(const char *user){    const unsigned char *p = (const unsigned char *) user;    /* Leading whitespace? */    if (xisspace(p[0]))	return 0;    while (p[0] && p[1]) {	if (xisspace(p[0])) {	    /* More than one consequitive space? */	    if (xisspace(p[1]))		return 0;	    /* or odd space type character used? */	    if (p[0] != ' ')		return 0;	}	p++;    }    /* Trailing whitespace? */    if (xisspace(p[0]))	return 0;    return 1;}intmain(int argc, char **argv){    char buf[1024];    char *user, *passwd;    char *ldapServer = NULL;    LDAP *ld = NULL;    int tryagain;    int port = LDAP_PORT;    setbuf(stdout, NULL);    while (argc > 1 && argv[1][0] == '-') {	const char *value = "";	char option = argv[1][1];	switch (option) {	case 'P':	case 'R':	case 'z':	case 'Z':	case 'd':	case 'O':	    break;	default:	    if (strlen(argv[1]) > 2) {		value = argv[1] + 2;	    } else if (argc > 2) {		value = argv[2];		argv++;		argc--;	    } else		value = "";	    break;	}	argv++;	argc--;	switch (option) {	case 'H':#if !HAS_URI_SUPPORT	    fprintf(stderr, "ERROR: Your LDAP library does not have URI support\n");	    exit(1);#endif	    /* Fall thru to -h */	case 'h':	    if (ldapServer) {		int len = strlen(ldapServer) + 1 + strlen(value) + 1;		char *newhost = malloc(len);		snprintf(newhost, len, "%s %s", ldapServer, value);		free(ldapServer);		ldapServer = newhost;	    } else {		ldapServer = strdup(value);	    }	    break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大片一区二区| 亚洲精品日日夜夜| 亚洲一区二区三区中文字幕在线| 免费观看一级欧美片| 91小视频免费看| 久久女同精品一区二区| 日韩专区在线视频| 97久久精品人人做人人爽50路| 精品久久久久久久一区二区蜜臀| 亚洲成av人片一区二区梦乃| 波多野结衣中文字幕一区二区三区| 欧美大胆人体bbbb| 日韩国产欧美在线观看| 欧美在线999| 蜜桃久久久久久久| 在线免费观看成人短视频| 国产欧美精品国产国产专区| 蓝色福利精品导航| 91精品黄色片免费大全| 午夜欧美在线一二页| 欧美伊人久久久久久午夜久久久久| 欧美国产精品一区二区| 国产精品一区二区不卡| 久久综合色8888| 国产精品一区二区在线观看不卡| 精品99一区二区三区| 久久av老司机精品网站导航| 日韩午夜电影在线观看| 日本aⅴ亚洲精品中文乱码| 欧美久久久久久久久久| 三级久久三级久久| 欧美一区在线视频| 看片的网站亚洲| 精品久久人人做人人爰| 国产美女av一区二区三区| 久久只精品国产| 国产精品综合二区| 中文字幕va一区二区三区| 成人午夜精品在线| 亚洲区小说区图片区qvod| 在线国产电影不卡| 五月天丁香久久| 日韩一区二区三区四区五区六区| 久久精品国产一区二区三区免费看 | 精品国产一区二区在线观看| 麻豆精品久久久| 久久久久久久久伊人| 国产成人在线网站| 亚洲欧美经典视频| 在线观看91av| 国产一区激情在线| 中文字幕一区二| 欧美日韩在线免费视频| 久国产精品韩国三级视频| 欧美极品少妇xxxxⅹ高跟鞋| 91社区在线播放| 日韩av不卡一区二区| 国产三级欧美三级日产三级99| 成人短视频下载| 日韩av成人高清| 国产精品的网站| 91精品一区二区三区久久久久久| 韩国精品主播一区二区在线观看| 亚洲欧美一区二区在线观看| 欧美一区二区女人| eeuss鲁片一区二区三区在线观看| 亚洲一区二区视频| 欧美国产日韩亚洲一区| 欧美人与禽zozo性伦| 国产一区三区三区| 亚洲综合视频在线观看| 欧美精品一区二区在线观看| 91电影在线观看| 国产高清久久久久| 免费一级片91| 亚洲国产精品久久久久秋霞影院 | 五月天欧美精品| 国产精品久线在线观看| 欧美一区二区三区免费在线看| 丰满放荡岳乱妇91ww| 青青国产91久久久久久| 亚洲人快播电影网| 久久久亚洲欧洲日产国码αv| 欧美亚洲国产怡红院影院| 成人免费高清在线| 黄一区二区三区| 亚洲电影一区二区三区| 中文字幕不卡在线| 久久免费看少妇高潮| 91精品国产高清一区二区三区 | 成人精品一区二区三区中文字幕| 亚洲成人av中文| 亚洲欧美日韩久久| 国产午夜三级一区二区三| 日韩欧美综合一区| 欧美色图在线观看| 日本乱人伦一区| 99久久国产综合精品色伊| 国产一区二区三区免费看| 丝袜a∨在线一区二区三区不卡| 亚洲精品欧美综合四区| 国产精品女主播av| 国产免费成人在线视频| 久久综合国产精品| 精品成人在线观看| 精品福利av导航| 精品99999| 久久综合久久综合亚洲| 精品免费视频.| 久久亚洲精品国产精品紫薇| 精品剧情v国产在线观看在线| 3d动漫精品啪啪一区二区竹菊| 欧美揉bbbbb揉bbbbb| 欧美日韩一二三| 欧美日韩在线三区| 欧美精品久久一区二区三区| 欧美理论电影在线| 欧美一区国产二区| 日韩欧美电影一区| 精品国产伦理网| 中文在线免费一区三区高中清不卡| 久久久亚洲国产美女国产盗摄| 久久先锋影音av| 国产欧美日韩不卡免费| 国产精品久久久久久亚洲毛片| 中文字幕在线免费不卡| 亚洲精品伦理在线| 午夜a成v人精品| 狠狠色伊人亚洲综合成人| 国产精品一级黄| 97精品国产97久久久久久久久久久久| 97久久精品人人澡人人爽| 欧美三区在线视频| 精品国产污网站| 国产精品污网站| 一区二区在线观看不卡| 日日夜夜精品视频天天综合网| 久久国产精品72免费观看| 国产精品一级片在线观看| 91麻豆国产精品久久| 欧美二区三区的天堂| 久久久午夜精品| 亚洲精品国产成人久久av盗摄| 视频一区在线播放| 成人听书哪个软件好| 91网页版在线| 精品国产一区二区三区忘忧草| 成人欧美一区二区三区| 日韩电影在线观看一区| 国产成人精品一区二区三区网站观看| 日本精品一区二区三区高清 | 日韩成人免费看| 国产精品一区二区x88av| 欧美综合一区二区| 精品美女一区二区| 亚洲欧美日韩国产手机在线| 麻豆精品久久精品色综合| aaa欧美日韩| 精品国产一区二区精华| 亚洲一区在线观看视频| 久久国产三级精品| 欧美日韩精品三区| 国产精品久久一级| 久久精品国产精品亚洲精品 | 成人国产亚洲欧美成人综合网| 欧美军同video69gay| 国产日本欧美一区二区| 天天影视涩香欲综合网| 91美女视频网站| 国产欧美日韩视频在线观看| 人人超碰91尤物精品国产| 一本久道久久综合中文字幕| 久久九九久久九九| 久久国产福利国产秒拍| 欧美色图免费看| 亚洲天堂网中文字| 国产精品66部| 精品国产一二三区| 日韩av网站在线观看| 欧美色窝79yyyycom| 尤物视频一区二区| 99精品视频在线观看| 国产精品久久久久一区二区三区共| 国产在线精品国自产拍免费| 6080亚洲精品一区二区| 亚洲国产精品视频| 色网站国产精品| 亚洲精品欧美二区三区中文字幕| www.成人网.com| 国产清纯在线一区二区www| 国产一区91精品张津瑜| 久久夜色精品国产欧美乱极品| 免费在线观看视频一区| 欧美一区二区三区精品| 日韩av一二三| 日韩视频123| 久久se精品一区二区| 欧美大胆人体bbbb| 国产九色精品成人porny| 久久久久久9999|