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

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

?? climap4filehandler.pas

?? Clever_Internet_Suite_6.2的代碼 Clever_Internet_Suite_6.2的代碼 Clever_Internet_Suite_6.2的代碼
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
{
  Clever Internet Suite Version 6.2
  Copyright (C) 1999 - 2006 Clever Components
  www.CleverComponents.com
}

unit clImap4FileHandler;

interface

{$I clVer.inc}
{$IFDEF DELPHI6}
  {$WARN SYMBOL_PLATFORM OFF}
{$ENDIF}

{$IFDEF DELPHI7}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

uses
  Classes, clTcpServer, clImap4Server, clImapUtils, clMailMessage, SyncObjs;

type
  TclImap4FileCommandConnection = class(TclImap4CommandConnection)
  private
    FMessages: TStringList;
  public
    constructor Create;
    destructor Destroy; override;
    property Messages: TStringList read FMessages;
  end;

  TclImap4LoadMessageEvent = procedure (Sender: TObject; AConnection: TclImap4CommandConnection;
    const AMailBoxPath, AMessageFile: string; var ACanLoad: Boolean) of object;

  TclImap4FileHandler = class(TComponent)
  private
    FAccessor: TCriticalSection;
    FServer: TclImap4Server;
    FMailBoxDir: string;
    FMailBoxInfoFile: string;
    FOnLoadMessage: TclImap4LoadMessageEvent;
    function GetNextCounter(AConnection: TclImap4CommandConnection): Integer;
    function GetCurrentCounter(AConnection: TclImap4CommandConnection): Integer;
    procedure SetServer(const Value: TclImap4Server);
    procedure SetMailBoxDir(const Value: string);
    procedure SetMailBoxInfoFile(const Value: string);
    procedure DoCreateConnection(Sender: TObject; var AConnection: TclCommandConnection);
    procedure DoCanAppendMessage(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMailBox: string; var Result: TclImap4MailBoxResult);
    procedure DoCopyMessages(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMessageSet, AMailBox: string; AUseUID: Boolean; var Result: TclImap4MailBoxResult);
    procedure DoCreateMailBox(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMailBox: string; var Result: TclImap4MailBoxResult);
    procedure DoDeleteMailBox(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMailBox: string; var Result: TclImap4MailBoxResult);
    procedure DoPurgeMessages(Sender: TObject; AConnection: TclImap4CommandConnection;
      IsSilent: Boolean; AMessageIDs: TStrings; var Result: TclImap4MessageResult);
    procedure DoFetchMessages(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMessageSet, ADataItems: string; AUseUID: Boolean; AResponse: TclImap4FetchResponseList;
      var Result: TclImap4MessageResult);
    procedure DoGetMailBoxes(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AReferenceName, ACriteria: string; AMailBoxes: TclImap4MailBoxList);
    procedure DoGetMailBoxInfo(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMailBox: string; IsSelectMailBox: Boolean; AMailBoxInfo: TclImap4MailBoxInfo;
      var Result: TclImap4MailBoxResult);
    procedure DoMessageAppended(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMailBox: string; AFlags: TclMailMessageFlags; AMessage: TStrings;
      var Result: TclImap4MailBoxResult);
    procedure DoRenameMailBox(Sender: TObject; AConnection: TclImap4CommandConnection;
      const ACurrentName, ANewName: string; var Result: TclImap4MailBoxResult);
    procedure DoSearchMessages(Sender: TObject; AConnection: TclImap4CommandConnection;
      const ASearchCriteria: string; AUseUID: Boolean; AMessageIDs: TStrings;
      var Result: TclImap4MessageResult);
    procedure DoStoreMessages(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMessageSet: string; AFlagsMethod: TclSetFlagsMethod; AFlags: TclMailMessageFlags;
      IsSilent: Boolean; AUseUID: Boolean; AResponse: TclImap4FetchResponseList;
      var Result: TclImap4MessageResult);
    procedure DoSubscribeMailBox(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMailBox: string; var Result: TclImap4MailBoxResult);
    procedure DoUnsubscribeMailBox(Sender: TObject; AConnection: TclImap4CommandConnection;
      const AMailBox: string; var Result: TclImap4MailBoxResult);
    function GetMailBoxPath(const AUserName: string): string;
    function GetIsSubscribed(const AMailBoxPath: string): Boolean;
    procedure SetIsSubscribed(const AMailBoxPath: string; AIsSubscribed: Boolean);
    function GetMessageFlags(AConnection: TclImap4CommandConnection;
      const AMailBoxPath, AMessageFile: string): string;
    function SetMessageFlags(AConnection: TclImap4CommandConnection;
      const AMailBoxPath, AMessageFile: string; AFlagsMethod: TclSetFlagsMethod;
      ANewFlags: TclMailMessageFlags): string;
    function MailBoxToPath(const AMailBox: string): string;
    procedure InternalSubscribeMailBox(AConnection: TclImap4CommandConnection;
      const AMailBox: string; AIsSubscribed: Boolean; var Result: TclImap4MailBoxResult);
    function GetFileTimeStamp(const AFileName: string): Integer;
    procedure FillMessageList(AConnection: TclImap4CommandConnection;
      const AMailBoxPath: string; AList: TStrings);
    procedure UpdateMailBoxInfo(AConnection: TclImap4CommandConnection; const AMailBoxPath: string;
      AMessageList: TStringList; IsSelectMailBox: Boolean;
      var ARecentCount, AUnseenMessages, AFirstUnseen: Integer);
    function BuildMessageInfo(const AUid: string;
      AFlags: TclMailMessageFlags): string;
    procedure ParseMessageInfo(const ASource: string; var AUid: string;
      var AFlags: TclMailMessageFlags);
    function GetMessageList(AConnection: TclImap4CommandConnection): TStringList;
    function GetMessageUID(AConnection: TclImap4CommandConnection;
      const AMessageFile: string): string;
    function GetMsgFileByUID(AList: TStrings; AUID: Integer): string;
    procedure SearchAllMessages(AConnection: TclImap4CommandConnection;
      AUseUID: Boolean; AMessageIDs: TStrings);
    procedure SearchMessages(AConnection: TclImap4CommandConnection;
      const AKey, AParam: string; AUseUID: Boolean; AMessageIDs: TStrings);
    procedure FillTargetList(AConnection: TclImap4CommandConnection;
      const AMessageSet: string; AUseUID: Boolean; ATargetList: TStrings);
    function GenMessageFileName(AConnection: TclImap4CommandConnection): string;
    procedure FetchMessage(AConnection: TclImap4CommandConnection;
      const AMessageFile: string; ARequest: TclImap4FetchRequestList;
      AUseUID: Boolean; AResponseItem: TclImap4FetchResponseItem);
    function GetLocalFileSize(const AFileName: string): Integer;
    procedure FetchHeader(const AMessagePath, ACommand, AParams: string; AResponseItem: TclImap4FetchResponseItem);
    procedure FetchHeaderFields(const AMessagePath, ACommand, AParams: string; AResponseItem: TclImap4FetchResponseItem);
    procedure FetchBodyText(const AMessagePath, ACommand, AParams: string; AResponseItem: TclImap4FetchResponseItem);
    procedure FetchBody(const AMessagePath, ACommand, AParams: string; AResponseItem: TclImap4FetchResponseItem);
    function FetchMessageEnvelope(const AMessagePath: string): string;
    function FetchBodyStructure(const AMessagePath: string): string;
    procedure ParseHeaderFieldParams(const ASource: string;
      AFields: TStrings);
    function GetMessageInternalDate(const AMessagePath: string): TDateTime;
    function DateTimeToImapTime(ADateTime: TDateTime): string;
    function GetMimeBodyStructure(ABodies: TclMessageBodies): string;
    procedure ExtractContentTypeParts(const AContentType: string; var AType, ASubType: string);
    function GetMimeBodySize(ABody: TclMessageBody): string;
    procedure GetUueBodySize(AMessage: TStrings; var ASize,
      ALines: Integer);
    procedure RefreshMailBoxInfo(AConnection: TclImap4CommandConnection);
    function GetMailBoxInfo(AConnection: TclImap4CommandConnection;
      const AMailBox: string; IsSelectMailBox: Boolean;
      AMailBoxInfo: TclImap4MailBoxInfo; AMessageList: TStringList): TclImap4MailBoxResult;
    procedure GetBodyIDs(const AParams: string; var ABodyIDs: array of Integer);
    function GetBodyByIndex(var ABodyIDs: array of Integer;
      AIndex: Integer; ABodies: TclMessageBodies): TclMessageBody;
  protected
    function GetMessageEnvelope(AMessage: TStrings): string; virtual;
    function GetBodyStructure(AMessage: TStrings): string; virtual;
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure CleanEventHandlers; virtual;
    procedure InitEventHandlers; virtual;
    procedure DoLoadMessage(AConnection: TclImap4CommandConnection;
      const AMailBoxPath, AMessageFile: string; var ACanLoad: Boolean); virtual;
    property Accessor: TCriticalSection read FAccessor;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property Server: TclImap4Server read FServer write SetServer;
    property MailBoxDir: string read FMailBoxDir write SetMailBoxDir;
    property MailBoxInfoFile: string read FMailBoxInfoFile write SetMailBoxInfoFile;
    property OnLoadMessage: TclImap4LoadMessageEvent read FOnLoadMessage write FOnLoadMessage;
  end;

