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

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

?? htproxy.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/*								     HTProxy.c**	GATEWAY AND PROXY MANAGER****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTProxy.c,v 2.21 2000/02/29 14:25:59 kahan Exp $****	Replaces the old env variables for gateways and proxies. However for**	backward compatibility there is a function that reads the env variables**	at start up. Note that there is a difference between a proxy and a**	gateway!**** Authors**	HF	Henrik Frystyk, frystyk@w3.org** History**       4 Jun 95 Written on a rainy day*/#if !defined(HT_DIRECT_WAIS) && !defined(HT_DEFAULT_WAIS_GATEWAY)#define HT_DEFAULT_WAIS_GATEWAY "http://www.w3.org:8001/"#endif/* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "WWWHTTP.h"#include "WWWApp.h"#include "HTProxy.h"					 /* Implemented here *//* Variables and typedefs local to this module */typedef struct _HTProxy {    char *	access;    char *	url;			          /* URL of Gateway or Proxy */#ifdef HT_POSIX_REGEX    regex_t *	regex;				  /* Compiled regex */#endif} HTProxy;typedef struct _HTHostlist {    char *	access;    char *	host;				  /* Host or domain name */    unsigned	port;#ifdef HT_POSIX_REGEX    regex_t *	regex;				  /* Compiled regex */#endif} HTHostList;PRIVATE HTList * proxies = NULL;		    /* List of proxy servers */PRIVATE HTList * gateways = NULL;			 /* List of gateways */PRIVATE HTList * noproxy = NULL;   /* Don't proxy on these hosts and domains */PRIVATE int      noproxy_is_onlyproxy = 0; /* Interpret the noproxy list as an onlyproxy one */#if 0PRIVATE HTList * onlyproxy = NULL;  /* Proxy only on these hosts and domains */#endif/* ------------------------------------------------------------------------- */#ifdef HT_POSIX_REGEXPRIVATE char * get_regex_error (int errcode, regex_t * compiled){    size_t length = regerror (errcode, compiled, NULL, 0);    char * str = NULL;    if ((str = (char *) HT_MALLOC(length+1)) == NULL)	HT_OUTOFMEM("get_regex_error");    (void) regerror (errcode, compiled, str, length);    return str;}PRIVATE regex_t * get_regex_t (const char * regex_str, int cflags){    regex_t * regex = NULL;    if (regex_str && *regex_str) {	int status;	if ((regex = (regex_t *) HT_CALLOC(1, sizeof(regex_t))) == NULL)	    HT_OUTOFMEM("get_regex_t");	if ((status = regcomp(regex, regex_str, cflags))) {	    char * err_msg = get_regex_error(status, regex);	    HTTRACE(PROT_TRACE, "HTProxy..... Regular expression error: %s\n" _ err_msg);	    HT_FREE(err_msg);	    HT_FREE(regex);	}    }    return regex;}#endif/***	Existing entries are replaced with new ones*/PRIVATE BOOL add_object (HTList * list, const char * access, const char * url,			 BOOL regex, int regex_flags){    HTProxy *me;    if (!list || !access || !url || !*url)	return NO;    if ((me = (HTProxy *) HT_CALLOC(1, sizeof(HTProxy))) == NULL)	HT_OUTOFMEM("add_object");    StrAllocCopy(me->access, access);		     	    /* Access method */#ifdef HT_POSIX_REGEX    /*     **  If we support regular expressions then compile one up for    **  this regular expression. Otherwise use is as a normal    **  access scheme.    */    if (regex) {	me->regex = get_regex_t(access,				regex_flags < 0 ?				W3C_DEFAULT_REGEX_FLAGS : regex_flags);    } else#endif    {	char *ptr = me->access;	while ((*ptr = TOLOWER(*ptr))) ptr++;    }    me->url = HTParse(url, "", PARSE_ACCESS+PARSE_HOST+PARSE_PUNCTUATION);    if (*(me->url+strlen(me->url)-1) != '/')	StrAllocCat(me->url, "/");    me->url = HTSimplify(&me->url);    /* See if we already have this one */    {	HTList *cur = list;	HTProxy *pres;	while ((pres = (HTProxy *) HTList_nextObject(cur)) != NULL) {	    if (!strcmp(pres->access, me->access))		break;				       /* We already have it */	}	if (pres) {	    HTTRACE(PROT_TRACE, "HTProxy..... replacing for `%s\' access %s\n" _ 			me->url _ me->access);	    HT_FREE(pres->access);	    HT_FREE(pres->url);#ifdef HT_POSIX_REGEX	    if (pres->regex) regfree(pres->regex);#endif	    HTList_removeObject(list, (void *) pres);	    HT_FREE(pres);	}	HTTRACE(PROT_TRACE, "HTProxy..... adding for `%s\' access %s\n" _ 		    me->url _ me->access);	HTList_addObject(list, (void *) me);    }    return YES;}PRIVATE BOOL remove_allObjects (HTList * list){    if (list) {	HTList *cur = list;	HTProxy *pres;	while ((pres = (HTProxy *) HTList_nextObject(cur)) != NULL) {	    HT_FREE(pres->access);	    HT_FREE(pres->url);#ifdef HT_POSIX_REGEX	    if (pres->regex) regfree(pres->regex);#endif	    HT_FREE(pres);	}	return YES;    }    return NO;}/*	Add an entry to a list of host names**	------------------------------------**	Existing entries are replaced with new ones*/PRIVATE BOOL add_hostname (HTList * list, const char * host,			   const char * access, unsigned port,			   BOOL regex, int regex_flags){    HTHostList *me;    if (!list || !host || !*host)	return NO;    if ((me = (HTHostList *) HT_CALLOC(1, sizeof(HTHostList))) == NULL)        HT_OUTOFMEM("add_hostname");#ifdef HT_POSIX_REGEX    if (regex)	me->regex = get_regex_t(host,				regex_flags < 0 ?				W3C_DEFAULT_REGEX_FLAGS : regex_flags);#endif    if (access) {	char *ptr;	StrAllocCopy(me->access, access);      	     	    /* Access method */	ptr = me->access;	while ((*ptr = TOLOWER(*ptr))) ptr++;    }    StrAllocCopy(me->host, host);		     	    	/* Host name */    {	char *ptr = me->host;	while ((*ptr = TOLOWER(*ptr))) ptr++;    }    me->port = port;					      /* Port number */    HTTRACE(PROT_TRACE, "HTHostList.. adding `%s\' to list\n" _ me->host);    HTList_addObject(list, (void *) me);    return YES;}PRIVATE BOOL remove_AllHostnames (HTList * list){    if (list) {	HTList *cur = list;	HTHostList *pres;	while ((pres = (HTHostList *) HTList_nextObject(cur)) != NULL) {	    HT_FREE(pres->access);	    HT_FREE(pres->host);#ifdef HT_POSIX_REGEX	    if (pres->regex) regfree(pres->regex);#endif	    HT_FREE(pres);	}	return YES;    }    return NO;}/*	HTProxy_add**	-----------**	Registers a proxy as the server to contact for a specific**	access method. `proxy' should be a fully valid name, like**	"http://proxy.w3.org:8001" but domain name is not required.**	If an entry exists for this access then delete it and use the **	ne one. Returns YES if OK, else NO*/PUBLIC BOOL HTProxy_add (const char * access, const char * proxy){    /*    **  If this is the first time here then also add a before filter to handle    **  proxy authentication and the normal AA after filter as well.    **  These filters will be removed if we remove all proxies again.    */    if (!proxies) {	proxies = HTList_new();	HTNet_addBefore(HTAA_proxyBeforeFilter, NULL, NULL,			HT_FILTER_MIDDLE);	HTNet_addAfter(HTAuthFilter, NULL, NULL,		       HT_NO_PROXY_ACCESS, HT_FILTER_MIDDLE);	HTNet_addAfter(HTAuthFilter, NULL, NULL,		       HT_PROXY_REAUTH, HT_FILTER_MIDDLE);    }    return add_object(proxies, access, proxy, NO, -1);}/*	HTProxy_addRegex**	----------------**	Registers a proxy as the server to contact for any URL matching the**	regular expression. `proxy' should be a fully valid name, like**	"http://proxy.w3.org:8001".**	If an entry exists for this access then delete it and use the **	new one. Returns YES if OK, else NO*/PUBLIC BOOL HTProxy_addRegex (const char * regex,			      const char * proxy,			      int regex_flags){    /*    **  If this is the first time here then also add a before filter to handle    **  proxy authentication and the normal AA after filter as well.    **  These filters will be removed if we remove all proxies again.    */    if (!proxies) {	proxies = HTList_new();	HTNet_addBefore(HTAA_proxyBeforeFilter, NULL, NULL,			HT_FILTER_MIDDLE);	HTNet_addAfter(HTAuthFilter, NULL, NULL,		       HT_NO_PROXY_ACCESS, HT_FILTER_MIDDLE);	HTNet_addAfter(HTAuthFilter, NULL, NULL,		       HT_PROXY_REAUTH, HT_FILTER_MIDDLE);    }#ifdef HT_POSIX_REGEX    return add_object(proxies, regex, proxy, YES, regex_flags);#else    return add_object(proxies, regex, proxy, NO, -1);#endif}/***	Removes all registered proxies*/PUBLIC BOOL HTProxy_deleteAll (void){    if (remove_allObjects(proxies)) {	HTList_delete(proxies);	/*	** If we have no more proxies then there is no reason for checking	** proxy authentication. We therefore unregister the filters for	** handling proxy authentication	*/	HTNet_deleteBefore(HTAA_proxyBeforeFilter);        HTNet_deleteAfterStatus(HT_NO_PROXY_ACCESS);        HTNet_deleteAfterStatus(HT_PROXY_REAUTH);	proxies = NULL;	return YES;    }    return NO;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频免费91| 欧美另类videos死尸| 午夜婷婷国产麻豆精品| www国产成人| 欧美老年两性高潮| caoporm超碰国产精品| 免费亚洲电影在线| 亚洲一区二区三区四区五区黄| 欧美videofree性高清杂交| 91在线精品秘密一区二区| 韩国一区二区视频| 日本sm残虐另类| 亚洲高清免费一级二级三级| 中文字幕va一区二区三区| 日韩欧美卡一卡二| 6080日韩午夜伦伦午夜伦| 色狠狠av一区二区三区| 不卡一区二区三区四区| 国内外精品视频| 日本成人在线网站| 日日噜噜夜夜狠狠视频欧美人 | 国产片一区二区| 欧美一级理论片| 欧美日韩不卡一区二区| 色丁香久综合在线久综合在线观看 | 亚洲欧美日韩成人高清在线一区| 久久综合资源网| 精品久久人人做人人爰| 欧美一区二区成人| 亚洲丝袜另类动漫二区| 欧美激情一区二区三区在线| 日韩欧美国产一区二区在线播放 | 国产精品亚洲人在线观看| 免费观看一级特黄欧美大片| 日日夜夜一区二区| 视频一区二区中文字幕| 97国产精品videossex| 成人白浆超碰人人人人| 国产成人精品午夜视频免费| 国产麻豆精品95视频| 国产成人午夜精品5599| 成人中文字幕在线| www.66久久| 91美女在线看| 欧美视频中文一区二区三区在线观看| 一本到三区不卡视频| 在线影院国内精品| 欧美高清性hdvideosex| 日韩欧美亚洲一区二区| 精品成人在线观看| 国产日韩精品视频一区| 成人欧美一区二区三区白人| 中文字幕日韩精品一区| 亚洲伦在线观看| 亚洲成人av一区二区三区| 日本免费新一区视频| 国产一区二区三区不卡在线观看 | 成人一区二区三区在线观看| kk眼镜猥琐国模调教系列一区二区 | 日韩精品成人一区二区在线| 麻豆视频观看网址久久| 国产乱码精品一区二区三区av | 欧美日产在线观看| 精品日韩在线一区| 亚洲图片欧美激情| 五月天网站亚洲| 国产一区二区久久| 色噜噜狠狠成人网p站| 欧美一区二区视频网站| 久久久久久久国产精品影院| 中文字幕中文字幕在线一区| 亚洲一区二区三区视频在线播放| 美女网站色91| 99久久伊人精品| 欧美一区二区在线视频| 国产欧美日韩在线观看| 亚洲狠狠爱一区二区三区| 国产一区二区三区香蕉| 欧美制服丝袜第一页| 精品av久久707| 亚洲精品视频一区| 精品在线播放免费| 日本精品一区二区三区四区的功能| 欧美日韩的一区二区| 国产精品网友自拍| 蜜桃视频在线一区| 在线亚洲免费视频| 久久久久九九视频| 午夜久久久久久电影| 成人动漫精品一区二区| 日韩精品一区二区三区视频播放| 亚洲视频免费在线| 韩国女主播成人在线| 欧美日韩中文另类| 国产精品私人影院| 国产在线视频一区二区三区| 欧美三级乱人伦电影| 国产精品国产三级国产aⅴ原创| 日韩精品亚洲一区二区三区免费| 成人毛片视频在线观看| 日韩久久久久久| 三级在线观看一区二区 | 欧美视频在线播放| 中文字幕av在线一区二区三区| 免费人成网站在线观看欧美高清| 99re8在线精品视频免费播放| 久久亚洲综合色一区二区三区| 三级影片在线观看欧美日韩一区二区 | 色婷婷激情一区二区三区| 国产婷婷色一区二区三区在线| 免费观看日韩av| 91.麻豆视频| 亚洲在线一区二区三区| 97精品国产露脸对白| 国产清纯美女被跳蛋高潮一区二区久久w | 久久精品人人做人人综合| 日本亚洲一区二区| 欧美日韩黄视频| 婷婷综合另类小说色区| 在线一区二区三区做爰视频网站| √…a在线天堂一区| 成人一区二区视频| 国产人伦精品一区二区| 国产一区二区三区免费观看| 欧美成人精品福利| 韩国一区二区在线观看| 欧美大白屁股肥臀xxxxxx| 肉丝袜脚交视频一区二区| 欧美美女一区二区三区| 日韩中文字幕区一区有砖一区 | 精品视频在线免费看| 亚洲理论在线观看| 91视频国产观看| 亚洲精品自拍动漫在线| 91免费看片在线观看| 亚洲人妖av一区二区| 色88888久久久久久影院野外| 亚洲少妇中出一区| 色网站国产精品| 亚洲成人精品在线观看| 欧美丰满少妇xxxxx高潮对白| 日韩av电影天堂| 精品久久久久久久久久久久久久久久久| 青青草成人在线观看| 久久综合色天天久久综合图片| 国产一区二区三区蝌蚪| 国产精品久久久久aaaa| 色狠狠色狠狠综合| 亚洲chinese男男1069| 91精品国产综合久久精品麻豆| 免费看欧美女人艹b| 国产日韩精品一区二区三区| 99精品1区2区| 午夜激情一区二区三区| 91精品国产综合久久精品图片 | 国产一二精品视频| 亚洲天堂福利av| 欧美日韩成人综合| 精品一二三四区| 欧美激情一区二区三区四区| yourporn久久国产精品| 亚洲国产一区二区三区青草影视| 91精品国产色综合久久| 国产成人综合亚洲91猫咪| 亚洲男人天堂一区| 日韩欧美综合一区| 成人伦理片在线| 三级在线观看一区二区| 久久久精品综合| 欧美三级中文字| 国产精品69久久久久水密桃| 一区二区三区在线免费视频| 日韩免费一区二区| 91欧美激情一区二区三区成人| 日产欧产美韩系列久久99| 国产亚洲精品aa| 91.麻豆视频| 99久精品国产| 免费一级片91| 一区二区三区日韩欧美精品| 欧美v国产在线一区二区三区| 9人人澡人人爽人人精品| 蜜桃视频一区二区| 一区二区在线免费观看| 精品久久久三级丝袜| 欧美在线观看视频一区二区三区| 精品综合久久久久久8888| 亚洲视频一区二区免费在线观看| 日韩免费视频线观看| 欧洲亚洲国产日韩| 成人av免费在线播放| 久久99蜜桃精品| 亚洲午夜在线视频| 亚洲欧洲精品成人久久奇米网| 欧美一区二区久久| 欧美视频三区在线播放| www.99精品| 国产精品69毛片高清亚洲| 日本午夜一区二区| 亚洲午夜精品久久久久久久久|