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

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

?? htcookie.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
字號(hào):
/***	SIMPLE HTTP COOKIE FILTER HANDLER****	(c) COPYRIGHT MIT 1999.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTCookie.c,v 2.5 1999/07/31 01:30:16 raff Exp $****	Written based on Jim Raven's code sent to the <www-lib@w3.org> list****      History:**         JR:  Sent code to the list**         HFN: Made a libwww module***//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "WWWHTTP.h"#include "WWWMIME.h"#include "HTCookie.h"					 /* Implemented here *//* Interface to persistent cookie jar */PRIVATE HTCookieSetCallback * 	SetCookie = NULL;PRIVATE void * 	SetCookieContext = NULL;PRIVATE HTCookieFindCallback *	FindCookie = NULL;PRIVATE void * FindCookieContext = NULL;/* Are cookies enabled */PRIVATE BOOL baking_cookies = NO;/* Our cookies */struct _HTCookie {    char *		name;    char *		value;    char *		domain;    char *		path;    time_t		expiration;    BOOL		secure;};/* Hold all cookies found for a single request */typedef struct _HTCookieHolder {    HTRequest *		request;    HTList *		cookies;} HTCookieHolder;/* List of current cookie holders */PRIVATE HTList *	cookie_holder = NULL;/* What should we do with cookies? */PRIVATE HTCookieMode CookieMode = HT_COOKIE_PROMPT | HT_COOKIE_ACCEPT | HT_COOKIE_SEND;/* ------------------------------------------------------------------------- */PRIVATE HTCookie * HTCookie_new (void){    HTCookie * me = NULL;    if ((me = (HTCookie *) HT_CALLOC(1, sizeof(HTCookie))) == NULL)        HT_OUTOFMEM("HTCookie_new");    return me;} PRIVATE BOOL HTCookie_delete (HTCookie * me){    if (me) {	HT_FREE(me->name);	HT_FREE(me->value);	HT_FREE(me->domain);	HT_FREE(me->path);	HT_FREE(me);	return YES;    }    return NO;}PUBLIC BOOL HTCookie_setName (HTCookie * me, const char * name){    if (me && name) {	me->name = StrAllocCopy(me->name, name);	return YES;    }    return NO;}PUBLIC char * HTCookie_name (HTCookie * me){    return me ? me->name : NULL;}PUBLIC BOOL HTCookie_setValue (HTCookie * me, const char * value){    if (me && value) {	me->value = StrAllocCopy(me->value, value);	return YES;    }    return NO;}PUBLIC char * HTCookie_value (HTCookie * me){    return me ? me->value : NULL;}PUBLIC BOOL HTCookie_setDomain (HTCookie * me, const char * domain){    if (me && domain) {	me->domain = StrAllocCopy(me->domain, domain);	return YES;    }    return NO;}PUBLIC char * HTCookie_domain (HTCookie * me){    return me ? me->domain : NULL;}PUBLIC BOOL HTCookie_setPath (HTCookie * me, const char * path){    if (me && path) {	me->path = StrAllocCopy(me->path, path);	return YES;    }    return NO;}PUBLIC char * HTCookie_path (HTCookie * me){    return me ? me->path : NULL;}PUBLIC time_t HTCookie_setExpiration (HTCookie * me, time_t expiration){    if (me) {	me->expiration = expiration;	return YES;    }    return NO;}PUBLIC time_t HTCookie_expiration (HTCookie * me){    return me ? me->expiration : -1;}PUBLIC time_t HTCookie_setSecure (HTCookie * me, BOOL secure){    if (me) {	me->secure = secure;	return YES;    }    return NO;}PUBLIC BOOL HTCookie_isSecure (HTCookie * me){    return me ? me->secure : NO;}/* ------------------------------------------------------------------------- */PRIVATE BOOL HTCookieHolder_addCookie (HTRequest * request, HTCookie * cookie){    if (request && cookie) {	HTList * cur = cookie_holder;	HTCookieHolder * pres = NULL;	/* Make sure that we have a cookie holder list */	if (!cookie_holder) cookie_holder = HTList_new();	/* See if we already have a cookie holder for this request */	while ((pres = (HTCookieHolder *) HTList_nextObject(cur))) {	    if (pres->request == request) break;	}	/* If found then use existing cookie holder, otherwise create new one */	if (!pres) {	    if ((pres = (HTCookieHolder *) HT_CALLOC(1, sizeof(HTCookieHolder))) == NULL)		HT_OUTOFMEM("HTCookieHolder_newCookie");	    pres->request = request;	    pres->cookies = HTList_new();	    /* Add to cookie holder list */	    HTList_addObject(cookie_holder, pres);	}	/* Now add the cookie */	HTList_addObject(pres->cookies, cookie);	return YES;    }    return NO;}PRIVATE HTCookieHolder * HTCookieHolder_find (HTRequest * request){    if (request) {	HTList * cur = cookie_holder;	HTCookieHolder * pres = NULL;	while ((pres = (HTCookieHolder *) HTList_nextObject(cur))) {	    if (pres->request == request) return pres;	}    }    return NULL;}PRIVATE BOOL HTCookieHolder_delete (HTCookieHolder * me){    if (me) {	if (me->cookies) {	    HTList * cookies = me->cookies;	    HTCookie * cookie;	    while ((cookie = (HTCookie *) HTList_nextObject(cookies)))		HTCookie_delete(cookie);	    HTList_delete(me->cookies);	}	HTList_removeObject(cookie_holder, me);	HT_FREE(me);	return YES;    }    return NO;}PRIVATE BOOL HTCookieHolder_deleteAll (void){    if (cookie_holder) {	HTList * cur = cookie_holder;	HTCookieHolder * pres = NULL;	while ((pres = (HTCookieHolder *) HTList_nextObject(cur))) {	    HTCookieHolder_delete(pres);	}	HTList_delete(cookie_holder);	cookie_holder = NULL;	return YES;    }    return NO;}/* ------------------------------------------------------------------------- *//***  MIME header parser for the Set-Cookie header field. We parse the cookies**  and create HTCookie objects and store them in the cookie holder so that**  the cookie after filter can deal with them accordingly.*/PRIVATE int HTCookie_parseSetCookie (HTRequest * request, HTResponse * response,				     char * token, char * value){    char * cookie_name = HTNextField(&value);    char * cookie_value = HTNextField(&value);    if (cookie_name && *cookie_name && cookie_value) {	HTCookie * cookie = HTCookie_new();	char * param_pair;	HTCookie_setName(cookie, cookie_name);	HTCookie_setValue(cookie, cookie_value);		/* Add the cookie to our holder */	HTCookieHolder_addCookie(request, cookie);	/* Parse cookie parameters */	while ((param_pair = HTNextParam(&value))) {	    char * tok = HTNextField(&param_pair);	    char * val = param_pair;	    if (tok) {		if (!strcasecomp(tok, "expires") && val && *val) {		    HTTRACE(STREAM_TRACE, "Cookie...... Expires `%s\'\n" _ val);		    HTCookie_setExpiration(cookie, HTParseTime(val, NULL, YES));		} else if (!strcasecomp(tok, "domain") && val && *val) {		    HTTRACE(STREAM_TRACE, "Cookie...... Domain `%s\'\n" _ val);		    HTCookie_setDomain(cookie, val);		} else if (!strcasecomp(tok, "path") && val && *val) {		    HTTRACE(STREAM_TRACE, "Cookie...... Path `%s\'\n" _ val);		    HTCookie_setPath(cookie, val);		} else if (!strcasecomp(tok, "secure")) {		    HTTRACE(STREAM_TRACE, "Cookie...... Secure `%s\'\n" _ val);		    HTCookie_setSecure(cookie, YES);		} else		    HTTRACE(STREAM_TRACE, "Cookie...... Unknown `%s\' with value `%s\'\n" _ 			    tok _ val ? val : "<null>");	    }	}    }    return HT_OK;}/***  Check whether the application provides us with a cookie or more.*/PRIVATE int HTCookie_beforeFilter (HTRequest * request, void * param, int mode){    if ((CookieMode & HT_COOKIE_SEND) && FindCookie) {	HTAssocList * cookies = (*FindCookie)(request, FindCookieContext);	if (cookies) {	    HTChunk * cookie_header = HTChunk_new(64);	    HTAssocList * cur = cookies;	    HTAssoc * pres;	    BOOL first=YES;	    while ((pres = (HTAssoc *) HTAssocList_nextObject(cur))) {		if (!first) HTChunk_putc(cookie_header, ';');		HTChunk_puts(cookie_header, HTAssoc_name(pres));		HTChunk_putc(cookie_header, '=');		HTChunk_puts(cookie_header, HTAssoc_value(pres));		first = NO;	    }	    HTRequest_addExtraHeader(request, "Cookie", HTChunk_data(cookie_header));	    HTChunk_delete(cookie_header);	    /* Also delete the association list */	    HTAssocList_delete(cookies);	}    }    return HT_OK;}/***  Check the response to see if we got a cookie or more.**  If so then figure out what to do with it (prompt user, store, etc.)*/PRIVATE int HTCookie_afterFilter (HTRequest * request, HTResponse * response,				  void * param, int status){    if ((CookieMode & HT_COOKIE_ACCEPT) && SetCookie) {	HTCookieHolder * holder = HTCookieHolder_find(request);	if (holder) {	    HTList * cookies = holder->cookies;	    HTCookie * pres;	    while ((pres = (HTCookie *) HTAssocList_nextObject(cookies))) {		/* Should we check to see if hosts match? */		if (CookieMode & (HT_COOKIE_SAME_HOST|HT_COOKIE_SAME_DOMAIN)) {		    char * cookie_host = HTCookie_domain(pres);		    if (cookie_host) {			int res;			char * addr = HTAnchor_address((HTAnchor *) HTRequest_anchor(request));			char * host = HTParse(addr, "", PARSE_HOST);						if (CookieMode & HT_COOKIE_SAME_DOMAIN)			    res = tailcasecomp(cookie_host, host);			else			    res = strcasecomp(cookie_host, host);			if (res != 0) {			    HTTRACE(APP_TRACE, "Cookie...... Host `%s\' doesn't match what is sent in cookie `%s\'\n" _ host _ cookie_host);			    HT_FREE(addr);			    continue;			}			HT_FREE(addr);		    }		}		/* Should we prompt the user? */		if (CookieMode & HT_COOKIE_PROMPT) {		    HTAlertCallback * prompt = HTAlert_find(HT_A_CONFIRM);		    if (prompt) {			if ((*prompt)(request, HT_A_CONFIRM, HT_MSG_ACCEPT_COOKIE,				      NULL, NULL, NULL) != YES)			    continue;		    } else			continue;		}		/* Call the application with our new cookie */		(*SetCookie)(request, pres, SetCookieContext);	    }	    	    /* Delete cookie holder */	    HTCookieHolder_delete(holder);	}    }    return HT_OK;}/* ------------------------------------------------------------------------- *//***  Start and stop the cookie engine*/PUBLIC BOOL HTCookie_init (void){    if (!baking_cookies) {	/* Register the SetCookie header parser */	HTHeader_addParser("Set-Cookie", NO, HTCookie_parseSetCookie);	/* Register the cookie before and after filters */	HTNet_addBefore(HTCookie_beforeFilter, "http://*", NULL, HT_FILTER_MIDDLE);	HTNet_addAfter(HTCookie_afterFilter, "http://*", NULL, HT_ALL, HT_FILTER_MIDDLE);	baking_cookies = YES;	return YES;    }    return NO;}PUBLIC BOOL HTCookie_terminate (void){    /* Unregister Set-Cookie header parser */    HTHeader_deleteParser("Set-Cookie");    /* Unregister the cookie before and after filters */    HTNet_deleteBefore(HTCookie_beforeFilter);    HTNet_deleteAfter(HTCookie_afterFilter);    /* Delete all pending cookies */    HTCookieHolder_deleteAll();    baking_cookies = NO;    return YES;}PUBLIC BOOL HTCookie_setCookieMode (HTCookieMode mode){    CookieMode = mode;    return YES;}PUBLIC HTCookieMode HTCookie_cookieMode (void){    return CookieMode;}/***  Callbacks can be used by the application to set and retrieve cookies**  from a persistent cookie jar as libwww doesn't provide a persistent**  storage for this kind of thing and they probably should be secured**  anyway.*/PUBLIC BOOL HTCookie_setCallbacks (HTCookieSetCallback *	setCookie,				   void * 			setCookieContext,				   HTCookieFindCallback *	findCookie,				   void * 			findCookieContext){    if (setCookie && findCookie) {	HTTRACE(APP_TRACE, "Cookie...... Registering cookie callbacks\n");	SetCookie = setCookie;	SetCookieContext = setCookieContext;	FindCookie = findCookie;	FindCookieContext = findCookieContext;	return YES;    }    return NO;}PUBLIC BOOL HTCookie_deleteCallbacks (void){    HTTRACE(APP_TRACE, "Cookie...... Unregistering cookie callbacks\n");    SetCookie = NULL;    SetCookieContext = NULL;    FindCookie = NULL;    FindCookieContext = NULL;    return YES;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区精品久久91| 免费成人在线观看| 欧美精品一区二区三区蜜桃| 97精品国产露脸对白| 美日韩一级片在线观看| 中文字幕日韩欧美一区二区三区| 欧美性猛交xxxx黑人交| 国产成人午夜精品影院观看视频| 日韩不卡手机在线v区| 国产精品久久久久久久久果冻传媒| 欧美一区二区高清| 91国产视频在线观看| 国产91露脸合集magnet| 久久国产三级精品| 婷婷综合久久一区二区三区| 国产精品久久国产精麻豆99网站| 欧美xingq一区二区| 欧美日韩在线综合| 一本一道久久a久久精品综合蜜臀| 国产一区二区三区精品视频| 琪琪一区二区三区| 亚洲电影视频在线| 亚洲黄色小视频| 中文字幕一区视频| 国产欧美一区视频| 久久精品一区二区三区不卡 | 制服丝袜亚洲色图| 91成人看片片| 91蜜桃免费观看视频| 成人午夜激情片| 国产成人免费在线视频| 国产一区二区中文字幕| 精品在线观看视频| 久久99国产精品尤物| 麻豆精品一区二区综合av| 免费观看在线色综合| 亚洲国产精品一区二区久久| 一区二区激情小说| 亚洲成人福利片| 偷拍与自拍一区| 婷婷中文字幕综合| 免费在线观看日韩欧美| 日韩有码一区二区三区| 日本人妖一区二区| 久久精品国产色蜜蜜麻豆| 久久99蜜桃精品| 国产乱码字幕精品高清av| 国产一区二区在线观看免费| 国产精品亚洲第一| 岛国一区二区在线观看| 99久久精品国产麻豆演员表| 色妹子一区二区| 欧美精品久久一区| 日韩亚洲电影在线| 国产日韩欧美精品综合| 国产亚洲一区二区三区| 中文子幕无线码一区tr| 亚洲欧美日韩一区二区 | 成人av在线播放网址| 成人综合在线观看| 91女神在线视频| 欧美日韩国产免费| 欧美成人一级视频| 国产精品色在线观看| 亚洲免费视频中文字幕| 日韩精彩视频在线观看| 国产在线不卡视频| 99视频超级精品| 欧美精品高清视频| 久久久亚洲午夜电影| 中文字幕一区二区视频| 亚洲国产精品久久久久婷婷884| 日本午夜一区二区| 国产99久久久国产精品免费看| 91亚洲精华国产精华精华液| 在线不卡一区二区| 中文字幕国产一区二区| 亚洲成av人片观看| 国产精品一二三在| 色哟哟在线观看一区二区三区| 69p69国产精品| 国产精品污www在线观看| 亚洲成精国产精品女| 国产精品一区二区三区乱码| 欧美三区在线观看| 久久精品一区二区三区不卡| 亚洲大型综合色站| 国产91精品久久久久久久网曝门| 欧美亚洲一区二区在线| 久久综合久久久久88| 一区二区三区精品视频| 国产裸体歌舞团一区二区| 91成人国产精品| 国产精品欧美精品| 奇米在线7777在线精品 | 这里是久久伊人| 国产精品卡一卡二| 九九视频精品免费| 欧美久久久一区| 亚洲免费电影在线| 国产精品1区2区3区在线观看| 91精品国产91热久久久做人人 | 亚洲成av人在线观看| www..com久久爱| 欧美精品一区二区三区四区| 亚洲成人免费观看| 色综合网色综合| 国产精品高潮呻吟久久| 国内精品在线播放| 91精品国产色综合久久ai换脸| 亚洲蜜桃精久久久久久久| 国产电影一区二区三区| 欧美xfplay| 美女看a上一区| 欧美丰满美乳xxx高潮www| 亚洲欧美激情在线| av一二三不卡影片| 国产欧美一区二区精品仙草咪 | 欧美最新大片在线看| 国产精品盗摄一区二区三区| 国产精品一级二级三级| 久久综合九色综合欧美亚洲| 日本视频中文字幕一区二区三区| 在线观看免费成人| 一区二区三区中文字幕| 色一区在线观看| 亚洲视频综合在线| 91玉足脚交白嫩脚丫在线播放| 国产精品三级av| 成人午夜碰碰视频| 国产精品看片你懂得| 成人免费电影视频| 国产精品久久久久久久午夜片 | 欧美丰满一区二区免费视频| 亚洲第一久久影院| 91麻豆精品国产91久久久久久| 亚洲国产成人av| 精品1区2区3区| 日韩高清在线观看| 欧美一区二区人人喊爽| 美腿丝袜一区二区三区| 日韩美一区二区三区| 麻豆久久久久久| 国产视频一区二区在线| 国v精品久久久网| 国产精品国产三级国产aⅴ无密码| eeuss鲁片一区二区三区 | 国产在线一区二区综合免费视频| 欧美白人最猛性xxxxx69交| 国产福利一区二区三区视频| 国产欧美视频一区二区三区| gogogo免费视频观看亚洲一| 亚洲一区二区三区四区在线免费观看| 欧美日韩激情一区二区三区| 日韩**一区毛片| 久久久高清一区二区三区| 99久久综合色| 亚洲成人av福利| 欧美精品一区二| 成人免费视频一区二区| 怡红院av一区二区三区| 7777精品伊人久久久大香线蕉的| 九九视频精品免费| 综合激情成人伊人| 欧美伦理电影网| 国产呦萝稀缺另类资源| 亚洲精品视频一区二区| 欧美高清性hdvideosex| 国产精品一色哟哟哟| 一区二区三区色| 日韩精品专区在线| 北条麻妃国产九九精品视频| 三级在线观看一区二区| 久久九九久久九九| 欧美日韩免费观看一区三区| 国模冰冰炮一区二区| 亚洲图片你懂的| 日韩一区二区精品| 99久久精品免费| 久久成人羞羞网站| 亚洲综合在线五月| 久久久蜜桃精品| 欧美日韩精品一区二区| 国产精品白丝jk黑袜喷水| 五月婷婷综合激情| 国产精品久久久一区麻豆最新章节| 欧美日韩中文一区| 成人午夜激情视频| 麻豆成人免费电影| 一区二区三区日韩| 欧美国产日韩亚洲一区| 欧美三级视频在线观看| 国产成人啪免费观看软件| 亚洲一区欧美一区| 国产日韩av一区| 日韩一级片网站| 欧美日韩一区高清| 99国产精品久| 国产精品一级在线| 日日骚欧美日韩|