const
  cMailBoxSection = 'MAILBOXINFO';
  cMessagesSection = 'MESSAGES';

implementation

uses
  Windows, SysUtils, clUtils, IniFiles, clEncoder, clPCRE;

type
  TclMessageBodyIDs = array[0..9] of Integer;

{ TclImap4FileHandler }

procedure TclImap4FileHandler.CleanEventHandlers;
begin
  Server.OnCreateConnection := nil;
  Server.OnGetMailBoxes := nil;
  Server.OnCreateMailBox := nil;
  Server.OnDeleteMailBox := nil;
  Server.OnRenameMailBox := nil;
  Server.OnSubscribeMailBox := nil;
  Server.OnUnsubscribeMailBox := nil;
  Server.OnGetMailBoxInfo := nil;
  Server.OnSearchMessages := nil;
  Server.OnCopyMessages := nil;
  Server.OnFetchMessages := nil;
  Server.OnStoreMessages := nil;
  Server.OnPurgeMessages := nil;
  Server.OnCanAppendMessage := nil;
  Server.OnMessageAppended := nil;
end;

constructor TclImap4FileHandler.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FAccessor := TCriticalSection.Create();
  FMailBoxInfoFile := cImapMailBoxInfoFile;
end;

destructor TclImap4FileHandler.Destroy;
begin
  FAccessor.Free();
  inherited Destroy();
