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

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

?? auth_negotiate.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號:
static voidauthNegotiateAURequestFree(auth_user_request_t * auth_user_request){    if (auth_user_request->scheme_data)	authNegotiateRequestFree((negotiate_request_t *) auth_user_request->scheme_data);    auth_user_request->scheme_data = NULL;}static voidauthenticateNegotiateFreeUser(auth_user_t * auth_user){    negotiate_user_t *negotiate_user = auth_user->scheme_data;    debug(29, 5) ("authenticateNegotiateFreeUser: Clearing Negotiate scheme data\n");    safe_free(negotiate_user->username);    memPoolFree(negotiate_user_pool, negotiate_user);    auth_user->scheme_data = NULL;}/* clear the Negotiate helper of being reserved for future requests */static voidauthenticateNegotiateReleaseServer(negotiate_request_t * negotiate_request){    helper_stateful_server *server = negotiate_request->authserver;    if (!server)	return;    debug(29, 9) ("authenticateNegotiateReleaseServer: releasing server '%p'\n", server);    negotiate_request->authserver = NULL;    helperStatefulReleaseServer(server);}static voidauthenticateNegotiateHandleReply(void *data, void *srv, char *reply){    authenticateStateData *r = data;    int valid;    auth_user_request_t *auth_user_request;    auth_user_t *auth_user;    negotiate_user_t *negotiate_user;    negotiate_request_t *negotiate_request;    char *blob, *arg;    debug(29, 9) ("authenticateNegotiateHandleReply: Helper: '%p' {%s}\n", srv, reply ? reply : "<NULL>");    valid = cbdataValid(r->data);    if (!valid) {	debug(29, 2) ("AuthenticateNegotiateHandleReply: invalid callback data. Releasing helper '%p'.\n", srv);	negotiate_request = r->auth_user_request->scheme_data;	if (negotiate_request != NULL) {	    if (negotiate_request->authserver == NULL)		negotiate_request->authserver = srv;	    authenticateNegotiateReleaseServer(negotiate_request);	}	cbdataUnlock(r->data);	authenticateStateFree(r);	return;    }    if (!reply) {	debug(29, 1) ("AuthenticateNegotiateHandleReply: Helper '%p' crashed!.\n", srv);	reply = (char *) "BH Internal error";    }    auth_user_request = r->auth_user_request;    negotiate_request = auth_user_request->scheme_data;    assert(negotiate_request != NULL);    assert(negotiate_request->waiting);    negotiate_request->waiting = 0;    safe_free(negotiate_request->client_blob);    auth_user = auth_user_request->auth_user;    assert(auth_user != NULL);    assert(auth_user->auth_type == AUTH_NEGOTIATE);    negotiate_user = auth_user_request->auth_user->scheme_data;    if (negotiate_request->authserver == NULL)	negotiate_request->authserver = srv;    else	assert(negotiate_request->authserver == srv);    /* seperate out the useful data */    blob = strchr(reply, ' ');    if (blob) {	blob++;	arg = strchr(blob + 1, ' ');    } else {	arg = NULL;    }    if (strncasecmp(reply, "TT ", 3) == 0) {	/* we have been given a blob to send to the client */	if (arg)	    *arg++ = '\0';	safe_free(negotiate_request->server_blob);	negotiate_request->request->flags.must_keepalive = 1;	if (negotiate_request->request->flags.proxy_keepalive) {	    negotiate_request->server_blob = xstrdup(blob);	    negotiate_request->auth_state = AUTHENTICATE_STATE_NEGOTIATE;	    safe_free(auth_user_request->message);	    auth_user_request->message = xstrdup("Authentication in progress");	    debug(29, 4) ("authenticateNegotiateHandleReply: Need to challenge the client with a server blob '%s'\n", blob);	} else {	    negotiate_request->auth_state = AUTHENTICATE_STATE_FAILED;	    safe_free(auth_user_request->message);	    auth_user_request->message = xstrdup("NTLM authentication requires a persistent connection");	}    } else if (strncasecmp(reply, "AF ", 3) == 0 && arg != NULL) {	auth_user_hash_pointer *usernamehash;	/* we're finished, release the helper */	if (arg)	    *arg++ = '\0';	safe_free(negotiate_user->username);	negotiate_user->username = xstrdup(arg);	safe_free(auth_user_request->message);	auth_user_request->message = xstrdup("Login successful");	safe_free(negotiate_request->server_blob);	negotiate_request->server_blob = xstrdup(blob);	debug(29, 4) ("authenticateNegotiateHandleReply: Successfully validated user via Negotiate. Username '%s'\n", arg);	/* this connection is authenticated */	debug(29, 4) ("authenticated user %s\n", negotiate_user->username);	/* see if this is an existing user with a different proxy_auth 	 * string */	usernamehash = hash_lookup(proxy_auth_username_cache, negotiate_user->username);	if (usernamehash) {	    while (usernamehash && (usernamehash->auth_user->auth_type != auth_user->auth_type || authenticateNegotiatecmpUsername(usernamehash->auth_user->scheme_data, negotiate_user) != 0))		usernamehash = usernamehash->next;	}	if (usernamehash) {	    /* we can't seamlessly recheck the username due to the 	     * challenge nature of the protocol. Just free the 	     * temporary auth_user */	    authenticateAuthUserMerge(auth_user, usernamehash->auth_user);	    auth_user = usernamehash->auth_user;	    auth_user_request->auth_user = auth_user;	} else {	    /* store user in hash's */	    authenticateUserNameCacheAdd(auth_user);	}	/* set these to now because this is either a new login from an 	 * existing user or a new user */	auth_user->expiretime = current_time.tv_sec;	authenticateNegotiateReleaseServer(negotiate_request);	negotiate_request->auth_state = AUTHENTICATE_STATE_DONE;    } else if (strncasecmp(reply, "NA ", 3) == 0 && arg != NULL) {	if (arg)	    *arg++ = '\0';	safe_free(auth_user_request->message);	auth_user_request->message = xstrdup(arg);	negotiate_request->auth_state = AUTHENTICATE_STATE_FAILED;	safe_free(negotiate_request->server_blob);	negotiate_request->server_blob = xstrdup(blob);	authenticateNegotiateReleaseServer(negotiate_request);	debug(29, 4) ("authenticateNegotiateHandleReply: Failed validating user via Negotiate. Error returned '%s'\n", arg);    } else if (strncasecmp(reply, "BH ", 3) == 0) {	/* TODO kick off a refresh process. This can occur after a YR or after	 * a KK. If after a YR release the helper and resubmit the request via 	 * Authenticate Negotiate start. 	 * If after a KK deny the user's request w/ 407 and mark the helper as 	 * Needing YR. */	auth_user_request->message = xstrdup(blob);	negotiate_request->auth_state = AUTHENTICATE_STATE_FAILED;	safe_free(negotiate_request->server_blob);	authenticateNegotiateReleaseServer(negotiate_request);	debug(29, 1) ("authenticateNegotiateHandleReply: Error validating user via Negotiate. Error returned '%s'\n", reply);    } else {	fatalf("authenticateNegotiateHandleReply: *** Unsupported helper response ***, '%s'\n", reply);    }    requestUnlink(negotiate_request->request);    negotiate_request->request = NULL;    r->handler(r->data, NULL);    cbdataUnlock(r->data);    authenticateStateFree(r);}static voidauthenticateNegotiateStats(StoreEntry * sentry){    storeAppendPrintf(sentry, "Negotiate Authenticator Statistics:\n");    helperStatefulStats(sentry, negotiateauthenticators);}/* send the initial data to a stateful negotiate authenticator module */static voidauthenticateNegotiateStart(auth_user_request_t * auth_user_request, RH * handler, void *data){    authenticateStateData *r = NULL;    char buf[8192];    char *sent_string = NULL;    negotiate_user_t *negotiate_user;    negotiate_request_t *negotiate_request;    auth_user_t *auth_user;    assert(auth_user_request);    auth_user = auth_user_request->auth_user;    negotiate_user = auth_user->scheme_data;    negotiate_request = auth_user_request->scheme_data;    assert(negotiate_user);    assert(negotiate_request);    assert(handler);    assert(data);    assert(auth_user->auth_type == AUTH_NEGOTIATE);    debug(29, 9) ("authenticateNegotiateStart: auth state '%d'\n", negotiate_request->auth_state);    sent_string = negotiate_request->client_blob;    debug(29, 9) ("authenticateNegotiateStart: state '%d'\n", negotiate_request->auth_state);    debug(29, 9) ("authenticateNegotiateStart: '%s'\n", sent_string);    if (negotiateConfig->authenticate == NULL) {	debug(29, 0) ("authenticateNegotiateStart: no Negotiate program specified:'%s'\n", sent_string);	handler(data, NULL);	return;    }    /* Send blob to helper */    r = cbdataAlloc(authenticateStateData);    r->handler = handler;    cbdataLock(data);    r->data = data;    r->auth_user_request = auth_user_request;    authenticateAuthUserRequestLock(r->auth_user_request);    if (negotiate_request->auth_state == AUTHENTICATE_STATE_INITIAL) {	snprintf(buf, 8192, "YR %s\n", sent_string);    } else {	snprintf(buf, 8192, "KK %s\n", sent_string);    }    negotiate_request->waiting = 1;    safe_free(negotiate_request->client_blob);    helperStatefulSubmit(negotiateauthenticators, buf, authenticateNegotiateHandleReply, r, negotiate_request->authserver);}/* clear any connection related authentication details */static voidauthenticateNegotiateOnCloseConnection(ConnStateData * conn){    negotiate_request_t *negotiate_request;    assert(conn != NULL);    if (conn->auth_user_request != NULL) {	assert(conn->auth_user_request->scheme_data != NULL);	negotiate_request = conn->auth_user_request->scheme_data;	assert(negotiate_request->conn == conn);	if (negotiate_request->authserver != NULL)	    authenticateNegotiateReleaseServer(negotiate_request);	/* unlock the connection based lock */	debug(29, 9) ("authenticateNegotiateOnCloseConnection: Unlocking auth_user from the connection.\n");	/* minor abstraction break here: FIXME */	/* Ensure that the auth user request will be getting closed */	/* IFF we start persisting the struct after the conn closes - say for logging	 * then this test may become invalid	 */	assert(conn->auth_user_request->references == 1);	authenticateAuthUserRequestUnlock(conn->auth_user_request);	conn->auth_user_request = NULL;    }}/* authenticateUserUsername: return a pointer to the username in the */static char *authenticateNegotiateUsername(auth_user_t * auth_user){    negotiate_user_t *negotiate_user = auth_user->scheme_data;    if (negotiate_user)	return negotiate_user->username;    return NULL;}/* * Called on the initial request only, to set things up for later processing */static voidauthenticateDecodeNegotiateAuth(auth_user_request_t * auth_user_request, const char *proxy_auth){    dlink_node *node;    assert(auth_user_request->auth_user == NULL);    auth_user_request->auth_user = authenticateAuthUserNew("negotiate");    auth_user_request->auth_user->auth_type = AUTH_NEGOTIATE;    auth_user_request->auth_user->scheme_data = memPoolAlloc(negotiate_user_pool);    auth_user_request->scheme_data = memPoolAlloc(negotiate_request_pool);    memset(auth_user_request->scheme_data, '\0', sizeof(negotiate_request_t));    /* lock for the auth_user_request link */    authenticateAuthUserLock(auth_user_request->auth_user);    node = dlinkNodeNew();    dlinkAdd(auth_user_request, node, &auth_user_request->auth_user->requests);    /* the helper does the rest, with data collected in     * authenticateNegotiateAuthenticateUser */    debug(29, 9) ("authenticateDecodeNegotiateAuth: Negotiate authentication\n");    return;}static intauthenticateNegotiatecmpUsername(negotiate_user_t * u1, negotiate_user_t * u2){    return strcmp(u1->username, u2->username);}static intauthNegotiateAuthenticated(auth_user_request_t * auth_user_request){    negotiate_request_t *negotiate_request = auth_user_request->scheme_data;    if (negotiate_request->auth_state == AUTHENTICATE_STATE_DONE)	return 1;    debug(29, 9) ("User not fully authenticated.\n");    return 0;}static voidauthenticateNegotiateAuthenticateUser(auth_user_request_t * auth_user_request, request_t * request, ConnStateData * conn, http_hdr_type type){    const char *proxy_auth, *blob;    auth_user_t *auth_user;    negotiate_request_t *negotiate_request;    negotiate_user_t *negotiate_user;    auth_user = auth_user_request->auth_user;    assert(auth_user);    assert(auth_user->auth_type == AUTH_NEGOTIATE);    assert(auth_user->scheme_data != NULL);    assert(auth_user_request->scheme_data != NULL);    negotiate_user = auth_user->scheme_data;    negotiate_request = auth_user_request->scheme_data;    /* Check that we are in the client side, where we can generate     * auth challenges */    if (!conn) {	negotiate_request->auth_state = AUTHENTICATE_STATE_FAILED;	debug(29, 1) ("authenticateNegotiateAuthenticateUser: attempt to perform authentication without a connection!\n");	return;    }    if (negotiate_request->waiting) {	debug(29, 1) ("authenticateNegotiateAuthenticateUser: waiting for helper reply!\n");	return;    }    if (negotiate_request->server_blob) {	debug(29, 2) ("authenticateNegotiateAuthenticateUser: need to challenge client '%s'!\n", negotiate_request->server_blob);	return;    }    /* get header */    proxy_auth = httpHeaderGetStr(&request->header, type);    blob = proxy_auth;    while (xisspace(*blob) && *blob)	blob++;    while (!xisspace(*blob) && *blob)	blob++;    while (xisspace(*blob) && *blob)	blob++;    switch (negotiate_request->auth_state) {    case AUTHENTICATE_STATE_NONE:	/* we've received a negotiate request. pass to a helper */	debug(29, 9) ("authenticateNegotiateAuthenticateUser: auth state negotiate none. %s\n", proxy_auth);	negotiate_request->auth_state = AUTHENTICATE_STATE_INITIAL;	safe_free(negotiate_request->client_blob);	negotiate_request->client_blob = xstrdup(blob);	conn->auth_type = AUTH_NEGOTIATE;	conn->auth_user_request = auth_user_request;	negotiate_request->conn = conn;	/* and lock for the connection duration */	debug(29, 9) ("authenticateNegotiateAuthenticateUser: Locking auth_user from the connection.\n");	authenticateAuthUserRequestLock(auth_user_request);	negotiate_request->request = requestLink(request);	return;	break;    case AUTHENTICATE_STATE_INITIAL:	debug(29, 1) ("authenticateNegotiateAuthenticateUser: need to ask helper!\n");	return;	break;    case AUTHENTICATE_STATE_NEGOTIATE:	/* we should have received a blob from the clien. pass it to the same 	 * helper process */	debug(29, 9) ("authenticateNegotiateAuthenticateUser: auth state challenge with header %s.\n", proxy_auth);	/* do a cache lookup here. If it matches it's a successful negotiate 	 * challenge - release the helper and use the existing auth_user 	 * details. */	safe_free(negotiate_request->client_blob);	negotiate_request->client_blob = xstrdup(blob);	if (negotiate_request->request)	    requestUnlink(negotiate_request->request);	negotiate_request->request = requestLink(request);	return;	break;    case AUTHENTICATE_STATE_DONE:	fatal("authenticateNegotiateAuthenticateUser: unexpect auth state DONE! Report a bug to the squid developers.\n");	break;    case AUTHENTICATE_STATE_FAILED:	/* we've failed somewhere in authentication */	debug(29, 9) ("authenticateNegotiateAuthenticateUser: auth state negotiate failed. %s\n", proxy_auth);	return;    }    return;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频一区| 欧美制服丝袜第一页| 亚洲小少妇裸体bbw| 欧美xingq一区二区| 在线视频一区二区免费| 国产成人无遮挡在线视频| 午夜伦理一区二区| 亚洲精品久久嫩草网站秘色| 精品国产乱码久久久久久久| 欧美军同video69gay| 99精品热视频| 国产 日韩 欧美大片| 麻豆国产91在线播放| 天天影视网天天综合色在线播放| 中文字幕亚洲欧美在线不卡| 亚洲精品一区二区三区蜜桃下载 | 在线观看日韩毛片| 国产精品亚洲第一区在线暖暖韩国 | 国产精品色在线| 日韩欧美中文一区| 欧美日韩国产大片| 在线精品视频免费观看| 99久久亚洲一区二区三区青草| 久久99精品国产| 美女精品自拍一二三四| 日韩中文字幕区一区有砖一区| 亚洲精品久久7777| 亚洲色欲色欲www| 国产精品高潮久久久久无| 国产性色一区二区| 久久亚区不卡日本| 欧美精品一区二区三区在线 | 久久久久久久av麻豆果冻| 日韩一级欧美一级| 欧美一区二区福利视频| 欧美高清视频一二三区| 欧美人xxxx| 欧美日韩大陆在线| 欧美日韩精品二区第二页| 欧美亚洲国产bt| 欧美三级一区二区| 欧美人体做爰大胆视频| 欧美三级中文字| 欧美久久久久久久久| 欧美三级日韩三级| 欧美精选在线播放| 日韩一区二区三区电影| 精品嫩草影院久久| 久久久电影一区二区三区| 国产亚洲综合色| 中文字幕一区二区三区色视频| 国产精品二区一区二区aⅴ污介绍| 国产精品对白交换视频| 一区二区三区中文字幕| 婷婷夜色潮精品综合在线| 麻豆91在线看| 国产999精品久久| 91麻豆福利精品推荐| 欧美性生活影院| 欧美一区二区视频在线观看2020| 欧美精品久久一区二区三区| 日韩欧美亚洲一区二区| 欧美—级在线免费片| 亚洲免费观看在线观看| 亚洲高清免费视频| 久久国产精品一区二区| 久久久久青草大香线综合精品| 亚洲国产精品成人久久综合一区| 1000部国产精品成人观看| 图片区小说区区亚洲影院| 国内精品伊人久久久久影院对白| 国产99精品视频| 欧美色倩网站大全免费| www日韩大片| 亚洲精品综合在线| 麻豆精品久久久| 97久久精品人人澡人人爽| 欧美一卡二卡在线| 国产精品久久久久久久久图文区| 亚洲福利国产精品| 国产盗摄女厕一区二区三区| 欧美色图一区二区三区| 精品国产百合女同互慰| 亚洲精品视频在线观看免费| 麻豆91精品视频| 99久久99久久精品国产片果冻| 717成人午夜免费福利电影| 中文一区二区在线观看| 午夜电影久久久| 成人黄色国产精品网站大全在线免费观看 | 欧美怡红院视频| 精品国产乱码久久久久久蜜臀| 亚洲精品一二三| 国产电影一区二区三区| 777奇米成人网| 亚洲丝袜另类动漫二区| 精品一区二区三区免费视频| 色综合久久综合网97色综合| 欧美精品一区二区三| 午夜视频一区在线观看| www.一区二区| 久久美女艺术照精彩视频福利播放| 一二三区精品视频| 高清av一区二区| 日韩欧美区一区二| 午夜精品久久久久久久99水蜜桃| 成人一区二区三区视频在线观看| 日韩一区二区免费在线观看| 一区二区三区中文字幕| 国产69精品一区二区亚洲孕妇| 欧美电影免费观看高清完整版在线| 亚洲一区二区在线视频| 成人涩涩免费视频| 久久亚洲欧美国产精品乐播| 日韩精品久久理论片| 欧洲视频一区二区| 亚洲视频你懂的| jiyouzz国产精品久久| 久久嫩草精品久久久久| 精品在线一区二区| 欧美一区二区日韩| 婷婷综合另类小说色区| 欧美一区二区三区电影| 一本色道久久综合亚洲精品按摩 | 精品国产乱码久久久久久1区2区| 午夜电影一区二区三区| 欧美日韩一级片网站| 亚洲精品日韩一| 91蝌蚪porny九色| 日韩一区日韩二区| 97久久久精品综合88久久| 狠狠色丁香婷婷综合久久片| 欧美一区二区三区四区久久| 午夜精品福利一区二区三区蜜桃| 欧美性受xxxx黑人xyx性爽| 亚洲国产精品久久人人爱| 欧美性一级生活| 午夜久久福利影院| 3751色影院一区二区三区| 水野朝阳av一区二区三区| 7777女厕盗摄久久久| 免费看欧美美女黄的网站| 日韩欧美成人激情| 国产乱子伦一区二区三区国色天香| 日韩欧美国产不卡| 国产中文一区二区三区| 久久精品欧美一区二区三区麻豆| 国产不卡视频在线播放| 中文字幕av在线一区二区三区| 99久久久久久| 一区二区视频在线| 欧美日韩久久久| 久久99国产精品麻豆| 国产肉丝袜一区二区| www.在线欧美| 亚洲福中文字幕伊人影院| 日韩欧美一区在线| 国产美女精品一区二区三区| 亚洲欧洲日产国码二区| 欧美午夜电影在线播放| 蜜臀av性久久久久蜜臀aⅴ| 国产亚洲一区字幕| 色婷婷av一区二区三区软件 | **网站欧美大片在线观看| 成人激情av网| 亚洲一区二区三区四区在线| 日韩欧美国产系列| 成人av在线资源| 午夜视黄欧洲亚洲| 久久久一区二区| 在线视频你懂得一区二区三区| 亚洲成av人片在线观看无码| 欧美成人国产一区二区| 成人高清免费观看| 日本欧美久久久久免费播放网| 久久久精品综合| 在线观看www91| 国产乱子伦一区二区三区国色天香| 国产精品成人免费精品自在线观看| 欧美午夜宅男影院| 激情av综合网| 亚洲一区二区三区视频在线播放| 欧美精品一区二区精品网| 一本大道久久a久久精二百| 蜜臀久久99精品久久久久宅男| 欧美激情在线一区二区三区| 欧美日韩精品二区第二页| 国产99一区视频免费| 日日骚欧美日韩| 国产精品对白交换视频| 欧美年轻男男videosbes| 国产 欧美在线| 美国欧美日韩国产在线播放 | 日韩一区精品字幕| 蜜臀99久久精品久久久久久软件| 91在线视频观看| 欧美成人三级电影在线| 国产精品你懂的在线| 亚洲国产成人高清精品| 国产精品888|