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

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

?? htproxy.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*								     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;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产伦精一区二区三区| 中文乱码免费一区二区| 91精品婷婷国产综合久久性色 | 日韩一区二区三区电影在线观看 | 天天综合色天天| 精品一区二区三区视频在线观看| 国产一区二区导航在线播放| 色网站国产精品| 日韩欧美资源站| 国产精品国模大尺度视频| 午夜久久电影网| 精品999在线播放| 久久免费电影网| 婷婷一区二区三区| 国产福利精品一区| 欧美日本一区二区在线观看| 国产精品网曝门| 久久99久久99小草精品免视看| 色综合天天综合在线视频| 日韩欧美国产系列| 亚洲主播在线观看| 成人99免费视频| 国产亚洲短视频| 韩国午夜理伦三级不卡影院| 欧美日韩一区久久| 亚洲日本中文字幕区| 成人激情图片网| 一区视频在线播放| 国产成人免费av在线| 久久这里只有精品6| 奇米色一区二区| 欧美成人精品福利| 蜜桃久久av一区| av电影一区二区| 97se亚洲国产综合自在线| 中文字幕欧美激情| 久久久久久久免费视频了| 国产精品污污网站在线观看 | 成人免费视频网站在线观看| 国产乱人伦偷精品视频不卡| 精品一区二区在线免费观看| 风间由美一区二区三区在线观看| 成人动漫在线一区| 欧美在线一二三四区| 日韩一区二区免费在线观看| 国产精品网站导航| 亚洲成人在线免费| 美女视频黄 久久| 91美女福利视频| 9191久久久久久久久久久| 国产欧美日韩一区二区三区在线观看| 亚洲va欧美va人人爽午夜| 国产成人亚洲综合a∨婷婷 | 久久成人麻豆午夜电影| 99久久精品国产导航| 欧美一级片在线看| 亚洲精品视频在线| 国产精品99久久不卡二区| 欧美精品在欧美一区二区少妇| 国产欧美日韩另类一区| 久久黄色级2电影| 欧美色老头old∨ideo| 国产精品天美传媒| 国产a区久久久| 国产亚洲一二三区| 精品亚洲免费视频| 日韩欧美一区二区三区在线| 三级欧美在线一区| 欧美肥妇毛茸茸| 老司机免费视频一区二区三区| 欧美日韩另类一区| 在线一区二区三区| 亚洲猫色日本管| 欧美视频中文一区二区三区在线观看| 国产精品丝袜一区| 色综合激情久久| 亚洲成人av电影| 欧美乱妇23p| 成人app网站| 日本不卡一区二区三区高清视频| 日韩一二三四区| 不卡一区二区三区四区| 亚洲一区在线看| 精品乱码亚洲一区二区不卡| 国产黄色成人av| 天堂成人国产精品一区| 久久嫩草精品久久久久| 色综合久久六月婷婷中文字幕| 午夜精品在线看| 国产精品网曝门| 欧美大片在线观看| 91视频xxxx| 成人性色生活片| 老司机精品视频在线| 一二三四区精品视频| 国产精品欧美极品| 9191久久久久久久久久久| 97se亚洲国产综合自在线不卡| 免费国产亚洲视频| 一区二区视频在线看| 国产精品视频在线看| 久久综合色播五月| 久久综合久久鬼色中文字| 欧美四级电影网| 在线视频你懂得一区二区三区| 91麻豆文化传媒在线观看| www.欧美色图| 色综合中文字幕国产 | www.日韩在线| 国产成人99久久亚洲综合精品| 久久国产乱子精品免费女| 日韩av中文在线观看| 久久精品国内一区二区三区| 日本 国产 欧美色综合| 九九精品视频在线看| 东方欧美亚洲色图在线| 一本久道久久综合中文字幕| 欧洲人成人精品| 日韩午夜精品视频| 国产欧美一区二区三区在线看蜜臀| 国产日产欧美精品一区二区三区| 国产精品美女久久久久久久久 | 精品国产伦一区二区三区观看方式| 亚洲一区视频在线观看视频| 日韩理论在线观看| 亚洲国产精品久久人人爱蜜臀| 麻豆国产欧美日韩综合精品二区| 国产成人啪免费观看软件 | 九色|91porny| 成人深夜视频在线观看| 91精品国产综合久久精品图片| 久久精品一区八戒影视| 成人欧美一区二区三区小说 | 亚洲国产日韩一区二区| 激情综合一区二区三区| 91最新地址在线播放| 日韩精品一区二区在线观看| 悠悠色在线精品| 91日韩精品一区| 一区在线播放视频| 成人精品视频网站| 日韩欧美精品三级| 午夜一区二区三区在线观看| 成人亚洲精品久久久久软件| 91精品国产手机| 亚洲成人黄色影院| 色婷婷精品久久二区二区蜜臂av| 国产精品久久久久久久久晋中| 国产在线播放一区| 日韩一级视频免费观看在线| 五月婷婷综合激情| 欧美私人免费视频| 日av在线不卡| 久久久久久久久久看片| 国产毛片精品一区| 国产精品久久久久久久久久免费看 | 91精品在线免费观看| 麻豆成人综合网| 精品国产伦一区二区三区免费| 久久精品99国产精品| 久久久精品日韩欧美| 成人做爰69片免费看网站| 午夜视频在线观看一区| 欧美成人乱码一区二区三区| 国产高清不卡一区二区| 一区二区三区四区不卡视频| 69堂国产成人免费视频| 国产精品 日产精品 欧美精品| 成人免费一区二区三区视频 | 99r国产精品| 麻豆视频观看网址久久| 久久九九全国免费| av成人动漫在线观看| 偷偷要91色婷婷| 欧美国产一区在线| 欧美久久一区二区| 成人精品视频一区| 另类综合日韩欧美亚洲| 一区二区三区在线不卡| 久久久久国产精品厨房| 69久久99精品久久久久婷婷| 懂色av一区二区三区免费观看| 亚洲一区av在线| 亚洲欧美中日韩| 国产亚洲综合在线| 日韩免费观看2025年上映的电影| 色综合久久九月婷婷色综合| 国产剧情一区二区| 日本亚洲三级在线| 日本伊人精品一区二区三区观看方式 | 亚洲一区二区视频在线观看| 国产精品久久久久久久浪潮网站 | 欧美日韩激情一区| 欧美中文字幕不卡| 欧美三级日韩三级国产三级| 不卡的av中国片| 91蜜桃在线观看| 欧美日本一区二区| 日韩三级在线观看| 国产欧美一区二区精品久导航|