end;

procedure TclImap4FileHandler.InitEventHandlers;
begin
  Server.OnCreateConnection := DoCreateConnection;
  Server.OnGetMailBoxes := DoGetMailBoxes;
  Server.OnCreateMailBox := DoCreateMailBox;
  Server.OnDeleteMailBox := DoDeleteMailBox;
  Server.OnRenameMailBox := DoRenameMailBox;
  Server.OnSubscribeMailBox := DoSubscribeMailBox;
  Server.OnUnsubscribeMailBox := DoUnsubscribeMailBox;
  Server.OnGetMailBoxInfo := DoGetMailBoxInfo;
  Server.OnSearchMessages := DoSearchMessages;
  Server.OnCopyMessages := DoCopyMessages;
  Server.OnFetchMessages := DoFetchMessages;
  Server.OnStoreMessages := DoStoreMessages;
  Server.OnPurgeMessages := DoPurgeMessages;
  Server.OnCanAppendMessage := DoCanAppendMessage;
  Server.OnMessageAppended := DoMessageAppended;
end;

procedure TclImap4FileHandler.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (Operation <> opRemove) then Exit;
  if (AComponent = FServer) then
  begin
    CleanEventHandlers();
    FServer := nil;
  end;
end;

procedure TclImap4FileHandler.SetServer(const Value: TclImap4Server);
begin
  if (FServer <> Value) then
  begin
{$IFDEF DELPHI5}
    if (FServer <> nil) then
    begin
      FServer.RemoveFreeNotification(Self);
      CleanEventHandlers();
    end;
{$ENDIF}
    FServer := Value;
    if (FServer <> nil) then
    begin
      FServer.FreeNotification(Self);
      InitEventHandlers();
    end;
  end;
