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

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

?? htftp.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 4 頁
字號:
*/PRIVATE BOOL HTFTPParseURL (HTRequest * request,			    char *url, ftp_ctrl *ctrl, ftp_data *data){    char *login = HTParse(url, "", PARSE_HOST);    char *path = HTParse(url, "", PARSE_PATH+PARSE_PUNCTUATION);    char *ptr = strchr(login, '@');    if (ptr) {				      /* Uid and/or passwd specified */	char *passwd;	*ptr = '\0';	if ((passwd = strchr(login, ':'))) {		 /* Passwd specified */	    *passwd++ = '\0';    	    HTUnEscape(passwd);	    StrAllocCopy(ctrl->passwd, passwd);	}	HTUnEscape(login);	StrAllocCopy(ctrl->uid, login);    } else if (g_FTPControlMode & FTP_ALWAYS_ASK_UID_PW) {	ctrl->uid=NULL;	ctrl->passwd=NULL;    } else {				    /* Use anonymous */	HTUserProfile * up = HTRequest_userProfile(request);        const char * mailaddress = HTUserProfile_email(up);	StrAllocCopy(ctrl->uid, "anonymous");	if (mailaddress)	    StrAllocCopy(ctrl->passwd, mailaddress);	else	    StrAllocCopy(ctrl->passwd, WWW_FTP_CLIENT);    }    HTTRACE(PROT_TRACE, "FTPParse.... uid `%s\' pw `%s\'\n" _ 	    ctrl->uid ? ctrl->uid : "<null>" _ 	    ctrl->passwd ? ctrl->passwd : "<null>");	    /*    ** Look for any type in the URI. If not 'type' parameter then look for    ** trailing slash.    */    if ((ptr = strchr(path, ';')) != NULL) {	*ptr = '\0';	if (strncasecomp(ptr, ";type=", 6))		    /* Look for type */	    data->type = TOUPPER(*(ptr+6));	else if (*(ptr-1) == '/')	    data->type = 'D';    } else if (*(path+strlen(path)-1) == '/') {	*(path+strlen(path)-1) = '\0';	data->type = 'D';    }    HTTRACE(PROT_TRACE, "FTPParse.... Datatype %c\n" _ data->type ? data->type : '?');    StrAllocCopy(data->file, path);    data->offset = data->file;    HT_FREE(login);    HT_FREE(path);    return YES;}/*	Use LIST or NLST**	----------------**	This function sets the type field for what type of list we can use**	Returns YES if OK, else NO*/PRIVATE BOOL FTPListType (ftp_data * data, FTPServerType type){    if (!data) return NO;    switch (type) {      case FTP_GENERIC: 	data->type='N'; break;      case FTP_MACHTEN: 	data->type='L'; break;      case FTP_UNIX:		data->type='L'; break;      case FTP_VMS:		data->type='L'; break;      case FTP_CMS: 		data->type='N'; break;      case FTP_DCTS: 		data->type='N'; break;      case FTP_TCPC: 		data->type='N'; break;      case FTP_PETER_LEWIS:	data->type='L'; break;      case FTP_NCSA:		data->type='N'; break;      case FTP_WINNT:		data->type='L'; break;      default: 			data->type='N'; break;    }    return YES;}/*	Open a Data socket for listening on**	-----------------------------------**	Set up a port to listen for data**	Returns YES if OK, else NO*/PRIVATE BOOL AcceptDataSocket (HTNet *cnet, HTNet *dnet, ftp_data *data){    if (HTHost_listen(NULL, dnet, "ftp://localhost:0") == HT_ERROR)	return NO;    /*    ** Now we must find out who we are to tell the other guy    ** We have to get the local IP interface from the control connection as    ** this is not yet set in the unaccepted data socket    */    {	SockA local_port, local_host;	int addr_size = sizeof(local_port);	memset((void *) &local_host, '\0', addr_size);	memset((void *) &local_port, '\0', addr_size);	if (getsockname(HTNet_socket(cnet),			(struct sockaddr *) &local_host, &addr_size) < 0 || 	    getsockname(HTNet_socket(dnet),			(struct sockaddr *) &local_port, &addr_size) < 0) {	    HTRequest_addSystemError(HTNet_request(dnet), ERR_FATAL, socerrno,				     NO, "getsockname");	    return NO;	}	HTTRACE(PROT_TRACE, "FTP......... This host is `%s\'\n" _ HTInetString(&local_host));	{	    u_long addr = local_host.sin_addr.s_addr;	    u_short port = local_port.sin_port;	    sprintf(data->host, "%d,%d,%d,%d,%d,%d",		    (int)*((unsigned char *)(&addr)+0),		    (int)*((unsigned char *)(&addr)+1),		    (int)*((unsigned char *)(&addr)+2),		    (int)*((unsigned char *)(&addr)+3),		    (int)*((unsigned char *)(&port)+0),		    (int)*((unsigned char *)(&port)+1));	}    }    return YES;}/*	HTFTPLogin**	-----------**    	This function makes a login to a ftp-server. It takes the user name**	and passwd specified in ctrl->user and if that fails or an additional**	account is needed, the user is prompted.**	Returns HT_OK, HT_ERROR, or HT_WOULD_BLOCK*/PRIVATE int HTFTPLogin (HTRequest *request, HTNet *cnet, ftp_ctrl *ctrl){    int status;    typedef enum _state {	SUB_ERROR = -2,	SUB_SUCCESS = -1,	NEED_SELECT = 0,	NEED_GREETING,	NEED_REIN,	NEED_UID,	NEED_PASSWD,	NEED_ACCOUNT,	PROMPT_USER    } state;    /* Jump into a second level state machine */    while (1) {	switch ((state) ctrl->substate) {	case NEED_SELECT:	    {		HTAlertCallback * cbf = HTAlert_find(HT_PROG_LOGIN);		if (cbf) (*cbf)(request, HT_PROG_LOGIN, HT_MSG_NULL, NULL, NULL, NULL);		HTTRACE(PROT_TRACE, "FTP Login... now in state NEED_SELECT\n");		ctrl->substate = ctrl->reset ? NEED_REIN : NEED_GREETING;	    }	    break;	  case NEED_GREETING:	    HTTRACE(PROT_TRACE, "FTP Login... now in state NEED_GREETING\n");	    status = HTHost_read(HTNet_host(cnet), cnet);	    if (status == HT_WOULD_BLOCK)		return HT_WOULD_BLOCK;	    else if (status == HT_LOADED) {		if (ctrl->repcode/100 == 2) {		    ctrl->substate = (ctrl->uid && *ctrl->uid) ?			NEED_UID : PROMPT_USER;		} else {		    ctrl->substate = SUB_ERROR;		}	    } else {		ctrl->substate = SUB_ERROR;	    }	    break;	  case NEED_REIN:	    HTTRACE(PROT_TRACE, "FTP Login... now in state NEED_REIN\n");	    if (!ctrl->sent) {		status = SendCommand(request, ctrl, "REIN", NULL);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    /* 		    ** If the FTP server doesn't support the REIN command, then		    ** the return code will be 502		    */		    if ((ctrl->repcode/100 == 2) || (ctrl->repcode == 502)) {			ctrl->substate = (ctrl->uid && *ctrl->uid) ?			    NEED_UID : PROMPT_USER;		    } else {			ctrl->substate = SUB_SUCCESS;	    /* hope the best */		    }		} else {		    ctrl->substate = SUB_ERROR;		}		ctrl->sent = NO;	    }	    break;	  case NEED_UID:	    HTTRACE(PROT_TRACE, "FTP Login... now in state NEED_UID\n");	    if (!ctrl->sent) {		status = SendCommand(request, ctrl, "USER", ctrl->uid);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    int code = ctrl->repcode/100;		    if (code == 2) 		    /* Logged in w/o passwd! */			ctrl->substate = SUB_SUCCESS;		    else if (code == 3) {	 	/* Password demanded */			ctrl->substate = (ctrl->passwd && *ctrl->passwd) ?			    NEED_PASSWD : PROMPT_USER;/* begin _GM_ *//* Note: libwww bug ID: GM3 */		    /* } else if (ctrl->repcode == 530) */			/* ctrl->substate = PROMPT_USER;*/        /* User unknown */		    } else if (ctrl->repcode == 530) {			if (ctrl->alreadyLoggedIn == YES) {			    ctrl->substate = SUB_SUCCESS;			    HTTRACE(PROT_TRACE, "FTP Login... Already logged in\n");			} else {			    ctrl->substate = PROMPT_USER;			    HTTRACE(PROT_TRACE, "FTP Login... User Unknown\n");			}		    }/* end _GM_ */		    else			ctrl->substate = SUB_ERROR;		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	  case NEED_PASSWD:	    HTTRACE(PROT_TRACE, "FTP Login... now in state NEED_PASSWD\n");	    if (!ctrl->sent) {		status = SendCommand(request, ctrl, "PASS", ctrl->passwd);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    int code = ctrl->repcode/100;		    if (code == 2)		    /* Logged in with passwd */			ctrl->substate = SUB_SUCCESS;		    else if (code == 3) {      		 /* Account required */			HTAlertCallback *cbf = HTAlert_find(HT_A_PROMPT);			HTAlertPar * reply = HTAlert_newReply();			if (cbf && (*cbf)(request, HT_A_PROMPT,					  HT_MSG_ACCOUNT, NULL, NULL, reply)) {			    ctrl->account = HTAlert_replyMessage(reply);			    ctrl->substate = NEED_ACCOUNT;			} else			    ctrl->substate = SUB_ERROR;			HTAlert_deleteReply(reply);		    } else if (ctrl->repcode == 530)			ctrl->substate = PROMPT_USER;		    else			ctrl->substate = SUB_ERROR;		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	  case NEED_ACCOUNT:	    HTTRACE(PROT_TRACE, "FTP Login... now in state NEED_ACCOUNT\n");	    if (!ctrl->sent) {		status = SendCommand(request, ctrl, "ACCT", ctrl->account);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    int code = ctrl->repcode/100;		    if (code == 2)		   /* Logged in with account */			ctrl->substate = SUB_SUCCESS;		    else			ctrl->substate = SUB_ERROR;		 /* hopeless */		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	  case PROMPT_USER:	    HTTRACE(PROT_TRACE, "FTP Login... now in state PROMPT_USER\n");	    {		HTAlertCallback *cbf = HTAlert_find(HT_A_USER_PW);		HTAlertPar * reply = HTAlert_newReply();		HT_FREE(ctrl->uid);		HT_FREE(ctrl->passwd);		if (cbf && (*cbf)(request, HT_A_USER_PW, HT_MSG_FTP_UID,				  NULL, NULL, reply)){		    ctrl->uid = HTAlert_replyMessage(reply);		    ctrl->passwd = HTAlert_replySecret(reply);		}		else {		  ctrl->uid = NULL;		  ctrl->passwd = NULL;		}		HTAlert_deleteReply(reply);		if (ctrl->uid && *ctrl->uid && ctrl->passwd && *ctrl->passwd)		    ctrl->substate = NEED_UID;		else		    ctrl->substate = SUB_ERROR;	    }	    break;	  case SUB_ERROR:	    HTTRACE(PROT_TRACE, "FTP Login... now in state SUB_ERROR\n");	    HTRequest_addError(request, ERR_FATAL, NO,			       HTERR_FTP_LOGIN_FAILURE, NULL, 0, "HTFTPLogin");	    HTTRACE(PROT_TRACE, "FTP......... Login failed\n");	    ctrl->substate = 0;	    return HT_ERROR;	    break;	  case SUB_SUCCESS:	    HTTRACE(PROT_TRACE, "FTP Login... now in state SUB_SUCCESS\n");	    HTTRACE(PROT_TRACE, "FTP......... Logged in as `%s\'\n" _ ctrl->uid);	    ctrl->substate = 0;	    return HT_OK;	    break;	}    }}/*	HTFTPDataConnection**	-------------------**    	Prepares a data connection to the server and initializes the**	transfer mode.**	Returns HT_OK, HT_ERROR, or HT_WOULD_BLOCK*/PRIVATE int HTFTPDataConnection (HTRequest * request, HTNet *cnet,				 ftp_ctrl *ctrl, ftp_data *data){    int status;    HTNet *dnet = ctrl->dnet;    typedef enum _state {	SUB_ERROR = -2,	SUB_SUCCESS = -1,	NEED_TYPE = 0,	NEED_SELECT,	NEED_PASV,	NEED_PORT    } state;        /* Jump into a second level state machine */    while (1) {	switch ((state) ctrl->substate) {	  case NEED_TYPE:	    HTTRACE(PROT_TRACE, "FTP Data.... now in state NEED_TYPE\n");	    if(!data->type|| data->pasv || data->type=='N' || data->type=='L'){		ctrl->substate = NEED_SELECT;		break;	    }	    if (!ctrl->sent) {		char type[2];		*type = data->type;		*(type+1) = '\0';		status = SendCommand(request, ctrl, "TYPE", type);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_ERROR)		    ctrl->substate = SUB_ERROR;		ctrl->sent = YES;	    } else {		status = HTHost_read(HTNet_host(cnet), cnet);		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    if (ctrl->repcode/100 == 2)			ctrl->substate = NEED_SELECT;		    else			ctrl->substate = SUB_ERROR;		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利区一区二区三区| 大陆成人av片| 国产乱码一区二区三区| 91精品麻豆日日躁夜夜躁| 亚洲日本在线看| 91视频免费观看| 日韩精品91亚洲二区在线观看 | 99国产欧美另类久久久精品 | 在线视频欧美精品| 日韩成人一区二区| 久久亚洲一级片| 91麻豆蜜桃一区二区三区| www.亚洲人| 九一久久久久久| 中文字幕佐山爱一区二区免费| 久久女同精品一区二区| 91福利社在线观看| 777a∨成人精品桃花网| 精品免费一区二区三区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲成人免费电影| 久久这里只有精品视频网| 国产午夜亚洲精品羞羞网站| 欧美揉bbbbb揉bbbbb| 精品一区二区三区在线观看| 精彩视频一区二区| 99r国产精品| 欧美电影一区二区| 91丨九色丨蝌蚪丨老版| 欧美丝袜第三区| 91丨九色丨国产丨porny| 色8久久精品久久久久久蜜| 欧美日韩卡一卡二| 色综合亚洲欧洲| 国产精品综合二区| 91黄色免费版| 久久免费视频色| 亚洲成人一区二区| 国产露脸91国语对白| 欧美中文字幕一区二区三区| 精品国产伦一区二区三区观看体验| 欧美性猛交xxxxxxxx| 欧美一二三在线| 91精品国产丝袜白色高跟鞋| 欧洲一区在线观看| 欧美精品一区二区三区一线天视频 | 国产aⅴ综合色| 国产成人亚洲精品青草天美| 韩国成人精品a∨在线观看| 久草精品在线观看| 欧美日韩国产综合视频在线观看| 国产三级一区二区| 麻豆视频观看网址久久| 免费在线观看日韩欧美| 极品尤物av久久免费看| 欧美性感一区二区三区| 日本一二三四高清不卡| 国产欧美一区二区精品婷婷 | 欧美精品黑人性xxxx| 亚洲国产岛国毛片在线| 久久激五月天综合精品| 国产一区二区毛片| 国产成人在线观看免费网站| 欧美裸体一区二区三区| 一区二区免费看| 亚洲va国产天堂va久久en| 色综合久久综合网97色综合 | 日韩女优av电影| 精品国产电影一区二区| 天堂蜜桃91精品| 欧美日韩一区小说| 一区二区三区国产| 色婷婷综合久久| 亚洲三级在线观看| 色屁屁一区二区| 亚洲精品国产成人久久av盗摄| 婷婷综合另类小说色区| 久草中文综合在线| 精品国产乱码久久久久久图片 | 午夜久久久影院| 欧美综合一区二区| 亚洲国产美女搞黄色| 精品一区二区三区欧美| 欧美mv和日韩mv的网站| 久久99精品久久久久久久久久久久 | 欧美一区二区三区喷汁尤物| 日本不卡一区二区三区 | 91福利在线免费观看| 亚洲高清久久久| 精品日韩一区二区三区| 国产精品888| 亚洲男人的天堂av| 加勒比av一区二区| 中文字幕欧美国产| 色综合久久88色综合天天| 亚洲成av人片在www色猫咪| 777xxx欧美| 丁香激情综合国产| 亚洲美女视频在线观看| 欧美精品一二三| 国产在线不卡一区| 亚洲黄色免费网站| 日韩欧美色电影| 91最新地址在线播放| 午夜精品久久久久久| 久久久久久久性| 在线观看精品一区| 国产真实乱对白精彩久久| 亚洲素人一区二区| 日韩欧美中文字幕制服| av在线这里只有精品| 日本强好片久久久久久aaa| 中文字幕第一区二区| 欧美精选一区二区| av一区二区三区黑人| 免费观看日韩电影| 亚洲伦理在线免费看| 精品久久久久久久久久久久包黑料 | 国产美女在线精品| 亚洲一区二区高清| 色综合一区二区三区| 久久9热精品视频| 亚洲一区二区三区视频在线播放 | 精品国产免费人成在线观看| 91性感美女视频| 国产精品一区二区在线观看不卡| 一区二区不卡在线播放| 久久精品一区二区| 日韩一区二区视频在线观看| 色国产精品一区在线观看| 国产九九视频一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 亚洲天堂av一区| 国产精品初高中害羞小美女文| 丰满白嫩尤物一区二区| 免费成人结看片| 亚洲成在人线在线播放| 国产精品久久久久久久久免费桃花| 日韩午夜激情电影| 91精品在线免费观看| 欧美性一二三区| 在线亚洲高清视频| 97精品国产97久久久久久久久久久久| 激情综合网激情| 捆绑变态av一区二区三区| 亚洲成人av一区二区| 亚洲精品乱码久久久久久黑人| 国产精品五月天| 91福利国产成人精品照片| www.欧美亚洲| aaa亚洲精品| 99久久夜色精品国产网站| 不卡视频一二三四| 一区二区久久久久| 亚洲欧美经典视频| 亚洲视频在线一区观看| 亚洲精品你懂的| 亚洲国产欧美日韩另类综合 | 蜜臀久久99精品久久久久宅男| 亚洲成人激情自拍| 偷窥国产亚洲免费视频| 免费成人美女在线观看| 狠狠色综合日日| 国产成人精品影院| 99精品黄色片免费大全| 在线精品国精品国产尤物884a| 在线视频国产一区| 日韩色视频在线观看| 久久一二三国产| 国产精品国模大尺度视频| 成人欧美一区二区三区| 亚洲黄色性网站| 一区二区三区中文在线观看| 亚洲成人av一区| 国产自产v一区二区三区c| av激情综合网| 欧美婷婷六月丁香综合色| 欧美一区二区高清| 精品日韩99亚洲| 综合色天天鬼久久鬼色| 香蕉久久夜色精品国产使用方法| 亚洲人成精品久久久久久| 亚洲一区二区三区在线| 亚洲成人av资源| 成人免费看片app下载| 国产成人免费视频精品含羞草妖精 | 成人精品在线视频观看| 91蝌蚪porny| 日韩欧美黄色影院| 国产精品久久毛片av大全日韩| 一区二区三区国产精品| 麻豆视频一区二区| 91浏览器在线视频| 日韩一区二区三区在线| 国产精品蜜臀在线观看| 日韩在线观看一区二区| 91视频免费播放| 久久精品夜色噜噜亚洲a∨| 亚洲综合丝袜美腿| 国产中文一区二区三区|