亚洲欧美第一页_禁久久精品乱码_粉嫩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免费精品在线观看| 日韩福利电影在线观看| 国产精品久久精品日日| 精品福利一区二区三区 | 国产午夜精品一区二区| 制服丝袜成人动漫| 色婷婷精品大视频在线蜜桃视频| 久久99国产精品免费| 亚洲自拍偷拍麻豆| 国产精品私房写真福利视频| 日韩三级.com| 欧美三区在线观看| 日本韩国欧美国产| 成人av在线一区二区三区| 精品一区二区日韩| 美女视频黄a大片欧美| 日日夜夜精品视频天天综合网| 亚洲欧美激情视频在线观看一区二区三区| 欧美精品一区二| 日韩三级.com| 日韩一区二区免费高清| 欧美精品亚洲一区二区在线播放| 91电影在线观看| 91一区二区三区在线播放| 成人精品免费网站| 成人免费电影视频| 成人午夜看片网址| a4yy欧美一区二区三区| 不卡的看片网站| www..com久久爱| 99久久精品国产导航| 99国产精品国产精品毛片| av一区二区三区四区| jiyouzz国产精品久久| 99re热这里只有精品免费视频| av电影在线观看一区| 91麻豆6部合集magnet| 色综合久久99| 欧美日韩国产小视频在线观看| 91免费国产视频网站| 欧美在线你懂的| 欧美三级午夜理伦三级中视频| 欧美日韩色一区| 欧美一区二区在线观看| 日韩欧美一二三四区| 久久亚洲综合av| 国产日产精品一区| 国产精品久久777777| 亚洲精品一二三| 视频在线观看91| 蜜臀av性久久久久蜜臀aⅴ流畅| 美女视频网站黄色亚洲| 国产综合成人久久大片91| 国产伦精品一区二区三区免费 | 久久久久成人黄色影片| 国产视频一区二区在线观看| 国产精品美女久久久久aⅴ国产馆| 一色屋精品亚洲香蕉网站| 亚洲激情自拍偷拍| 日日夜夜免费精品视频| 国产一区二区在线电影| 94-欧美-setu| 欧美日韩www| 久久久久国产精品人| 一区二区三区在线视频观看58| 视频一区二区中文字幕| 国产精品自拍三区| 日本韩国欧美一区| 欧美草草影院在线视频| 国产精品久久久久久一区二区三区 | 欧美日韩国产影片| 26uuu国产电影一区二区| 中文字幕亚洲精品在线观看 | 亚洲大片精品永久免费| 久久电影网电视剧免费观看| 成人性视频网站| 欧美日韩国产三级| 久久久久久毛片| 亚洲精品国产精华液| 精品一区二区三区免费观看| 色诱视频网站一区| 久久女同互慰一区二区三区| 亚洲一区二区三区四区在线观看 | 成人18视频日本| 6080午夜不卡| 亚洲色图制服诱惑 | 91精品国产综合久久精品麻豆| 久久久影视传媒| 一区二区成人在线观看| 久久国产精品99精品国产| 91视频在线观看| 久久久久久亚洲综合影院红桃| 亚洲精品水蜜桃| 懂色av一区二区在线播放| 91精品国产麻豆| 亚洲黄一区二区三区| 国产成人精品免费在线| 欧美一级久久久久久久大片| 伊人色综合久久天天人手人婷| 国产精品一区二区免费不卡| 777xxx欧美| 亚洲夂夂婷婷色拍ww47| jvid福利写真一区二区三区| 久久久综合激的五月天| 麻豆精品视频在线| 色天天综合色天天久久| 国产精品第一页第二页第三页| 久久超碰97人人做人人爱| 欧美美女直播网站| 一区二区国产盗摄色噜噜| av资源网一区| 国产欧美一二三区| 国精产品一区一区三区mba视频| 欧美日韩国产a| 一区二区三区日本| 成人av网址在线| 久久九九国产精品| 黑人巨大精品欧美一区| 宅男在线国产精品| 亚洲国产精品久久人人爱蜜臀| 99精品视频在线播放观看| 国产欧美日韩精品一区| 国产麻豆精品在线| wwwwxxxxx欧美| 极品少妇xxxx偷拍精品少妇| 日韩午夜精品电影| 美女视频一区在线观看| 337p亚洲精品色噜噜噜| 男女激情视频一区| 日韩欧美国产wwwww| 激情文学综合网| 久久综合网色—综合色88| 国产精品亚洲成人| 欧美经典一区二区三区| heyzo一本久久综合| 亚洲欧洲美洲综合色网| 91免费看片在线观看| 伊人开心综合网| 欧美日韩高清一区二区三区| 五月天精品一区二区三区| 欧美日韩电影一区| 三级欧美在线一区| 日韩一级片网址| 精品一区免费av| 国产日韩欧美不卡| 不卡的电影网站| 亚洲一区二区三区四区五区中文| 欧美视频一区二| 美女国产一区二区三区| 久久噜噜亚洲综合| 97精品久久久午夜一区二区三区| 一区二区欧美精品| 欧美一二三在线| 国产精品538一区二区在线| 国产精品毛片a∨一区二区三区| 在线日韩av片| 日本美女视频一区二区| 国产日韩精品一区| 在线国产电影不卡| 九九精品一区二区| 中文在线一区二区| 欧美午夜电影网| 久久国产精品第一页| 一区精品在线播放| 欧美二区乱c少妇| 粉嫩aⅴ一区二区三区四区五区| 一区二区三区中文在线| 日韩一区二区在线播放| 国产不卡在线播放| 亚洲成av人**亚洲成av**| 精品99一区二区三区| 日本久久电影网| 美女尤物国产一区| 亚洲天天做日日做天天谢日日欢| 在线播放视频一区| 高清shemale亚洲人妖| 亚洲电影一级黄| 国产日韩影视精品| 91精选在线观看| caoporm超碰国产精品| 麻豆免费看一区二区三区| 综合久久久久久| 久久综合精品国产一区二区三区| 色噜噜狠狠成人网p站| 国产精品一区在线观看你懂的| 亚洲福中文字幕伊人影院| 久久久久久久久蜜桃| 欧美精选在线播放| 91一区二区在线| 国产成人夜色高潮福利影视| 午夜日韩在线电影| 中文字幕在线免费不卡| 久久先锋影音av鲁色资源网| 91精品国产综合久久久蜜臀图片| eeuss国产一区二区三区| 国产又粗又猛又爽又黄91精品| 亚洲影院免费观看|