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

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

?? mailbox.cpp

?? 強大易用的郵件收發客戶端
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// Copyright (C) 1997-2002 Valeriy Ovechkin
// 
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//
// Mailbox.cpp : implementation file
//
/////////////////////////////////////////////////////////////////////
//
//   File : Mailbox.cpp
//   Description : basic connection code
//
//   Modification history ( date, name, description ) : 
//		1.	17.12.2002	Igor Green, mmm3@grigsoft.com
//			Partial preview support
//		2.	22.01.2003	brendanryan59 (BRN)
//			Fixed problem with -- in header data
//
//HISTORY_ENTRY_END:2!22.01.2003
/////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MD5.h"
#include "Magic.h"
#include "Excerpt.h"
#include "MagicDoc.h"
#include "Mailbox.h"
#include "MagicFrame.h"
#include "MailboxView.h"
#include "SecureString.h"
#include "dpassword.h"

#include <afxpriv.h>
#undef IsLoggingEnabled // clashed with a class member

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
void CMailbox::RecoverString( CString &str )
{
	str.MakeReverse();
	srand( m_intClue ^ 0x55555555 );
	for( int i = str.GetLength(); i; --i ) 
	{
		TCHAR ch = TCHAR(str.GetAt( i-1 ) ^ (TCHAR) rand());
		str.SetAt( i-1,  ch);
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMailbox
/* version history:
252: flag for new Doc version
251: added APOP disable flag
 */


IMPLEMENT_SERIAL( CMailbox, CAsyncSocket, 252 | VERSIONABLE_SCHEMA );

CMailbox::CMailbox()
:	m_bitSelected(1),
	m_bitCreated(1),
	m_bitDeleted(0),
	m_intOrder(0),
	m_tServerSupportsAPOP( true ),
	m_tServerSupportsUIDL( true ),
	m_tServerSupportsBurstWrites( true ),
	m_bLog( false )
{
	InitializeServerTraits();

	m_nStatTime = 0;
	m_nStatCur = 0;
	m_nStatMax = 0;

	m_nUnread = 0;

	m_hResolveJob = 0;
	m_pResolveBuffer = NULL;
	m_arrayExcerpt.SetSize( 0, 8 );

	m_uMciID = 0;
	m_hCmdID = 0;
	m_intChanged = -1;

	m_intState = MBOX_NOT_CHECKED;
	m_intClue = 0xBadBabe ^ (int) this;
	m_intPort = 110;
	m_nExtraLines=0;
	m_intPoll = 10;
	m_dwFlags = MBF_DEFAULT;
	m_intElapsed = theApp.intCheckImmediately ? -1 : 0;

	m_intCommand = ACTION_DEFAULT;
	m_intCommandRun = COMMAND_RUN_NORMAL;
	m_intPlayback = ACTION_DEFAULT;
	m_intPlaybackDevice = PLAYBACK_DEVICE_FILE;
	m_intMessage = FALSE;
#ifdef USE_SSL
	m_pSSL = NULL;
	m_SSL.SetMailbox(this);
#endif
}

const CMailbox& CMailbox::operator=( const CMailbox& a)
{
		m_intClue = a.m_intClue;
		m_intPort = a.m_intPort;
		m_intPoll = a.m_intPoll;
		m_ulongIP = a.m_ulongIP;
		m_intCommand = a.m_intCommand;
		m_intCommandRun = a.m_intCommandRun;
		m_intPlayback = a.m_intPlayback;
		m_intPlaybackDevice = a.m_intPlaybackDevice;
		m_intMessage = a.m_intMessage;
		m_dwFlags = a.m_dwFlags;
		
		m_nExtraLines = a.m_nExtraLines;
		m_strPass = a.m_strPass;
		m_strUser = a.m_strUser;
		m_strHost = a.m_strHost;
		m_strAlias = a.m_strAlias;
		m_strCommand = a.m_strCommand;
		m_strPlayback = a.m_strPlayback;
		return *this;
}

CMailbox::~CMailbox()
{
	CancelPendingJobs();

	m_bitDeleted = 1;
	Change( COLUMN_STATE );

	CWnd *wnd = (CWnd*) AfxGetMainWnd();
	if( wnd ) wnd->SendMessage( VM_UPDATEITEM, (WPARAM) this );

	int i = m_arrayExcerpt.GetSize();
	while( i ) delete m_arrayExcerpt[--i];
	m_arrayExcerpt.RemoveAll();
}

/////////////////////////////////////////////////////////////////////////////
// CMailbox message handlers

void CMailbox::Serialize( CArchive& ar ) 
{
	if( ar.IsLoading() ) // READ
	{
		int intVersion = ar.GetObjectSchema();

		if( intVersion < 250 )
		{
			DWORD wordTmp;
			ar >> wordTmp; m_intClue = (int) wordTmp;
			ar >> wordTmp; m_intPort = (int) wordTmp;
			ar >> wordTmp; m_intPoll = (int) wordTmp;
			ar >> wordTmp; m_ulongIP = (int) wordTmp;
			ar >> m_strPass;
			ar >> m_strUser;
			ar >> m_strHost;
			
			if( 200 <= intVersion )
			{
				ar >> m_strAlias;
				ar >> wordTmp; m_intCommand = (int) wordTmp;
				ar >> wordTmp; m_intCommandRun = (int) wordTmp;
				ar >> m_strCommand;
				ar >> wordTmp; m_intPlayback = (int) wordTmp;
				ar >> wordTmp; m_intPlaybackDevice = (int) wordTmp;
				ar >> m_strPlayback;
				ar >> wordTmp; m_intMessage = (int) wordTmp;
			}

			m_intClue ^= 0xAAAAAAAA;
			m_intPort ^= m_intClue;
			m_intPoll ^= m_intClue;
			m_ulongIP ^= m_intClue;
			m_intCommand ^= m_intClue;
			m_intCommandRun ^= m_intClue;
			m_intPlayback ^= m_intClue;
			m_intPlaybackDevice ^= m_intClue;
			m_intMessage ^= m_intClue;
			RecoverString( m_strAlias );
			RecoverString( m_strUser );
			RecoverString( m_strHost );
			RecoverString( m_strPass );
			RecoverString( m_strCommand );
			RecoverString( m_strPlayback );
		}
		else // if( 250 <= intVersion )
		{
			DWORD dwTmp;
			ar >> dwTmp; m_intClue = (int) dwTmp;
			ar >> dwTmp; m_intPort = (int) dwTmp;
			ar >> dwTmp; m_intPoll = (int) dwTmp;
			ar >> dwTmp; m_ulongIP = (int) dwTmp;
			ar >> dwTmp; m_intCommand = (int) dwTmp;
			ar >> dwTmp; m_intCommandRun = (int) dwTmp;
			ar >> dwTmp; m_intPlayback = (int) dwTmp;
			ar >> dwTmp; m_intPlaybackDevice = (int) dwTmp;
			ar >> dwTmp; m_intMessage = (int) dwTmp;
			if (intVersion >= 251)
			{
				ar >> m_dwFlags;
			}
			else
				m_dwFlags = MBF_DEFAULT;
			if (intVersion >= 252)
				ar >> m_nExtraLines;
			else
				m_nExtraLines = 255;


			// assure checksum
			DWORD dwCheckSum = 0;
			ar >> dwCheckSum;
			dwCheckSum ^= m_intClue ^ m_intPort ^ m_intPoll ^ m_ulongIP ^ 
				m_intCommand ^ m_intCommandRun ^ 
				m_intPlayback ^ m_intPlaybackDevice ^ 
				m_intMessage;
			if( dwCheckSum ) AfxThrowArchiveException( CArchiveException::badIndex, _T("") );

			CSecureString sstrTmp; 
			sstrTmp.Serialize( ar ); sstrTmp.DecodeString( m_intClue, m_strPass ); 
			sstrTmp.Serialize( ar ); sstrTmp.DecodeString( m_intClue, m_strUser ); 
			sstrTmp.Serialize( ar ); sstrTmp.DecodeString( m_intClue, m_strHost ); 
			sstrTmp.Serialize( ar ); sstrTmp.DecodeString( m_intClue, m_strAlias ); 
			sstrTmp.Serialize( ar ); sstrTmp.DecodeString( m_intClue, m_strCommand ); 
			sstrTmp.Serialize( ar ); sstrTmp.DecodeString( m_intClue, m_strPlayback ); 
		}

		m_ulongIP = 0;
	}
	else // WRITE
	{
		ar << (DWORD) m_intClue;
		ar << (DWORD) m_intPort;
		ar << (DWORD) m_intPoll;
		ar << (DWORD) m_ulongIP;
		ar << (DWORD) m_intCommand;
		ar << (DWORD) m_intCommandRun;
		ar << (DWORD) m_intPlayback;
		ar << (DWORD) m_intPlaybackDevice;
		ar << (DWORD) m_intMessage;
		ar << (DWORD) m_dwFlags;
		if (m_nExtraLines==255)
			m_nExtraLines = 0;
		ar << (BYTE)  m_nExtraLines;

		// calculate checksum
		DWORD dwCheckSum = 0;
		dwCheckSum ^= m_intClue ^ m_intPort ^ m_intPoll ^ m_ulongIP ^ 
			m_intCommand ^ m_intCommandRun ^ m_intPlayback ^ 
			m_intPlaybackDevice ^ m_intMessage;
		ar << dwCheckSum;

		CSecureString sstrTmp; 
		CString sSavePass;
		if ((m_dwFlags & MBF_ASK_PASS)==0) 
			sSavePass = m_strPass;

		sstrTmp.EncodeString( m_intClue, sSavePass); sstrTmp.Serialize( ar );
		sstrTmp.EncodeString( m_intClue, m_strUser ); sstrTmp.Serialize( ar );
		sstrTmp.EncodeString( m_intClue, m_strHost ); sstrTmp.Serialize( ar );
		sstrTmp.EncodeString( m_intClue, m_strAlias ); sstrTmp.Serialize( ar );
		sstrTmp.EncodeString( m_intClue, m_strCommand ); sstrTmp.Serialize( ar );
		sstrTmp.EncodeString( m_intClue, m_strPlayback ); sstrTmp.Serialize( ar );
	}
}

void CMailbox::SetAlias( CString &strAlias )
{
	if( m_strAlias == strAlias ) return;
	m_strAlias = strAlias;
	Change( COLUMN_ALIAS );
	SetClue();
}

void CMailbox::SetUser( CString &strUser )
{
	if( m_strUser == strUser ) return;
	m_strUser = strUser;
	Change( COLUMN_USER );
	SetState( MBOX_NOT_CHECKED );
	SetClue();
}

void CMailbox::SetHost( CString &strHost )
{
	if( m_strHost == strHost ) return;
	m_strHost = strHost;
	Change( COLUMN_HOST );
	InitializeServerTraits();
	SetState( MBOX_NOT_CHECKED );
	SetClue();
}

void CMailbox::SetPass( CString &strPass, BOOL bAsk )
{
	if (bAsk)
		m_strPass.Empty();
	else
		m_strPass = strPass;
	SetBoolFlag(m_dwFlags, MBF_ASK_PASS, bAsk);
	SetClue();
}

void CMailbox::SetState( int intState )
{
	if( STATE_FINAL( m_intState ) && !STATE_FINAL( intState ) )
	{
		m_strLastError.Empty();

#ifdef USE_SSL
		if (m_dwFlags & MBF_SSL)
		{
			m_pSSLctx = SSL_CTX_new(SSLv2_client_method());
			m_pSSL = SSL_new(m_pSSLctx);
			m_SSL.CreateConnector(m_pSSLctx);
			m_SSL.Create();
		}
		else
#endif
		Create();

	}

	if( !STATE_FINAL( m_intState ) && STATE_FINAL( intState ) ) 
	{ 
		Close();
		CancelPendingJobs();
		Change( COLUMN_MAIL );
#ifdef USE_SSL
		if (m_pSSL)
		{
			m_SSL.Close();
			SSL_shutdown(m_pSSL);
			SSL_free(m_pSSL);
			SSL_CTX_free(m_pSSLctx);
			m_dwFlags &= ~0x1000;
		}
#endif
	}


	m_intState = intState;
	Change( COLUMN_STATE );

	if( MBOX_CHECKED == intState )
	{
		Change( COLUMN_ELAPSED );
		m_intElapsed = 0;
	}
	else if( MBOX_NOT_CHECKED == intState )
	{
		Change( COLUMN_MAIL );
		Change( COLUMN_ELAPSED );
		m_intElapsed = -1;
		int i = m_arrayExcerpt.GetSize();
		while( i ) delete m_arrayExcerpt[ --i ];
		m_arrayExcerpt.RemoveAll();
	}
	else if( MBOX_INTERRUPTED_BY_USER )
	{
	}
}

void CMailbox::SetPort( int intPort )
{
	if( m_intPort == intPort ) return;
	m_intPort = intPort;
	Change( COLUMN_PORT );
	SetClue();
}


void CMailbox::SetFlag( int nFlag, int nSet)
{
	BOOL bNow = GetBoolFlag(m_dwFlags, nFlag);
	if( bNow == nSet ) return;
	SetBoolFlag(m_dwFlags, nFlag, nSet);
	Change( COLUMN_POLL );
	SetClue();
}

void CMailbox::SetPoll( int intPoll )
{
	if( m_intPoll == intPoll ) return;
	m_intPoll = intPoll;
	Change( COLUMN_POLL );
	SetClue();
}

void CMailbox::BeginResolveHostByName()
{
	if( m_strHost.IsEmpty() ) { SetState( MBOX_INVALID_HOST ); return; }
	SetState( MBOX_RESOLVING );

	ASSERT( !m_pResolveBuffer && !m_hResolveJob );

	char szHost[256] = ""; CharToOem( m_strHost, szHost );

	m_ulongIP = inet_addr( szHost );
	if( INADDR_NONE == m_ulongIP )
	{
		m_ulongIP = 0;
		m_pResolveBuffer = new char[ MAXGETHOSTSTRUCT ];
		m_hResolveJob = WSAAsyncGetHostByName(
			AfxGetMainWnd()->m_hWnd,
			VM_END_RESOLVE_HOST_BY_NAME,
			szHost,
			m_pResolveBuffer,
			MAXGETHOSTSTRUCT );
	}
	else
	{
		Check();
	}
}

void CMailbox::EndResolveHostByName( WPARAM wParam, LPARAM lParam )
{
	if( m_hResolveJob != (HANDLE) wParam ) return;

	if( HIWORD( lParam ) ) SetState( MBOX_INVALID_HOST );
	else
	{
		m_ulongIP = *(ULONG*) ( (struct hostent*) m_pResolveBuffer )->h_addr;
		Check();
	}

	m_hResolveJob = 0;
	delete m_pResolveBuffer;
	m_pResolveBuffer = NULL;
}

void CMailbox::Check()
{
	if( MBOX_CONNECTING == m_intState )
	{
		// MFC can't handle the case when Close is called before OnConnect had fired.
		// as a result, an assertion occurs in sockcore.cpp on line 513.
		// this measure will avoid the problem in the first place.
		return;
	}

	if( !STATE_FINAL( m_intState ) )
	{
		SetState( MBOX_CANNOT_CHECK );
	}

	if( !m_ulongIP )
	{
		BeginResolveHostByName();
		return;
	}

	SetState( MBOX_CONNECTING ); 
	SOCKADDR_IN a;
	a.sin_family = AF_INET;
	a.sin_port = htons( (u_short)m_intPort );
	a.sin_addr.S_un.S_addr = m_ulongIP;
	
	
#ifdef USE_SSL
    if (m_pSSL && !m_SSL.Connect( (SOCKADDR*) &a, sizeof(a) ) &&
		( WSAEWOULDBLOCK != GetLastError() ) )
	{
		TRACE2( "SSL Error #%d; [%s] cannot connect\n", GetLastError(), m_strAlias );
		SetState( MBOX_SOCKET_ERROR );
	}
	else if (!m_pSSL)
#endif
	if( !Connect( (SOCKADDR*) &a, sizeof(a) ) &&
		( WSAEWOULDBLOCK != GetLastError() ) )
	{
		TRACE2( "Socket Error #%d; [%s] cannot connect\n", GetLastError(), m_strAlias );
		SetState( MBOX_SOCKET_ERROR );
	}
}

void CMailbox::StopChecking()
{
	if( !STATE_FINAL( m_intState ) )
	{
		SetState( MBOX_INTERRUPTED_BY_USER );
	}

	// clear out all pending tasks
	for( int i = m_arrayExcerpt.GetSize(); i; --i )
	{
		m_arrayExcerpt[i-1]->m_bitRemoveFromServer = false;
		m_arrayExcerpt[i-1]->m_bitDownloadData = false;
		m_arrayExcerpt[i-1]->m_bitPreviewData = false;
		m_arrayExcerpt[i-1]->Change( COLUMN_MBOX );
	}
}

void CMailbox::OnConnect( int nErrorCode )
{
	if( nErrorCode ) 
	{
		TRACE2( "Socket Error #%d; [%s] OnConnect: cannot connect\n", nErrorCode, m_strAlias );
		SetState( MBOX_CANNOT_CONNECT );
		InitializeServerTraits();
	}
	else
	{
		TRACE1( "Socket connected #%d\n", m_hSocket );
	}

	//m_strLog.Empty();

	// no initial answer over ssl?
	if (m_pSSL && m_intState == MBOX_CONNECTING)
	{
		if ((m_dwFlags & 0x1000) == 0)
		{
			m_dwFlags |= 0x1000;
			CString strPacket;
			char szPacket[ 1024 ];
			strPacket.Format( _T("USER %s\r\n"), m_strUser );
			CharToOem( strPacket, szPacket );
			SetState( Send( szPacket, strlen( szPacket ) ) ?
				MBOX_WF_USER_RESPONSE_SSL  : MBOX_CANNOT_SEND );

			m_tServerSupportsAPOP = false;
		}
	}
}

void CMailbox::OnReceive( int nErrorCode )
{
	char szPacket[ 1024 ];
	
	if( nErrorCode ) { SetState( MBOX_NETWORK_FAILED ); return; }
	
	while( TRUE )
	{
#ifdef USE_SSL
		if (m_pSSL)
		{
			nErrorCode = m_SSL.GetData( szPacket, sizeof( szPacket )-1 );
			if (nErrorCode==0)
				return;
		}
		else
#endif
		nErrorCode = Receive( szPacket, sizeof( szPacket )-1 );
		switch( nErrorCode )
		{
			case 0:
			{
				if( m_intState == MBOX_WF_USER_RESPONSE )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
首页国产欧美日韩丝袜| 日韩精品视频网| 水野朝阳av一区二区三区| 国产中文字幕精品| 在线看日本不卡| 国产精品毛片无遮挡高清| 日韩成人免费电影| 欧洲精品在线观看| 中文字幕一区二区三中文字幕| 日本美女一区二区三区视频| 99久精品国产| 欧美韩日一区二区三区| 国内精品久久久久影院色| 欧美一区二区三区四区高清| 亚洲综合色噜噜狠狠| 91色.com| 亚洲欧美一区二区三区孕妇| 丁香六月综合激情| 国产欧美一区视频| 国产美女视频一区| 精品国内片67194| 日本欧美在线观看| 欧美一区二区三区视频在线观看 | 久久蜜桃一区二区| 日本网站在线观看一区二区三区| 欧美日韩三级在线| 亚洲一区二区三区精品在线| 91国在线观看| 亚洲午夜精品一区二区三区他趣| 91论坛在线播放| 亚洲视频在线一区观看| 99久久国产综合精品女不卡| 国产日韩欧美在线一区| 国产精品一二三四| 欧美国产精品中文字幕| www.亚洲免费av| 亚洲卡通动漫在线| 在线观看欧美黄色| 日韩精品成人一区二区三区| 欧美精品123区| 久久激情五月激情| 精品国产乱码久久| 国产成人在线视频免费播放| 国产日韩欧美一区二区三区乱码 | 极品瑜伽女神91| 久久影音资源网| 成人av在线观| 亚洲一区二区三区中文字幕 | 一本久久a久久精品亚洲| 成人欧美一区二区三区视频网页| 一本色道久久综合亚洲91 | 亚洲啪啪综合av一区二区三区| 99re热这里只有精品免费视频| 最新不卡av在线| 欧美午夜精品理论片a级按摩| 亚洲1区2区3区4区| 欧美成人一级视频| 91在线观看美女| 午夜精品福利一区二区蜜股av| 日韩限制级电影在线观看| 国内国产精品久久| 一区二区三区中文字幕电影| 3d成人动漫网站| 国产成人精品三级麻豆| 亚洲精品日日夜夜| 精品国产伦理网| 99热国产精品| 久久精品国产精品青草| 1区2区3区欧美| 欧美xxxx老人做受| 日本久久电影网| 黄网站免费久久| 亚洲欧美偷拍三级| 精品国产一区二区三区四区四 | 亚洲精品一二三四区| 欧美一区二区三区日韩视频| 成年人国产精品| 奇米色一区二区三区四区| 亚洲婷婷在线视频| 精品日本一线二线三线不卡| 91污在线观看| 国产伦精一区二区三区| 性欧美疯狂xxxxbbbb| 国产精品素人一区二区| 欧美日韩1234| 日本韩国视频一区二区| 国产成人亚洲综合a∨婷婷图片| 亚洲成av人片www| 亚洲麻豆国产自偷在线| 国产日产精品1区| 日韩精品一区二区三区视频播放 | 日韩欧美一区二区不卡| 色狠狠色狠狠综合| 97久久久精品综合88久久| 久久99精品国产.久久久久久| 性做久久久久久免费观看欧美| 日韩一区在线播放| 国产农村妇女毛片精品久久麻豆| 日韩你懂的在线播放| 欧美日韩不卡视频| 在线视频一区二区三区| 99久久精品免费| aaa亚洲精品| www.综合网.com| 国产成人精品在线看| 久久超碰97人人做人人爱| 亚洲成av人在线观看| 亚洲一区免费视频| 一区二区在线观看视频 | 久久久精品天堂| 日韩精品一区二区三区视频 | 国产精品久久久久久久岛一牛影视| 日韩免费高清av| 欧美www视频| 精品99一区二区| 亚洲精品在线三区| 久久免费午夜影院| 国产欧美日韩久久| 国产精品美女久久久久久| 国产精品每日更新在线播放网址| 国产精品久久久久四虎| 亚洲欧美另类久久久精品| 亚洲激情网站免费观看| 亚洲午夜私人影院| 肉丝袜脚交视频一区二区| 日韩av在线发布| 国产在线日韩欧美| 懂色av一区二区在线播放| 成人av资源网站| 在线视频亚洲一区| 91精品欧美综合在线观看最新| 91精品国产综合久久蜜臀| 日韩一区二区电影| 国产欧美日韩另类视频免费观看 | 久久久综合网站| 国产精品午夜在线观看| 亚洲色图欧美激情| 午夜国产精品一区| 国产一区二区0| 色欧美片视频在线观看在线视频| 在线欧美日韩精品| 日韩欧美在线影院| 亚洲国产成人私人影院tom| 18成人在线视频| 日韩黄色小视频| 国产成人aaa| 在线视频一区二区三区| 精品免费视频一区二区| 国产精品高清亚洲| 日韩综合一区二区| eeuss国产一区二区三区| 欧美日高清视频| 国产欧美日韩中文久久| 午夜激情一区二区三区| 国产69精品一区二区亚洲孕妇| 欧美综合欧美视频| 国产亚洲综合在线| 亚洲国产欧美在线| 成人午夜av电影| 欧美一区二区精品在线| 专区另类欧美日韩| 国产毛片精品视频| 欧美色窝79yyyycom| 欧美国产一区在线| 久久丁香综合五月国产三级网站| av在线综合网| 久久综合九色综合久久久精品综合| 一区二区三区成人在线视频| 国产尤物一区二区| 欧美一区二区在线免费播放| 亚洲欧美一区二区三区极速播放| 狠狠v欧美v日韩v亚洲ⅴ| 欧美日韩一区三区四区| 国产精品久久影院| 韩国av一区二区三区四区| 欧美日本一区二区| 亚洲午夜一二三区视频| 91在线观看美女| 国产精品久久久久四虎| 国产精品一区在线观看你懂的| 欧美一区二区日韩| 日韩精品乱码av一区二区| 欧美制服丝袜第一页| 亚洲精品视频免费观看| 99久久亚洲一区二区三区青草| 中文字幕欧美区| 国产成人综合在线播放| 久久综合色一综合色88| 黄网站免费久久| 精品裸体舞一区二区三区| 日本亚洲最大的色成网站www| 欧美日韩卡一卡二| 天天做天天摸天天爽国产一区| 欧美日韩国产天堂| 日韩国产在线观看| 日韩精品中午字幕| 精品一区二区免费视频| 久久久国产综合精品女国产盗摄| 精品一区免费av| 久久亚洲精品小早川怜子|