end;

function TclImap4FileHandler.GetMailBoxPath(const AUserName: string): string;
begin
  Result := AddTrailingBackSlash(MailBoxDir) + AddTrailingBackSlash(AUserName);
end;

function TclImap4FileHandler.GetIsSubscribed(const AMailBoxPath: string): Boolean;
var
  ini: TIniFile;
begin
  Result := FileExists(AMailBoxPath + MailBoxInfoFile);
  if not Result then Exit;

  ini := TIniFile.Create(AMailBoxPath + MailBoxInfoFile);
  try
    Result := ini.ReadBool(cMailBoxSection, 'Subscribed', False);
  finally
    ini.Free();
  end;
end;

procedure TclImap4FileHandler.SetIsSubscribed(const AMailBoxPath: string; AIsSubscribed: Boolean);
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(AMailBoxPath + MailBoxInfoFile);
  try
    ini.WriteBool(cMailBoxSection, 'Subscribed', AIsSubscribed);
  finally
    ini.Free();
  end;
end;

function TclImap4FileHandler.MailBoxToPath(const AMailBox: string): string;
begin
  if SameText('INBOX', AMailBox) then
  begin
    Result := '';
  end else
  begin
    Result := StringReplace(AMailBox, Server.MailBoxSeparator, '\', [rfReplaceAll]);
  end;
end;

procedure TclImap4FileHandler.DoGetMailBoxes(Sender: TObject;
  AConnection: TclImap4CommandConnection; const AReferenceName, ACriteria: string;
  AMailBoxes: TclImap4MailBoxList);
  
  procedure CollectMailboxes(const ARegEx, APath, ABase: string);
  var
    sr: TSearchRec;
    found: string;
    item: TclImap4MailBoxItem;
  begin
    if SysUtils.FindFirst(APath + '*.*', faDirectory, sr) = 0 then
    begin
      repeat
        if ((sr.Attr and faDirectory) <> 0) and (sr.Name <> '.') and (sr.Name <> '..') then
        begin
          found := ABase + sr.Name;
          if not SameText(found, 'INBOX') then
          begin
            if RE_Match(found, ARegEx, PCRE_CASELESS) then
            begin
              item := AMailBoxes.Add();
              item.Name := StringReplace(found, '\', Server.MailBoxSeparator, [rfReplaceAll]);
              item.IsSubscribed := GetIsSubscribed(APath + sr.Name + '\');
            end;
            CollectMailboxes(ARegEx, APath + sr.Name + '\', found + Server.MailBoxSeparator);
          end else
          begin
            CollectMailboxes(ARegEx, APath + 'INBOX' + '\', 'INBOX' + Server.MailBoxSeparator);
          end;
        end;
      until SysUtils.FindNext(sr) <> 0;
      SysUtils.FindClose(sr);
    end;
  end;
  
var
  i: Integer;
  pattern, regEx: string;
  item: TclImap4MailBoxItem;
begin
  pattern := AReferenceName + ACriteria;
  regEx := '^';
  for i := 1 to Length(pattern) do
  begin
    case pattern[i] of
      '*' : regEx := regEx + '.*';
      '%' : regEx := regEx + '[^' + Server.MailBoxSeparator + ']*';
      '+', '-', '.', '$', '(', ')': regEx := regEx + '\' + pattern[i];
      else regEx := regEx + pattern[i];
    end;
  end;
  regEx := regEx + '$';

  if RE_Match('INBOX', regEx, PCRE_CASELESS) then
  begin
    item := AMailBoxes.Add();
    item.Name := 'INBOX';
    item.IsSubscribed := GetIsSubscribed(GetMailBoxPath(AConnection.UserName));
  end;

  CollectMailboxes(regEx, GetMailBoxPath(AConnection.UserName), '');
end;

procedure TclImap4FileHandler.DoCreateMailBox(Sender: TObject;
  AConnection: TclImap4CommandConnection; const AMailBox: string; var Result: TclImap4MailBoxResult);
var
  path: string;
begin
  if SameText('INBOX', AMailBox) then
  begin
    Result := mrAccessDenied;
    Exit;
  end;
  
  path := GetMailBoxPath(AConnection.UserName) + AddTrailingBackSlash(MailBoxToPath(AMailBox));

  if DirectoryExists(path) then
  begin
    Result := mrAlreadyExists;
  end else
  if ForceFileDirectories(path) then
  begin
    Result := mrSuccess;
  end else
  begin
    Result := mrAccessDenied;
  end;
end;

procedure TclImap4FileHandler.DoDeleteMailBox(Sender: TObject;
  AConnection: TclImap4CommandConnection; const AMailBox: string; var Result: TclImap4MailBoxResult);
var
  path: string;
begin
  if SameText('INBOX', AMailBox) then
  begin
    Result := mrAccessDenied;
    Exit;
  end;

  path := GetMailBoxPath(AConnection.UserName) + AddTrailingBackSlash(MailBoxToPath(AMailBox));

  if DirectoryExists(path) then
  begin
    if DeleteRecursiveDir(path) then
    begin
      Result := mrSuccess;
    end else
    begin
      Result := mrAccessDenied;
    end;
  end else
  begin
    Result := mrNotFound;
  end;
end;

procedure TclImap4FileHandler.DoRenameMailBox(Sender: TObject; AConnection: TclImap4CommandConnection;
  const ACurrentName, ANewName: string; var Result: TclImap4MailBoxResult);
var
  curName, newName: string;
begin
  if SameText('INBOX', ACurrentName) or SameText('INBOX', ANewName) then
  begin
    Result := mrAccessDenied;
    Exit;
  end;

  curName := GetMailBoxPath(AConnection.UserName) + AddTrailingBackSlash(MailBoxToPath(ACurrentName));
  newName := GetMailBoxPath(AConnection.UserName) + AddTrailingBackSlash(MailBoxToPath(ANewName));

  if DirectoryExists(curName) then
  begin
    if not DirectoryExists(newName) then
    begin
      if RenameFile(curName, newName) then
      begin
        Result := mrSuccess;
      end else
      begin
        Result := mrAccessDenied;
      end;
    end else
    begin
      Result := mrAlreadyExists;
    end;
  end else
  begin
    Result := mrNotFound;
  end;
end;

procedure TclImap4FileHandler.InternalSubscribeMailBox(AConnection: TclImap4CommandConnection;
  const AMailBox: string; AIsSubscribed: Boolean; var Result: TclImap4MailBoxResult);
var
  path: string;
begin
  path := GetMailBoxPath(AConnection.UserName) + AddTrailingBackSlash(MailBoxToPath(AMailBox));

  if DirectoryExists(path) then
  begin
    try
      SetIsSubscribed(path, AIsSubscribed);
      Result := mrSuccess;
    except
      Result := mrAccessDenied;
    end;
  end else
  begin
    Result := mrNotFound;
  end;
end;

procedure TclImap4FileHandler.DoSubscribeMailBox(Sender: TObject;
  AConnection: TclImap4CommandConnection; const AMailBox: string; var Result: TclImap4MailBoxResult);
begin
  InternalSubscribeMailBox(AConnection, AMailBox, True, Result);
end;

procedure TclImap4FileHandler.DoUnsubscribeMailBox(Sender: TObject;
  AConnection: TclImap4CommandConnection; const AMailBox: string; var Result: TclImap4MailBoxResult);
begin
  InternalSubscribeMailBox(AConnection, AMailBox, False, Result);
end;

function TclImap4FileHandler.GetFileTimeStamp(const AFileName: string): Integer;
var
  Handle: THandle;
  FindData: TWin32FindData;
  pTime: TFileTime;
  s: string;
begin
  s := AFileName;
  if (s <> '') and (s[Length(s)] = '\') then
  begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩在线播放| 奇米亚洲午夜久久精品| 欧美肥妇bbw| 亚洲另类中文字| 欧美电视剧免费观看| 久久99精品国产91久久来源| 欧美伊人久久久久久久久影院| 亚洲777理论| 国产婷婷色一区二区三区| 亚洲制服丝袜av| 成人高清免费在线播放| 欧美一区二区免费视频| 亚洲精品一二三四区| 国产成人综合在线播放| 精品国产一区二区三区久久影院| 一区二区三区视频在线看| 99精品视频一区二区三区| 久久精品这里都是精品| 麻豆成人91精品二区三区| 欧美日韩国产精品成人| 亚洲一区二区在线播放相泽 | 国产精品国产自产拍高清av| 日本最新不卡在线| 欧美色电影在线| 亚洲黄色av一区| 日本精品一级二级| 日韩毛片高清在线播放| a级高清视频欧美日韩| 日本一区二区三区四区| 无吗不卡中文字幕| 中文字幕乱码亚洲精品一区| 欧美另类变人与禽xxxxx| 国产精品一级黄| 国产精品国产精品国产专区不蜜| 久久久久国产精品厨房| 欧美性大战xxxxx久久久| 久久国产夜色精品鲁鲁99| 欧美性做爰猛烈叫床潮| 亚洲人成小说网站色在线| bt7086福利一区国产| 欧美国产精品专区| 97久久人人超碰| 亚洲成人福利片| 夜夜嗨av一区二区三区中文字幕 | 久久色在线视频| 天天综合网天天综合色| 国产欧美日韩精品a在线观看| 国产91富婆露脸刺激对白| 成人ar影院免费观看视频| 欧美一区二区三区人| 亚洲一区二区av电影| 欧美日韩一区二区三区四区五区| 亚洲成在线观看| 欧美一级艳片视频免费观看| 老司机精品视频线观看86 | 麻豆国产欧美日韩综合精品二区| 欧美本精品男人aⅴ天堂| 国产高清一区日本| 18成人在线观看| 欧美另类z0zxhd电影| 九色|91porny| 亚洲色大成网站www久久九九| 欧美色视频在线观看| 精品一区二区在线视频| 亚洲欧美日韩小说| 日韩欧美中文字幕精品| 成人性生交大合| 亚洲国产精品久久艾草纯爱| 精品国产免费久久| 色诱亚洲精品久久久久久| 美女视频网站久久| 日韩美女啊v在线免费观看| 91精品国产麻豆国产自产在线| 国产精品69毛片高清亚洲| 一区二区三区日韩在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 99久久久久久| 国产一区二区不卡在线| 亚洲成精国产精品女| 久久精品日韩一区二区三区| 欧美一三区三区四区免费在线看| 国产农村妇女毛片精品久久麻豆| 国产伦精品一区二区三区免费| 欧美日韩成人一区二区| 国产精品色噜噜| 麻豆国产精品一区二区三区 | 国产福利一区二区三区视频在线| 91浏览器打开| 日韩中文字幕区一区有砖一区 | 日韩区在线观看| 日韩精品免费专区| 不卡电影免费在线播放一区| 中文字幕在线观看不卡| 国产成人午夜电影网| 91成人在线精品| 亚洲欧美日韩一区二区 | 国产一区二区三区高清播放| 777亚洲妇女| 国产在线播放一区三区四| 亚洲女同一区二区| 26uuu亚洲| wwwwxxxxx欧美| 国产a视频精品免费观看| 一区二区三区四区视频精品免费 | 蜜臀av一级做a爰片久久| 精品一区二区三区在线视频| 国产欧美日韩三区| 国产成人亚洲精品青草天美| 中文子幕无线码一区tr| 91一区二区三区在线播放| 亚洲乱码日产精品bd| 欧美一区二区福利在线| 成人免费观看av| 亚洲一区成人在线| 精品久久人人做人人爰| 精品国产髙清在线看国产毛片| 在线成人免费视频| 成人h动漫精品一区二区| 日本在线不卡视频| 中文字幕精品一区二区精品绿巨人 | 国产精品久久网站| 久久国产成人午夜av影院| 成人精品高清在线| 久久国产人妖系列| 亚洲高清一区二区三区| 亚洲在线视频免费观看| 91麻豆免费观看| 日韩精品电影在线| 美女视频黄a大片欧美| 日本欧美肥老太交大片| 男男gaygay亚洲| 精品一区二区三区日韩| 国产精品综合二区| 成人免费不卡视频| 色狠狠色噜噜噜综合网| 欧美色老头old∨ideo| 欧美一区二区三区四区五区 | 国产欧美日韩在线| ...av二区三区久久精品| 亚洲欧美日韩久久| 亚洲国产视频一区二区| 蜜臂av日日欢夜夜爽一区| 国产一区二区在线视频| av中文字幕不卡| 欧美日本一区二区在线观看| 欧美成人免费网站| 亚洲欧美自拍偷拍色图| 午夜国产精品一区| 黄色成人免费在线| 97久久久精品综合88久久| 欧美妇女性影城| 国产日韩欧美精品电影三级在线| 亚洲免费观看高清在线观看| 免费在线观看日韩欧美| 成人中文字幕合集| 3d动漫精品啪啪| 中文字幕一区二区在线播放| 日韩电影在线免费观看| 高清成人在线观看| 欧美一二三区在线观看| 国产精品欧美久久久久一区二区| 午夜在线成人av| 成人三级伦理片| 欧美一区二区二区| 亚洲色图.com| 国产乱码精品一区二区三区五月婷| 在线影视一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 亚洲人成伊人成综合网小说| 狠狠网亚洲精品| 777奇米成人网| 亚洲免费观看高清完整| 国产精品亚洲人在线观看| 在线不卡的av| 一区二区三区免费观看| 风流少妇一区二区| 日韩一区二区在线免费观看| 亚洲激情一二三区| 国产99久久精品| 久久女同精品一区二区| 日本va欧美va精品发布| 欧美性做爰猛烈叫床潮| 亚洲欧美一区二区不卡| 国产成人精品午夜视频免费| 日韩你懂的在线播放| 午夜欧美2019年伦理| 欧美色综合影院| 一区二区三区在线视频观看58| 成人黄色片在线观看| 久久视频一区二区| 国产乱子轮精品视频| 26uuu成人网一区二区三区| 美女一区二区三区在线观看| 欧美男人的天堂一二区| 亚洲成人激情综合网| 欧美日韩在线播放一区| 夜夜爽夜夜爽精品视频| 欧美三级欧美一级| 午夜精品爽啪视频| 欧美一区二区成人|