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

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

?? telnet.c

?? 經(jīng)典的unix下telnet的c代碼
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
/*	$OpenBSD: telnet.c,v 1.18 2003/11/08 19:17:29 jmc Exp $	*//*	$NetBSD: telnet.c,v 1.7 1996/02/28 21:04:15 thorpej Exp $	*//* * Copyright (c) 1988, 1990, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#include "telnet_locl.h"#include <curses.h>#include <term.h>#define        strip(x) (eight ? (x) : ((x) & 0x7f))static unsigned char	subbuffer[SUBBUFSIZE],			*subpointer, *subend;	 /* buffer for sub-options */#define	SB_CLEAR()	subpointer = subbuffer;#define	SB_TERM()	{ subend = subpointer; SB_CLEAR(); }#define	SB_ACCUM(c)	if (subpointer < (subbuffer+sizeof subbuffer)) { \				*subpointer++ = (c); \			}#define	SB_GET()	((*subpointer++)&0xff)#define	SB_PEEK()	((*subpointer)&0xff)#define	SB_EOF()	(subpointer >= subend)#define	SB_LEN()	(subend - subpointer)char	options[256];		/* The combined options */char	do_dont_resp[256];char	will_wont_resp[256];int	eight = 3,	binary = 0,	autologin = 0,	/* Autologin anyone? */	skiprc = 0,	connected,	showoptions,	In3270,		/* Are we in 3270 mode? */	ISend,		/* trying to send network data in */	debug = 0,	crmod,	netdata,	/* Print out network data flow */	crlf,		/* Should '\r' be mapped to <CR><LF> (or <CR><NUL>)? */#if	defined(TN3270)	noasynchtty = 0,/* User specified "-noasynch" on command line */	noasynchnet = 0,/* User specified "-noasynch" on command line */	askedSGA = 0,	/* We have talked about suppress go ahead */#endif	/* defined(TN3270) */	telnetport,	wantencryption = 0,	SYNCHing,	/* we are in TELNET SYNCH mode */	flushout,	/* flush output */	autoflush = 0,	/* flush output when interrupting? */	autosynch,	/* send interrupt characters with SYNCH? */	localflow,	/* we handle flow control locally */	restartany,	/* if flow control enabled, restart on any character */	localchars,	/* we recognize interrupt/quit */	donelclchars,	/* the user has set "localchars" */	donebinarytoggle,	/* the user has put us in binary */	dontlecho,	/* do we suppress local echoing right now? */	globalmode,	clienteof = 0;char *prompt = 0;int scheduler_lockout_tty = 0;cc_t escape;cc_t rlogin;#ifdef	KLUDGELINEMODEcc_t echoc;#endif/* * Telnet receiver states for fsm */#define	TS_DATA		0#define	TS_IAC		1#define	TS_WILL		2#define	TS_WONT		3#define	TS_DO		4#define	TS_DONT		5#define	TS_CR		6#define	TS_SB		7		/* sub-option collection */#define	TS_SE		8		/* looking for sub-option end */static int	telrcv_state;#ifdef	OLD_ENVIRONunsigned char telopt_environ = TELOPT_NEW_ENVIRON;#else# define telopt_environ TELOPT_NEW_ENVIRON#endifjmp_buf	toplevel = { 0 };jmp_buf	peerdied;int	flushline;int	linemode;#ifdef	KLUDGELINEMODEint	kludgelinemode = 1;#endif/* * The following are some clocks used to decide how to interpret * the relationship between various variables. */Clocks clocks;/* * Initialize telnet environment. */    voidinit_telnet(){    env_init();    SB_CLEAR();    memset((char *)options, 0, sizeof options);    connected = In3270 = ISend = localflow = donebinarytoggle = 0;#if	defined(AUTHENTICATION) || defined(ENCRYPTION)    auth_encrypt_connect(connected);#endif	/* defined(AUTHENTICATION) || defined(ENCRYPTION) */    restartany = -1;    SYNCHing = 0;    /* Don't change NetTrace */    escape = CONTROL(']');    rlogin = _POSIX_VDISABLE;#ifdef	KLUDGELINEMODE    echoc = CONTROL('E');#endif    flushline = 1;    telrcv_state = TS_DATA;}/* * These routines are in charge of sending option negotiations * to the other side. * * The basic idea is that we send the negotiation if either side * is in disagreement as to what the current state should be. */    voidsend_do(c, init)    int c, init;{    if (init) {	if (((do_dont_resp[c] == 0) && my_state_is_do(c)) ||				my_want_state_is_do(c))	    return;	set_my_want_state_do(c);	do_dont_resp[c]++;    }    NET2ADD(IAC, DO);    NETADD(c);    printoption("SENT",DO, c);}    voidsend_dont(c, init)    int c, init;{    if (init) {	if (((do_dont_resp[c] == 0) && my_state_is_dont(c)) ||				my_want_state_is_dont(c))	    return;	set_my_want_state_dont(c);	do_dont_resp[c]++;    }    NET2ADD(IAC, DONT);    NETADD(c);    printoption("SENT", DONT, c);}    voidsend_will(c, init)    int c, init;{    if (init) {	if (((will_wont_resp[c] == 0) && my_state_is_will(c)) ||				my_want_state_is_will(c))	    return;	set_my_want_state_will(c);	will_wont_resp[c]++;    }    NET2ADD(IAC, WILL);    NETADD(c);    printoption("SENT", WILL, c);}    voidsend_wont(c, init)    int c, init;{    if (init) {	if (((will_wont_resp[c] == 0) && my_state_is_wont(c)) ||				my_want_state_is_wont(c))	    return;	set_my_want_state_wont(c);	will_wont_resp[c]++;    }    NET2ADD(IAC, WONT);    NETADD(c);    printoption("SENT", WONT, c);}	voidwilloption(option)	int option;{	int new_state_ok = 0;	if (do_dont_resp[option]) {	    --do_dont_resp[option];	    if (do_dont_resp[option] && my_state_is_do(option))		--do_dont_resp[option];	}	if ((do_dont_resp[option] == 0) && my_want_state_is_dont(option)) {	    switch (option) {	    case TELOPT_ECHO:#	    if defined(TN3270)		/*		 * The following is a pain in the rear-end.		 * Various IBM servers (some versions of Wiscnet,		 * possibly Fibronics/Spartacus, and who knows who		 * else) will NOT allow us to send "DO SGA" too early		 * in the setup proceedings.  On the other hand,		 * 4.2 servers (telnetd) won't set SGA correctly.		 * So, we are stuck.  Empirically (but, based on		 * a VERY small sample), the IBM servers don't send		 * out anything about ECHO, so we postpone our sending		 * "DO SGA" until we see "WILL ECHO" (which 4.2 servers		 * DO send).		  */		{		    if (askedSGA == 0) {			askedSGA = 1;			if (my_want_state_is_dont(TELOPT_SGA))			    send_do(TELOPT_SGA, 1);		    }		}		    /* Fall through */	    case TELOPT_EOR:#endif	    /* defined(TN3270) */	    case TELOPT_BINARY:	    case TELOPT_SGA:		settimer(modenegotiated);		/* FALL THROUGH */	    case TELOPT_STATUS:#if	defined(AUTHENTICATION)	    case TELOPT_AUTHENTICATION:#endif#if    defined(ENCRYPTION)	    case TELOPT_ENCRYPT:#endif		new_state_ok = 1;		break;	    case TELOPT_TM:		if (flushout)		    flushout = 0;		/*		 * Special case for TM.  If we get back a WILL,		 * pretend we got back a WONT.		 */		set_my_want_state_dont(option);		set_my_state_dont(option);		return;			/* Never reply to TM will's/wont's */	    case TELOPT_LINEMODE:	    default:		break;	    }	    if (new_state_ok) {		set_my_want_state_do(option);		send_do(option, 0);		setconnmode(0);		/* possibly set new tty mode */	    } else {		do_dont_resp[option]++;		send_dont(option, 0);	    }	}	set_my_state_do(option);#if    defined(ENCRYPTION)	if (option == TELOPT_ENCRYPT)		encrypt_send_support();#endif}	voidwontoption(option)	int option;{	if (do_dont_resp[option]) {	    --do_dont_resp[option];	    if (do_dont_resp[option] && my_state_is_dont(option))		--do_dont_resp[option];	}	if ((do_dont_resp[option] == 0) && my_want_state_is_do(option)) {	    switch (option) {#ifdef	KLUDGELINEMODE	    case TELOPT_SGA:		if (!kludgelinemode)		    break;		/* FALL THROUGH */#endif	    case TELOPT_ECHO:		settimer(modenegotiated);		break;	    case TELOPT_TM:		if (flushout)		    flushout = 0;		set_my_want_state_dont(option);		set_my_state_dont(option);		return;		/* Never reply to TM will's/wont's */#ifdef ENCRYPTION	    case TELOPT_ENCRYPT:		encrypt_not();		break;#endif	    default:		break;	    }	    set_my_want_state_dont(option);	    if (my_state_is_do(option))		send_dont(option, 0);	    setconnmode(0);			/* Set new tty mode */	} else if (option == TELOPT_TM) {	    /*	     * Special case for TM.	     */	    if (flushout)		flushout = 0;	    set_my_want_state_dont(option);	}	set_my_state_dont(option);}	static voiddooption(option)	int option;{	int new_state_ok = 0;	if (will_wont_resp[option]) {	    --will_wont_resp[option];	    if (will_wont_resp[option] && my_state_is_will(option))		--will_wont_resp[option];	}	if (will_wont_resp[option] == 0) {	  if (my_want_state_is_wont(option)) {	    switch (option) {	    case TELOPT_TM:		/*		 * Special case for TM.  We send a WILL, but pretend		 * we sent WONT.		 */		send_will(option, 0);		set_my_want_state_wont(TELOPT_TM);		set_my_state_wont(TELOPT_TM);		return;#	if defined(TN3270)	    case TELOPT_EOR:		/* end of record */#	endif	/* defined(TN3270) */	    case TELOPT_BINARY:		/* binary mode */	    case TELOPT_NAWS:		/* window size */	    case TELOPT_TSPEED:		/* terminal speed */	    case TELOPT_LFLOW:		/* local flow control */	    case TELOPT_TTYPE:		/* terminal type option */	    case TELOPT_SGA:		/* no big deal */#if    defined(ENCRYPTION)	    case TELOPT_ENCRYPT:        /* encryption variable option */#endif		new_state_ok = 1;		break;	    case TELOPT_NEW_ENVIRON:	/* New environment variable option */#ifdef	OLD_ENVIRON		if (my_state_is_will(TELOPT_OLD_ENVIRON))			send_wont(TELOPT_OLD_ENVIRON, 1); /* turn off the old */		goto env_common;	    case TELOPT_OLD_ENVIRON:	/* Old environment variable option */		if (my_state_is_will(TELOPT_NEW_ENVIRON))			break;		/* Don't enable if new one is in use! */	    env_common:		telopt_environ = option;#endif		new_state_ok = 1;		break;#if	defined(AUTHENTICATION)	    case TELOPT_AUTHENTICATION:		if (autologin)			new_state_ok = 1;		break;#endif	    case TELOPT_XDISPLOC:	/* X Display location */		if (env_getvalue((unsigned char *)"DISPLAY"))		    new_state_ok = 1;		break;	    case TELOPT_LINEMODE:#ifdef	KLUDGELINEMODE		kludgelinemode = 0;		send_do(TELOPT_SGA, 1);#endif		set_my_want_state_will(TELOPT_LINEMODE);		send_will(option, 0);		set_my_state_will(TELOPT_LINEMODE);		slc_init();		return;	    case TELOPT_ECHO:		/* We're never going to echo... */	    default:		break;	    }	    if (new_state_ok) {		set_my_want_state_will(option);		send_will(option, 0);		setconnmode(0);			/* Set new tty mode */	    } else {		will_wont_resp[option]++;		send_wont(option, 0);	    }	  } else {	    /*	     * Handle options that need more things done after the	     * other side has acknowledged the option.	     */	    switch (option) {	    case TELOPT_LINEMODE:#ifdef	KLUDGELINEMODE		kludgelinemode = 0;		send_do(TELOPT_SGA, 1);#endif		set_my_state_will(option);		slc_init();		send_do(TELOPT_SGA, 0);		return;	    }	  }	}	set_my_state_will(option);}	static voiddontoption(option)	int option;{	if (will_wont_resp[option]) {	    --will_wont_resp[option];	    if (will_wont_resp[option] && my_state_is_wont(option))		--will_wont_resp[option];	}	if ((will_wont_resp[option] == 0) && my_want_state_is_will(option)) {	    switch (option) {	    case TELOPT_LINEMODE:		linemode = 0;	/* put us back to the default state */		break;#ifdef	OLD_ENVIRON	    case TELOPT_NEW_ENVIRON:		/*		 * The new environ option wasn't recognized, try		 * the old one.		 */		send_will(TELOPT_OLD_ENVIRON, 1);		telopt_environ = TELOPT_OLD_ENVIRON;		break;#endif	    }	    /* we always accept a DONT */	    set_my_want_state_wont(option);	    if (my_state_is_will(option))		send_wont(option, 0);	    setconnmode(0);			/* Set new tty mode */	}	set_my_state_wont(option);}/* * This routine will turn a pipe separated list of names in the buffer * into an array of pointers to NUL terminated names.  We toss out any * bad, duplicate, or verbose names (names with spaces). */int is_unique(char *, char **, char **);static char *name_unknown = "UNKNOWN";static char *unknown[] = { 0, 0 };	char **mklist(buf, name)	char *buf, *name;{	int n;	char c, *cp, **argvp, *cp2, **argv, **avt;	if (name) {		if ((int)strlen(name) > 40) {			name = 0;			unknown[0] = name_unknown;		} else {			unknown[0] = name;			upcase(name);		}	} else		unknown[0] = name_unknown;	/*	 * Count up the number of names.	 */	for (n = 1, cp = buf; *cp; cp++) {		if (*cp == '|')			n++;	}	/*	 * Allocate an array to put the name pointers into	 */	argv = (char **)malloc((n+3)*sizeof(char *));	if (argv == 0)		return(unknown);	/*	 * Fill up the array of pointers to names.	 */	*argv = 0;	argvp = argv+1;	n = 0;	for (cp = cp2 = buf; (c = *cp);  cp++) {		if (c == '|' || c == ':') {			*cp++ = '\0';			/*			 * Skip entries that have spaces or are over 40			 * characters long.  If this is our environment			 * name, then put it up front.  Otherwise, as			 * long as this is not a duplicate name (case			 * insensitive) add it to the list.			 */			if (n || (cp - cp2 > 41))				;			else if (name && (strncasecmp(name, cp2, cp-cp2) == 0))				*argv = cp2;			else if (is_unique(cp2, argv+1, argvp))				*argvp++ = cp2;			if (c == ':')				break;			/*			 * Skip multiple delimiters. Reset cp2 to			 * the beginning of the next name. Reset n,			 * the flag for names with spaces.			 */			while ((c = *cp) == '|')				cp++;			cp2 = cp;			n = 0;		}		/*		 * Skip entries with spaces or non-ascii values.		 * Convert lower case letters to upper case.		 */#define ISASCII(c) (!((c)&0x80))		if ((c == ' ') || !ISASCII(c))			n = 1;		else if (islower(c))			*cp = toupper(c);	}	/*	 * Check for an old V6 2 character name.  If the second	 * name points to the beginning of the buffer, and is	 * only 2 characters long, move it to the end of the array.	 */	if ((argv[1] == buf) && (strlen(argv[1]) == 2)) {		--argvp;		for (avt = &argv[1]; avt < argvp; avt++)			*avt = *(avt+1);		*argvp++ = buf;	}	/*	 * Duplicate last name, for TTYPE option, and null	 * terminate the array.  If we didn't find a match on	 * our terminal name, put that name at the beginning.	 */	cp = *(argvp-1);	*argvp++ = cp;	*argvp = 0;	if (*argv == 0) {		if (name)			*argv = name;		else {			--argvp;			for (avt = argv; avt < argvp; avt++)				*avt = *(avt+1);		}	}	if (*argv)		return(argv);	else		return(unknown);}	intis_unique(name, as, ae)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品理伦片| 欧美日韩成人在线一区| 国产亚洲欧洲一区高清在线观看| 蜜桃av一区二区三区电影| 7777精品伊人久久久大香线蕉 | 91在线观看地址| 一区二区三区在线观看欧美| 色狠狠色狠狠综合| 天堂精品中文字幕在线| 精品噜噜噜噜久久久久久久久试看| 黑人巨大精品欧美黑白配亚洲| 国产亚洲精久久久久久| 99热国产精品| 丝袜美腿亚洲一区| 欧美精品一区二区久久婷婷| 成人性生交大片免费看视频在线| 亚洲欧洲三级电影| 欧美日韩精品一区二区天天拍小说 | 在线国产亚洲欧美| 日韩av中文字幕一区二区三区| 26uuu亚洲| 91视频www| 日本不卡123| 欧美激情一区二区三区在线| 色噜噜夜夜夜综合网| 日本成人在线一区| 亚洲成人在线网站| 337p粉嫩大胆噜噜噜噜噜91av| 成人免费观看av| 亚洲gay无套男同| 国产亚洲一区字幕| 欧美视频在线一区| 国产高清精品在线| 亚洲国产乱码最新视频| 久久婷婷成人综合色| 欧洲精品一区二区| 国产精选一区二区三区| 亚洲综合色婷婷| 国产性天天综合网| 欧美日韩和欧美的一区二区| 国产一区二区三区av电影 | 亚洲人成在线观看一区二区| 欧美人与性动xxxx| 成人免费视频国产在线观看| 日本视频一区二区三区| 最新日韩在线视频| 欧美欧美欧美欧美| 99麻豆久久久国产精品免费优播| 麻豆91小视频| 无码av中文一区二区三区桃花岛| 国产精品无人区| 精品成人佐山爱一区二区| 欧美三级日韩在线| 91亚洲男人天堂| 国产精品2024| 国产在线播放一区| 青青草原综合久久大伊人精品 | 国产午夜久久久久| 日韩欧美国产综合| 欧美人与z0zoxxxx视频| 在线一区二区三区四区| 成人av资源站| 欧美日韩国产在线观看| www.欧美.com| 国产成人自拍在线| 韩日精品视频一区| 国内外成人在线| 久久精品国产一区二区三| 日日夜夜免费精品| 亚洲午夜激情网页| 亚洲摸摸操操av| 综合久久给合久久狠狠狠97色| 久久免费看少妇高潮| 精品精品国产高清一毛片一天堂| 欧美美女直播网站| 欧美精品久久99| 777奇米四色成人影色区| 欧美日韩免费一区二区三区视频| 在线观看欧美精品| 在线观看中文字幕不卡| 在线一区二区三区| 欧美亚洲高清一区| 欧美美女直播网站| 69堂成人精品免费视频| 欧美一区二区免费观在线| 91精品国产综合久久蜜臀| 日韩欧美一级二级三级久久久| 日韩三级中文字幕| 精品日韩一区二区| 久久综合狠狠综合久久激情| 久久精品视频在线看| 国产偷国产偷精品高清尤物 | 日本va欧美va欧美va精品| 日韩avvvv在线播放| 久久精品国产一区二区三区免费看| 看片的网站亚洲| 国产成人综合网| 91色.com| 国产精品成人在线观看| 亚洲视频在线一区观看| 亚洲国产精品尤物yw在线观看| 亚洲午夜国产一区99re久久| 人人超碰91尤物精品国产| 国产自产v一区二区三区c| 成人福利在线看| 欧美性大战久久久久久久蜜臀 | 日韩小视频在线观看专区| 精品国一区二区三区| 最好看的中文字幕久久| 亚洲成人综合在线| 国产伦精品一区二区三区视频青涩 | 精品嫩草影院久久| 国产精品久久久久天堂| 亚洲影视资源网| 久久国产欧美日韩精品| 成人av在线资源网站| 欧美男女性生活在线直播观看| 欧美精品一区二区三区一线天视频| 国产精品三级久久久久三级| 亚洲图片欧美视频| 国产成人在线网站| 欧美日本在线观看| 欧美激情一区在线| 日本sm残虐另类| 99精品视频一区二区| 日韩小视频在线观看专区| 国产精品水嫩水嫩| 美女任你摸久久| 色欧美日韩亚洲| 国产欧美一区二区在线| 五月天激情综合| 99精品桃花视频在线观看| 日韩欧美国产一区二区三区| 亚洲精品一卡二卡| 国产激情视频一区二区在线观看 | 国产亚洲欧美日韩在线一区| 又紧又大又爽精品一区二区| 国内精品嫩模私拍在线| 欧美三级中文字| 国产精品电影一区二区三区| 精品一二三四区| 欧美日韩一区精品| 亚洲免费av网站| 成人亚洲一区二区一| 日韩一区二区麻豆国产| 一区二区三区日本| av不卡在线观看| 欧美激情一区二区三区蜜桃视频 | 亚洲一区在线电影| heyzo一本久久综合| 久久久99精品久久| 久久狠狠亚洲综合| 欧美一级夜夜爽| 日本一不卡视频| 欧美精品在线观看播放| 亚洲香肠在线观看| 欧美中文字幕一区| 一区二区三区日韩精品视频| www.亚洲免费av| 欧美国产日本韩| 国产精品一品视频| 国产亚洲一区二区三区四区 | 久久综合成人精品亚洲另类欧美 | 麻豆91在线播放免费| 717成人午夜免费福利电影| 亚洲成人av一区二区| 在线观看免费视频综合| 亚洲你懂的在线视频| 色婷婷精品久久二区二区蜜臀av | 色综合中文字幕国产| 久久精品日产第一区二区三区高清版 | 欧美一区二区二区| 日本不卡1234视频| 日韩精品一区二区三区老鸭窝| 日韩精品91亚洲二区在线观看 | 中文字幕一区二区三区四区不卡 | 色婷婷久久综合| 亚洲国产日日夜夜| 欧美精品少妇一区二区三区 | 精品一二三四区| 久久九九久久九九| 成人免费黄色大片| 亚洲精品v日韩精品| 欧美日韩一级片网站| 美腿丝袜在线亚洲一区| 久久九九影视网| 97久久精品人人爽人人爽蜜臀 | 午夜久久久久久久久| 91精品国产综合久久精品性色 | 亚洲国产va精品久久久不卡综合| 欧美理论电影在线| 国产老女人精品毛片久久| 中文字幕免费不卡在线| 91麻豆国产精品久久| 五月天国产精品| 国产欧美一区二区三区网站 | 亚洲午夜在线视频| 精品国产髙清在线看国产毛片| 精品在线你懂的| 国产精品国产三级国产普通话三级 |