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

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

?? xauth.c

?? ipsec vpn
?? C
?? 第 1 頁 / 共 4 頁
字號:
    /* ATTR out */    {	struct  isakmp_mode_attr attrh;	struct isakmp_attribute attr;	pb_stream strattr;	attrh.isama_np = ISAKMP_NEXT_NONE;	attrh.isama_type = ISAKMP_CFG_REQUEST;	attrh.isama_identifier = 0;	if(!out_struct(&attrh, &isakmp_attr_desc, &rbody, &strattr))	    return STF_INTERNAL_ERROR;	/* ISAKMP attr out (name) */	attr.isaat_af_type = XAUTH_USER_NAME;	attr.isaat_lv = 0;	out_struct(&attr, &isakmp_xauth_attribute_desc, &strattr, NULL);		/* ISAKMP attr out (password) */	attr.isaat_af_type = XAUTH_USER_PASSWORD;	attr.isaat_lv = 0;	out_struct(&attr, &isakmp_xauth_attribute_desc, &strattr, NULL);	close_message(&strattr);    }    xauth_mode_cfg_hash(r_hashval,r_hash_start,rbody.cur,st);        close_message(&rbody);    close_output_pbs(&reply);    init_phase2_iv(st, &st->st_msgid_phase15);    encrypt_message(&rbody, st);    clonetochunk(st->st_tpacket, reply.start, pbs_offset(&reply)	, "XAUTH: req");    /* Transmit */    send_packet(st, "XAUTH: req", TRUE);    /* RETRANSMIT if Main, SA_REPLACE if Aggressive */    if(st->st_event->ev_type != EVENT_RETRANSMIT)    {		delete_event(st);	event_schedule(EVENT_RETRANSMIT,EVENT_RETRANSMIT_DELAY_0 * 3,st);    }    return STF_OK;}/** Send modecfg IP address request (IP4 address) * @param st State * @return stf_status */stf_status modecfg_send_request(struct state *st){    pb_stream reply;    pb_stream rbody;    char buf[256];    u_char *r_hash_start,*r_hashval;    /* set up reply */    init_pbs(&reply, buf, sizeof(buf), "xauth_buf");    openswan_log("modecfg: Sending IP request (MODECFG_I1)");    /* this is the beginning of a new exchange */    st->st_msgid_phase15 = generate_msgid(st);    st->st_state = STATE_MODE_CFG_I1;    /* HDR out */    {	struct isakmp_hdr hdr;	zero(&hdr);	/* default to 0 */	hdr.isa_version = ISAKMP_MAJOR_VERSION << ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION;	hdr.isa_np = ISAKMP_NEXT_HASH;	hdr.isa_xchg = ISAKMP_XCHG_MODE_CFG;	hdr.isa_flags = ISAKMP_FLAG_ENCRYPTION;	memcpy(hdr.isa_icookie, st->st_icookie, COOKIE_SIZE);	memcpy(hdr.isa_rcookie, st->st_rcookie, COOKIE_SIZE);	hdr.isa_msgid = st->st_msgid_phase15;	if (!out_struct(&hdr, &isakmp_hdr_desc, &reply, &rbody))	{	    return STF_INTERNAL_ERROR;	}    }    START_HASH_PAYLOAD(rbody, ISAKMP_NEXT_ATTR);    /* ATTR out */    {	struct  isakmp_mode_attr attrh;	struct isakmp_attribute attr;	pb_stream strattr;	attrh.isama_np = ISAKMP_NEXT_NONE;	attrh.isama_type = ISAKMP_CFG_REQUEST;	attrh.isama_identifier = 0;	if(!out_struct(&attrh, &isakmp_attr_desc, &rbody, &strattr))	    return STF_INTERNAL_ERROR;	/* ISAKMP attr out (ipv4) */	attr.isaat_af_type = INTERNAL_IP4_ADDRESS;	attr.isaat_lv = 0;	out_struct(&attr, &isakmp_xauth_attribute_desc, &strattr, NULL);		/* ISAKMP attr out (netmask) */	attr.isaat_af_type = INTERNAL_IP4_NETMASK;	attr.isaat_lv = 0;	out_struct(&attr, &isakmp_xauth_attribute_desc, &strattr, NULL);	close_message(&strattr);    }    xauth_mode_cfg_hash(r_hashval,r_hash_start,rbody.cur,st);        close_message(&rbody);    close_output_pbs(&reply);    init_phase2_iv(st, &st->st_msgid_phase15);    encrypt_message(&rbody, st);    clonetochunk(st->st_tpacket, reply.start, pbs_offset(&reply)	, "modecfg: req");    /* Transmit */    send_packet(st, "modecfg: req", TRUE);    /* RETRANSMIT if Main, SA_REPLACE if Aggressive */    if(st->st_event->ev_type != EVENT_RETRANSMIT)    {		delete_event(st);	event_schedule(EVENT_RETRANSMIT,EVENT_RETRANSMIT_DELAY_0 * 3,st);    }    st->hidden_variables.st_modecfg_started = TRUE;    return STF_OK;}/** Send XAUTH status to client * * @param st State * @param status Status code * @return stf_status */stf_status xauth_send_status(struct state *st, int status){    pb_stream reply;    pb_stream rbody;    char buf[256];    u_char *r_hash_start,*r_hashval;    /* set up reply */    init_pbs(&reply, buf, sizeof(buf), "xauth_buf");    /* pick a new message id */    st->st_msgid_phase15 = generate_msgid(st);    /* HDR out */    {	struct isakmp_hdr hdr;	zero(&hdr);	/* default to 0 */	hdr.isa_version = ISAKMP_MAJOR_VERSION << ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION;	hdr.isa_np = ISAKMP_NEXT_HASH;	hdr.isa_xchg = ISAKMP_XCHG_MODE_CFG;	hdr.isa_flags = ISAKMP_FLAG_ENCRYPTION;	memcpy(hdr.isa_icookie, st->st_icookie, COOKIE_SIZE);	memcpy(hdr.isa_rcookie, st->st_rcookie, COOKIE_SIZE);	hdr.isa_msgid = st->st_msgid_phase15;	if (!out_struct(&hdr, &isakmp_hdr_desc, &reply, &rbody))	{	    return STF_INTERNAL_ERROR;	}    }    START_HASH_PAYLOAD(rbody, ISAKMP_NEXT_ATTR);    /* ATTR out */    {	struct  isakmp_mode_attr attrh;	struct isakmp_attribute attr;	pb_stream strattr;	attrh.isama_np = ISAKMP_NEXT_NONE;	attrh.isama_type = ISAKMP_CFG_SET;	attrh.isama_identifier = 0;	if(!out_struct(&attrh, &isakmp_attr_desc, &rbody, &strattr))	    return STF_INTERNAL_ERROR;	/* ISAKMP attr out (status) */#if 1	attr.isaat_af_type = XAUTH_STATUS | ISAKMP_ATTR_AF_TV;	attr.isaat_lv = status;	out_struct(&attr, &isakmp_xauth_attribute_desc, &strattr, NULL);#else	attr.isaat_af_type = XAUTH_STATUS | ISAKMP_ATTR_AF_TLV;	out_struct(&attr, &isakmp_xauth_attribute_desc, &strattr, &val);	status = htonl(status);	out_raw(&status,4,&val,"Status");	close_output_pbs(&val);#endif	close_message(&strattr);    }    xauth_mode_cfg_hash(r_hashval,r_hash_start,rbody.cur,st);        close_message(&rbody);    close_output_pbs(&reply);    init_phase2_iv(st, &st->st_msgid_phase15);    encrypt_message(&rbody, st);    /* free previous transmit packet */    freeanychunk(st->st_tpacket);    clonetochunk(st->st_tpacket, reply.start, pbs_offset(&reply)	, "XAUTH: status");    /* Set up a retransmission event, half a minute henceforth */    /* Schedule retransmit before sending, to avoid race with master thread */    delete_event(st);    event_schedule(EVENT_RETRANSMIT, EVENT_RETRANSMIT_DELAY_0, st);    /* Transmit */    send_packet(st, "XAUTH: status", TRUE);    st->st_state = STATE_XAUTH_R1;    return STF_OK;}#ifdef XAUTH_USEPAM/** XAUTH PAM conversation * * @param num_msg Int. * @param msgm Pam Message Struct * @param response Where PAM will put the results * @param appdata_ptr Pointer to data struct (as we are using threads) * @return int Return Code */staticint xauth_pam_conv(int num_msg, const struct pam_message **msgm,	       struct pam_response **response, void *appdata_ptr){    struct thread_arg *arg = appdata_ptr;    int count=0;    struct pam_response *reply;    if (num_msg <= 0)        return PAM_CONV_ERR;    reply = (struct pam_response *) calloc(num_msg,                                           sizeof(struct pam_response));    if (reply == NULL) {        return PAM_CONV_ERR;    }    for (count=0; count < num_msg; ++count) {        char *string=NULL;        switch (msgm[count]->msg_style) {        case PAM_PROMPT_ECHO_OFF:	    string = malloc(arg->password.len+1);	    strcpy(string,arg->password.ptr);            break;        case PAM_PROMPT_ECHO_ON:	    string = malloc(arg->name.len+1);	    strcpy(string,arg->name.ptr);            break;        }	        if (string) { /* must add to reply array */           /* add string to list of responses */            reply[count].resp_retcode = 0;            reply[count].resp = string;            string = NULL;        }    }    *response = reply;    reply = NULL;    return PAM_SUCCESS;}#endif#ifdef XAUTH_USEPAM/** Do authentication via PAM (Plugable Authentication Modules) * * We open a PAM session via pam_start, and try to authenticate the user * * @return int Return Code */staticint do_pam_authentication(void *varg){    struct thread_arg	*arg = varg;    pam_handle_t *pamh=NULL;    int retval;    conv.appdata_ptr = varg;    retval = pam_start("pluto", arg->name.ptr, &conv, &pamh);    /*  Two factor authentication - Check that the user is valid, 	and then check if they are permitted access */    if (retval == PAM_SUCCESS)        retval = pam_authenticate(pamh, PAM_SILENT);    /* is user really user? */    if (retval == PAM_SUCCESS)        retval = pam_acct_mgmt(pamh, 0);       /* permitted access? */    pam_end(pamh, PAM_SUCCESS);    if(retval == PAM_SUCCESS)      return TRUE;    else      return FALSE;}#else /* XAUTH_USEPAM *//** Do authentication via /etc/ipsec.d/passwd file using MD5 passwords * * password file structure does not compensate for * extra garbage so don't leave any! we do allows for #'s * as first char for comments just because I hate conf * files like .htaccess that don't support it * * /etc/ipsec.d/passwd * username:md5sum:connectioname\n * * can be made with, htpasswd: * * htpasswd -c -m -b /etc/ipsec.d/passwd road roadpass * * @return int Return Code */staticint do_md5_authentication(void *varg){    struct thread_arg	*arg = varg;    int len;    char szline[1024]; /* more than enough */    FILE *fp;    char *szuser;    char *szpass;    char *szconnid;    char *sztemp;    int loc = 0;    size_t pwlen = strlen(ipsec_dir) + sizeof("/passwd") + 1;    verify_path_space(&pwdfile, pwlen, "xauth passwd file path");    snprintf(pwdfile.path, pwdfile.path_space, "%s/passwd", ipsec_dir);    fp = fopen(pwdfile.path, "r");    if( fp == (FILE *)0)    {        /* unable to open the password file */        openswan_log("XAUTH: unable to open password file (%s) for verification", pwdfile.path);        return FALSE;    }    openswan_log("XAUTH: password file (%s) open.", pwdfile.path);    /** simple stuff read in a line then go through positioning     * szuser ,szpass and szconnid at the begining of each of the     * memory locations of our real data and replace the ':' with '\0'     */    while( fgets( szline, sizeof(szline), fp) != (char *)0)    {        len = strlen( szline );        loc = 0; /* reset our index */        if(szline[0] == '#') /* comment line move on */           continue;        /* get userid */        sztemp = strchr(szline, ':');        if (sztemp == (char *)0 )          continue; /* we found no tokens bad line so just skip it */        *sztemp++ = '\0'; /* put a null where the ':' was */        szuser = &szline[loc]; /* szline now contains our null terminated data */        loc+=strlen(szuser)+1; /* move past null into next section */        /* get password */                sztemp = strchr(&szline[loc], ':');        if (sztemp == (char *)0 )          continue; /* we found no tokens bad line so just skip it */        *sztemp++ = '\0'; /* put a null where the ':' was */        szpass = &szline[loc]; /* szline now contains our null terminated data */        loc+=strlen(szpass)+1; /* move past null into next section */        /* get connection id */                sztemp = strchr(&szline[loc], '\n'); /* last \n */                if (sztemp == (char *)0 )          continue; /* we found no tokens bad line so just skip it */        *sztemp++ = '\0'; /* put a null where the ':' was */                szconnid = &szline[loc]; /* szline now contains our null terminated data */                        /* it is possible that szconnid will be null so don't bother         * checking it. If it is null then this is to say it applies         * to all connection classes         */        DBG(DBG_CONTROL,	    DBG_log("XAUTH: found user(%s/%s) pass(%s) connid(%s/%s)"		    , szuser, arg->name.ptr		    , szpass, szconnid, arg->connname.ptr));        if ( strcasecmp(szconnid, arg->connname.ptr) == 0	     && strcmp( szuser, arg->name.ptr ) == 0 ) /* user correct ?*/        {	    char *cp;	    cp = crypt( arg->password.ptr, szpass);	    if(DBGP(DBG_CRYPT))	    {		DBG_log("XAUTH: checking user(%s:%s) pass %s vs %s" , szuser, szconnid, cp, szpass);	    }	    else	    {		openswan_log("XAUTH: checking user(%s:%s) " , szuser, szconnid);	    }           /* Ok then now password check */           if ( strcmp(cp, szpass ) == 0 )             {             /* we have a winner */             fclose( fp );             return TRUE;           }	   openswan_log("XAUTH: nope");        }    }    fclose( fp );        return FALSE;}#endif/** Main authentication routine will then call the actual compiled in  *  method to verify the user/password */static void * do_authentication(void *varg){    struct thread_arg	*arg = varg;    struct state *st = arg->st;    int results=FALSE;    openswan_log("XAUTH: User %s: Attempting to login" , arg->name.ptr);        #ifdef XAUTH_USEPAM    openswan_log("XAUTH: pam authentication being called to authenticate user %s",arg->name.ptr);    results=do_pam_authentication(varg);#else    openswan_log("XAUTH: md5 authentication being called to authenticate user %s",arg->name.ptr);    results=do_md5_authentication(varg);#endif    if(results)    {        openswan_log("XAUTH: User %s: Authentication Successful", arg->name.ptr);        xauth_send_status(st,1);        if(st->quirks.xauth_ack_msgid) {	  st->st_msgid_phase15 = 0;	}	pfreeany(st->st_xauth_username);	st->st_xauth_username = clone_str(arg->name.ptr,"XAUTH Username");    } else    {	/** Login attempt failed, display error, send XAUTH status to client         *  and reset state to XAUTH_R0 */        openswan_log("XAUTH: User %s: Authentication Failed: Incorrect Username or Password", arg->name.ptr);        xauth_send_status(st,0);	        st->st_state = STATE_XAUTH_R0;            }           freeanychunk(arg->password);    freeanychunk(arg->name);    freeanychunk(arg->connname);    pfree(varg);        return NULL;}/** Launch an authenication prompt * * @param st State Structure * @param name Usernamd * @param password password * @param connname conn name, from ipsec.conf * @return int Return Code - always 0. */int xauth_launch_authent(struct state *st			 , chunk_t name			 , chunk_t password			 , chunk_t connname){#ifdef HAVE_THREADS    pthread_attr_t pattr;    pthread_t tid;#endif    struct thread_arg	*arg;    arg = alloc_thing(struct thread_arg,"ThreadArg");    arg->st = st;    arg->password = password;    arg->name = name;    arg->connname = connname;#ifdef HAVE_THREADS    pthread_attr_init(&pattr);    pthread_attr_setdetachstate(&pattr,PTHREAD_CREATE_DETACHED);    pthread_create(&tid,&pattr,do_authentication, (void*) arg);    pthread_attr_destroy(&pattr);#else    do_authentication(arg);#endif    return 0;}/** STATE_XAUTH_R0: *  First REQUEST sent, expect for REPLY *  HDR*, HASH, ATTR(REPLY,PASSWORD) --> HDR*, HASH, ATTR(STATUS) * * @param md Message Digest * @return stf_status */stf_statusxauth_inR0(struct msg_digest *md){    pb_stream *attrs = &md->chain[ISAKMP_NEXT_ATTR]->pbs;    struct state *const st = md->st;    chunk_t name, password, connname;    bool gotname, gotpassword;    gotname = gotpassword = FALSE;    CHECK_QUICK_HASH(md,xauth_mode_cfg_hash(hash_val,hash_pbs->roof, md->message_pbs.roof, st)	, "XAUTH-HASH", "XAUTH R0");    {        struct isakmp_attribute attr;        pb_stream strattr;	if (md->chain[ISAKMP_NEXT_ATTR]->payload.attribute.isama_type != ISAKMP_CFG_REPLY)	{	    openswan_log("Expecting MODE_CFG_REPLY, got %s instead."		 , enum_name(&attr_msg_type_names, md->chain[ISAKMP_NEXT_ATTR]->payload.attribute.isama_type));	    return STF_IGNORE;	}	while(pbs_left(attrs) > sizeof(struct isakmp_attribute))	{	    u_int16_t val;	    int len;            if (!in_struct(&attr, &isakmp_xauth_attribute_desc, attrs, &strattr))	    {		/* Skip unknown */		if (attr.isaat_af_type & 0x8000)		{		    len = 4;		    val = attr.isaat_lv;		} else {		    len = attr.isaat_lv;		    val = ntohs(*(u_int16_t *)strattr.cur);		}		if(len < 4)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲av色图| 2024国产精品视频| 亚洲综合精品自拍| 欧美日韩国产首页在线观看| 天涯成人国产亚洲精品一区av| 欧美久久一区二区| 麻豆91在线看| 国产亚洲欧美色| 一本一道综合狠狠老| 三级不卡在线观看| 久久综合狠狠综合久久激情| 午夜国产不卡在线观看视频| 久久婷婷久久一区二区三区| 色婷婷一区二区三区四区| 天堂va蜜桃一区二区三区| 久久综合99re88久久爱| 91老师片黄在线观看| 青青青伊人色综合久久| 亚洲国产高清在线观看视频| 欧美一a一片一级一片| 紧缚捆绑精品一区二区| 亚洲少妇屁股交4| 91精品国产综合久久福利软件 | 久久久久久久av麻豆果冻| www.亚洲国产| 五月婷婷欧美视频| 亚洲第一电影网| 国产日韩欧美一区二区三区乱码| 在线影视一区二区三区| 国内精品伊人久久久久av一坑| 椎名由奈av一区二区三区| 日韩欧美国产一区二区在线播放| 91美女片黄在线| 国产在线精品不卡| 亚洲国产日韩一区二区| 国产丝袜在线精品| 91精品国模一区二区三区| 成人h动漫精品一区二区| 蜜臀精品久久久久久蜜臀 | 国内精品伊人久久久久av影院| 亚洲另类在线一区| 久久久久免费观看| 在线观看91av| 色婷婷综合久久久中文一区二区 | 不卡视频免费播放| 视频在线观看国产精品| 中文字幕日韩一区二区| 26uuu国产日韩综合| 在线播放中文字幕一区| 色综合欧美在线| 国产风韵犹存在线视精品| 人人爽香蕉精品| 亚洲第一精品在线| 夜夜亚洲天天久久| 1区2区3区国产精品| 久久久激情视频| 欧美精品一区二区三区一线天视频| 欧美视频中文字幕| 在线日韩国产精品| 不卡视频在线观看| 丁香亚洲综合激情啪啪综合| 国产乱码精品一区二区三区五月婷| 蜜桃视频在线观看一区二区| 香蕉成人啪国产精品视频综合网 | 美洲天堂一区二卡三卡四卡视频| 亚洲图片有声小说| 亚洲美女屁股眼交| 亚洲男同1069视频| 亚洲精品国产无天堂网2021| 最新国产精品久久精品| 国产精品嫩草影院av蜜臀| 国产日韩欧美一区二区三区综合| 久久久精品黄色| 久久久久国产精品人| 久久精品亚洲精品国产欧美| 国产人久久人人人人爽| 国产亚洲成av人在线观看导航| 精品福利一二区| 久久综合色天天久久综合图片| 26uuu国产在线精品一区二区| 日韩精品一区二区三区在线| 日韩三级免费观看| 精品国内二区三区| 欧美国产视频在线| 欧美国产激情二区三区| 国产精品久久久久久户外露出 | 在线观看欧美黄色| 欧美色图天堂网| 中文字幕日韩av资源站| 国产精品视频麻豆| 国产精品久久一级| 中文字幕一区二区在线播放 | 欧美精品 日韩| 日韩欧美在线观看一区二区三区| 日韩三级高清在线| 日本一二三不卡| 一区二区三区中文字幕| 丝袜亚洲精品中文字幕一区| 久久国产夜色精品鲁鲁99| 国产91在线|亚洲| 色哦色哦哦色天天综合| 欧美日本国产视频| 亚洲精品在线观看网站| 亚洲色图视频网| 日本午夜精品视频在线观看 | 国产精品成人一区二区艾草 | 亚洲bt欧美bt精品| 久久国产婷婷国产香蕉| av一本久道久久综合久久鬼色| 色婷婷亚洲一区二区三区| 欧美一区二区三区在线| 欧美经典三级视频一区二区三区| 亚洲精品亚洲人成人网在线播放| 日日嗨av一区二区三区四区| 国产91精品一区二区| 欧美老肥妇做.爰bbww| 久久久久久久久免费| 亚洲精品中文在线| 久久99精品国产.久久久久| av在线这里只有精品| 日韩西西人体444www| 国产精品伦理一区二区| 五月天一区二区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 91在线免费视频观看| 91精品在线一区二区| 国产精品五月天| 免费日本视频一区| 一本色道亚洲精品aⅴ| 久久久久国产精品厨房| 午夜免费久久看| 91麻豆精品在线观看| 久久综合资源网| 免播放器亚洲一区| 欧美伊人久久久久久久久影院| 久久久国产综合精品女国产盗摄| 天堂在线一区二区| 不卡影院免费观看| 久久婷婷成人综合色| 青青草原综合久久大伊人精品优势| 91在线云播放| 国产精品乱人伦一区二区| 久久99精品久久久久婷婷| 欧美日韩不卡在线| 亚洲精品视频一区| 99视频国产精品| 中文字幕av不卡| 国产激情一区二区三区| 日韩精品一区二区三区蜜臀| 五月婷婷激情综合| 欧美无砖砖区免费| 国产一区二区在线观看视频| 91精品国产综合久久久久久漫画| 亚洲精品大片www| 91在线小视频| 亚洲免费观看高清完整版在线观看熊| 成人性生交大片免费看在线播放| 欧美精品一区视频| 极品美女销魂一区二区三区免费| 欧美一区二区私人影院日本| 亚洲国产va精品久久久不卡综合 | 欧美在线视频日韩| 亚洲乱码精品一二三四区日韩在线| 国产91富婆露脸刺激对白| 久久久综合精品| 国产精品一区2区| 国产欧美视频一区二区三区| 国产毛片一区二区| 国产网站一区二区三区| 成人午夜私人影院| 亚洲欧美另类综合偷拍| 91成人看片片| 午夜精品福利视频网站| 欧美一级二级在线观看| 黄色日韩三级电影| 久久精品男人天堂av| 国产xxx精品视频大全| 亚洲欧洲av一区二区三区久久| 一本久久综合亚洲鲁鲁五月天| 一区二区三区视频在线观看| 欧美美女黄视频| 久久97超碰色| 国产精品伦理在线| 在线中文字幕不卡| 青青青伊人色综合久久| 亚洲精品一区二区三区福利| 成人黄色国产精品网站大全在线免费观看| 国产精品免费视频网站| 欧美午夜精品理论片a级按摩| 日本午夜精品视频在线观看 | 久久精品亚洲精品国产欧美| 成人精品国产免费网站| 亚洲综合另类小说| 欧美大片一区二区| av中文一区二区三区| 日韩成人一级片| 国产精品久久久久久久久图文区| 色偷偷久久一区二区三区| 老司机精品视频在线| 国产精品久久久久久久午夜片|