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

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

?? htaautil.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***	COMMON PARTS OF ACCESS AUTHORIZATION MODULE**	FOR BOTH SERVER AND BROWSER****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTAAUtil.c,v 2.35 1999/02/22 22:10:10 frystyk Exp $****	The authentication information is stored in a list of authentication**	data bases, each uniquely identified by a hostname and a port number.**	Each data base contains a set of templates which can be used to predict**	what information to use in a hierarchical tree. All authentication**	dependent information is stored as opaque data in a anode. Normally**	a server application would only keep one auth base but if it wants**	different protection setup as a function of different interfaces then**	it can have one auth base representing each interface. For example a**	server with interfaces "www.foo.com" and "internal.foo.com" can have**	different protection setups for each interface.**** AUTHORS:**	AL	Ari Luotonen	luotonen@dxcern.cern.ch**	MD 	Mark Donszelmann    duns@vxdeop.cern.ch**	HFN	Henrik Frystyk**      JK      Jose Kahan 	jose@w3.org**      ** HISTORY:**	 8 Nov 93  MD	(VMS only) Added case insensitive comparison**			in HTAA_templateCaseMatch**      26 Jan 98  JK   Augmented the HTAA module interface with a function**                      for processing the auth-info headers (update)*//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTAAUtil.h"					 /* Implemented here */#define AA_TREE			"w3c-AA"	      /* Name of the AA tree */#define AA_PROXY_TREE		"w3c-proxy-AA"  /* Name of the proxy AA tree */#define DEFAULT_PORT            80                    /* Concentrate on HTTP */struct _HTAAModule {    char *		scheme;    HTNetBefore *	before;    HTNetAfter *	after;    HTNetAfter *	update;    HTUTree_gc *	gc;};typedef struct _HTAAElement {    char *		scheme;    void * 		context;} HTAAElement;PRIVATE HTList * HTSchemes;	/* List of registered authentication schemes *//* ------------------------------------------------------------------------- *//*			 AUTHENTICATION MODULE MANAGEMENT		     *//* ------------------------------------------------------------------------- */PRIVATE BOOL delete_module (HTAAModule * module){    if (module) {	HT_FREE(module->scheme);	HT_FREE(module);	return YES;    }    return NO;}PRIVATE HTAAModule * find_module (const char * scheme){    if (!HTSchemes) HTSchemes = HTList_new();    if (scheme) {	HTList * cur = HTSchemes;	HTAAModule * pres = NULL;	while ((pres = (HTAAModule *) HTList_nextObject(cur)))	    if (!strcasecomp(pres->scheme, scheme)) return pres;    } else	HTTRACE(AUTH_TRACE, "Auth Engine. Bad argument\n");    return NULL;}PUBLIC HTAAModule * HTAA_newModule (const char *	scheme,				    HTNetBefore *	before,				    HTNetAfter *	after,				    HTNetAfter *	update,				    HTUTree_gc *	gc){    if (scheme) {	HTAAModule * pres = find_module(scheme);	/* If found then update entry - else create a new one */	if (!pres) {	    if (!(pres = (HTAAModule *) HT_CALLOC(1, sizeof(HTAAModule))))		HT_OUTOFMEM("HTAA_newModule");	    StrAllocCopy(pres->scheme, scheme);	    pres->before = before;	    pres->after = after;	    pres->update = update;	    pres->gc = gc;	    /* Add the new AA Module to the list */	    HTList_addObject(HTSchemes, (void *) pres);	    HTTRACE(AUTH_TRACE, "Auth Engine. Created module %p\n" _ pres);	} else {	    HTTRACE(AUTH_TRACE, "Auth Engine. Found module %p\n" _ pres);	}	return pres;    } else {	HTTRACE(AUTH_TRACE, "Auth Engine. Bad argument\n");	return NULL;    }}PUBLIC HTAAModule * HTAA_findModule (const char * scheme){    if (scheme) {	HTAAModule * pres = find_module(scheme);	HTTRACE(AUTH_TRACE, "Auth Engine. did %sfind %s\n" _ pres ? "" : "NOT " _ scheme);	return pres;    } else {	HTTRACE(AUTH_TRACE, "Auth Engine. Bad augument\n");    }    return NULL;}PUBLIC BOOL HTAA_deleteModule (const char * scheme){    if (scheme) {	HTAAModule * pres = find_module(scheme);	if (pres) {	    HTList_removeObject(HTSchemes, pres);	    HTTRACE(AUTH_TRACE, "Auth Engine. deleted %p\n" _ pres);	    delete_module(pres);	    return YES;	}    }    return NO;}PUBLIC BOOL HTAA_deleteAllModules (void){    if (HTSchemes) {	HTList * cur = HTSchemes;	HTAAModule * pres;	while ((pres = (HTAAModule *) HTList_nextObject(cur)))	    delete_module(pres);	HTList_delete(HTSchemes);	HTSchemes = NULL;	return YES;    }    return NO;}/* ------------------------------------------------------------------------- *//*			    HANDLE THE AA URL TREE			     *//* ------------------------------------------------------------------------- *//***	A AA element is a particular AA procotol associated with a**	particular point in the URL tree. The scheme is the name of the**	AA protocol known to be able to handle this context. This protocol**	must have been registered as a AA module.*/PRIVATE HTAAElement * HTAA_newElement (const char * scheme, void * context){    if (scheme) {	HTAAElement * me;	if ((me = (HTAAElement *) HT_CALLOC(1, sizeof(HTAAElement))) == NULL)	    HT_OUTOFMEM("HTAAElement_new");	StrAllocCopy(me->scheme, scheme);	me->context = context;	HTTRACE(AUTH_TRACE, "Auth Engine. Created element %p\n" _ me);	return me;    }    return NULL;}/***	If the new context differs from the existing one then use the**	new one, otherwise only override the old context if new**	one differs from NULL*/PRIVATE BOOL HTAA_updateElement (HTAAElement * element,				 const char * scheme, void * context){    if (element && scheme) {	/*	** If the old context differs from the new one then 	** call the gc provided by the caller	*/	if (context && context != element->context) {	    HTAAModule * module = HTAA_findModule(element->scheme);	    if (module && module->gc && element->context)		(*module->gc)(element->context);	    /*	    **  Insert the new scheme	    */	    StrAllocCopy(element->scheme, scheme);	    element->context = context;	}	return YES;    }    return NO;}PRIVATE int HTAA_deleteElement (void * context){    HTAAElement * me = (HTAAElement *) context;    if (me) {	HTAAModule * module = HTAA_findModule(me->scheme);	/* If module then call the gc of the Authentication Module */	if (module && module->gc && me->context)	    (*module->gc)(me->context);	HTTRACE(AUTH_TRACE, "Auth Engine. Deleted element %p\n" _ me);	HT_FREE(me->scheme);	HT_FREE(me);	return YES;    }    return NO;}/***	Find AA Element**	---------------**	Seaches the set of authentication information bases for a match**	In order to find an anode we do the following:****		1) Find the right auth base**		2) See if there is a realm match**		3) See if there is a template match for URL****	Return the node found else NULL which means that we don't have any**	authentication information to hook on to this request or response*/PRIVATE HTAAElement * HTAA_findElement (BOOL proxy_access,					const char * realm, const char * url){    HTUTree * tree;    if (!url) {	HTTRACE(AUTH_TRACE, "Auth Engine. Bad argument\n");	return NULL;    }    HTTRACE(AUTH_TRACE, "Auth Engine. Looking up `%s'\n" _ url);    /* Find an existing URL Tree for this URL (if any) */    {	char * host = HTParse(url, "", PARSE_HOST);	char * colon = strchr(host, ':');	int port = DEFAULT_PORT;	if (colon ) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品成人在线观看| 久久精品国产免费| 26uuu国产一区二区三区| 欧洲精品一区二区| 99亚偷拍自图区亚洲| 成人午夜电影久久影院| 国产高清久久久久| 丁香激情综合国产| 不卡区在线中文字幕| av男人天堂一区| 99re这里都是精品| 日本道色综合久久| 欧美日韩免费一区二区三区| 欧美精品三级在线观看| 日韩一卡二卡三卡国产欧美| 精品少妇一区二区三区| 久久精品在线观看| 中文字幕欧美一| 亚洲精品视频免费观看| 亚洲成人自拍一区| 日韩精品亚洲一区二区三区免费| 婷婷久久综合九色综合绿巨人| 同产精品九九九| 久久精品99久久久| 成人激情小说网站| 日本高清不卡视频| 日韩欧美123| 国产精品美女视频| 亚洲午夜久久久久久久久电影院| 日本欧美在线观看| 国产成人夜色高潮福利影视| www.亚洲人| 6080亚洲精品一区二区| 久久久久久久久一| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲国产精品一区二区久久| 精品一区二区成人精品| 本田岬高潮一区二区三区| 欧美手机在线视频| 日本一区二区三区在线不卡| 一区二区三区在线视频播放| 久久99精品久久久久| 99国产精品久久| 精品噜噜噜噜久久久久久久久试看 | 国产在线不卡视频| 成人精品免费视频| 日韩一区二区三区视频在线| 综合久久给合久久狠狠狠97色 | 亚洲人成电影网站色mp4| 蜜臀精品久久久久久蜜臀| 成人国产精品视频| 欧美电影免费观看高清完整版在线观看| 国产日韩成人精品| 免费av网站大全久久| 99精品视频一区二区三区| 精品免费视频一区二区| 日韩精品一二区| 在线精品视频一区二区三四| 中文字幕不卡在线观看| 久久99国产精品久久99果冻传媒| 91蜜桃在线观看| 久久久久久一级片| 久久精品国产在热久久| 欧美视频自拍偷拍| 一区二区激情视频| 日本高清不卡视频| 亚洲一区二区三区中文字幕在线| 成人毛片视频在线观看| 欧美激情中文不卡| 国产aⅴ综合色| 国产欧美日韩不卡| 粉嫩aⅴ一区二区三区四区| 久久综合国产精品| 国产呦萝稀缺另类资源| 精品国产乱码久久久久久图片 | 亚洲色图欧美在线| 99综合电影在线视频| 欧美极品aⅴ影院| 国产精品系列在线播放| 日韩欧美国产午夜精品| 日本成人在线电影网| 欧美日韩国产美女| 天天影视涩香欲综合网| 欧美年轻男男videosbes| 午夜成人在线视频| 制服丝袜激情欧洲亚洲| 免费看日韩精品| 日韩精品一区二区三区四区| 欧美aaaaaa午夜精品| 欧美一级艳片视频免费观看| 老司机精品视频导航| 日韩一区二区三区av| 日本中文一区二区三区| 精品乱人伦小说| 国产成人av电影在线播放| 国产亚洲综合av| av网站免费线看精品| 亚洲在线视频网站| 日韩视频国产视频| 丁香桃色午夜亚洲一区二区三区| 国产精品素人视频| 欧美在线色视频| 美女脱光内衣内裤视频久久影院| 久久综合网色—综合色88| 国产.精品.日韩.另类.中文.在线.播放 | 91精品啪在线观看国产60岁| 美腿丝袜在线亚洲一区| 国产精品色哟哟| 欧美影视一区在线| 久久99精品久久久久婷婷| 亚洲欧洲日本在线| 91精品国产一区二区| 成人晚上爱看视频| 亚洲一区在线观看视频| 2023国产精华国产精品| 色综合久久中文综合久久牛| 丝袜美腿亚洲一区| 国产女人aaa级久久久级| 欧美伊人精品成人久久综合97| 蜜桃av一区二区在线观看| 国产精品乱码人人做人人爱| 精品视频在线免费观看| 国产成人精品影院| 亚洲综合久久av| 久久久久国产精品免费免费搜索| 色域天天综合网| 麻豆精品在线观看| 一区二区视频在线看| 精品国产91九色蝌蚪| 欧美色网站导航| 不卡的av电影| 精品一区二区三区影院在线午夜| 亚洲男人天堂av| 久久久久国产精品麻豆ai换脸| 欧美理论片在线| 在线亚洲精品福利网址导航| 北岛玲一区二区三区四区| 国产精品一区二区三区乱码 | 一区二区三区四区视频精品免费| 精品三级在线看| 宅男在线国产精品| 91精品1区2区| 91在线免费视频观看| 大白屁股一区二区视频| 狠狠色狠狠色综合日日91app| 亚洲电影第三页| 亚洲激情校园春色| 中文字幕人成不卡一区| 日本一区二区免费在线观看视频| 在线播放欧美女士性生活| 色综合久久久久综合体| 成人开心网精品视频| 国产一区二区不卡在线| 韩国av一区二区三区在线观看| 天堂一区二区在线免费观看| 亚洲电影一区二区| 亚洲一区二区三区在线看| 一区二区三区在线免费| 亚洲精品中文字幕在线观看| 伊人一区二区三区| 天天亚洲美女在线视频| 视频一区二区三区入口| 全部av―极品视觉盛宴亚洲| 日韩va欧美va亚洲va久久| 日本午夜精品视频在线观看| 日韩av二区在线播放| 视频一区在线播放| 日韩av电影天堂| 久久aⅴ国产欧美74aaa| 久久9热精品视频| 国产馆精品极品| 色狠狠色噜噜噜综合网| 91久久精品午夜一区二区| 欧美日韩一级片在线观看| 日韩一区二区三区三四区视频在线观看 | 99热99精品| 92国产精品观看| 在线亚洲高清视频| 欧美精品在线视频| 久久这里只有精品视频网| 国产日韩欧美高清| 最新高清无码专区| 舔着乳尖日韩一区| 久久99久久99小草精品免视看| 国产成人精品亚洲777人妖| www.亚洲精品| 日韩欧美国产系列| 亚洲免费av观看| 麻豆免费精品视频| 91免费视频观看| 7777精品伊人久久久大香线蕉的| 久久夜色精品国产欧美乱极品| 亚洲色图欧洲色图| 国产一区二区三区久久悠悠色av | 亚洲国产成人av网| 国产乱人伦偷精品视频免下载 | 久久99国产精品久久99| 91原创在线视频| 欧美一区二区三区四区五区| 久久久精品tv|