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

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

?? idftpserver.pas

?? delphi indy9.0.18組件包
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
      for i := 0 to LDirectoryList.Count - 1 do begin
        if ADetails then begin
          ADirContents.Add(LDirectoryList.Items[i].Text);
        end else begin
          ADirContents.Add(LDirectoryList.Items[i].Filename);
        end;
      end;
    finally FreeAndNil(LDirectoryList); end;
  end else begin
    raise EIdFTPServerNoOnListDirectory.Create(RSFTPNoOnDirEvent);    {Do not Localize}
  end;
end;

procedure TIdFTPServer.SetHelpReply(const AValue: Tstrings);
begin
  FHelpReply.Assign(AValue);
end;

procedure TIdFTPServer.SetUserAccounts(const AValue: TIdUserManager);
begin
  FUserAccounts := AValue;
  if Assigned(FUserAccounts) then
  begin
    FUserAccounts.FreeNotification(Self);
  end;
end;

procedure TIdFTPServer.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (Operation = opRemove) and (AComponent = FUserAccounts) then
    FUserAccounts := nil;
end;

procedure TIdFTPServer.SetAnonymousAccounts(const AValue: TstringList);
begin
  if Assigned(AValue) then
  begin
    FAnonymousAccounts.Assign(AValue);
  end;
end;

procedure TIdFTPServer.SetEmulateSystem(const AValue: TIdFTPSystems);
begin
  if AnsiSameText(FSystemType, 'Windows 9x/NT.') or AnsiSameText(FSystemType, 'UNIX type: L8.') then    {Do not Localize}
  begin
    case AValue of
      ftpsDOS: FSystemType := 'Windows 9x/NT.';    {Do not Localize}
      ftpsUNIX,
      ftpsVAX: FSystemType := 'UNIX type: L8.';    {Do not Localize}
    end;
  end;
  FEmulateSystem := AValue;
end;

procedure TIdFTPServer.ThreadException(AThread: TIdThread;
  AException: Exception);
begin
  ShowException(AException, nil);
end;

//Command Replies/Handling
procedure TIdFTPServer.CommandUSER(ASender: TIdCommand);
begin
  with TIdFTPServerThread(ASender.Thread) do begin
    if (FAnonymousAccounts.IndexOf(Lowercase(ASender.UnparsedParams)) >= 0)
     and (AllowAnonymousLogin) then begin
      UserType := utAnonymousUser;
      FUsername := ASender.UnparsedParams;
      ASender.Reply.SetReply(331, RSFTPAnonymousUserOkay);
    end else begin
      UserType := utNormalUser;
      if Length(ASender.UnparsedParams) > 0 then begin
        FUsername := ASender.UnparsedParams;
        ASender.Reply.SetReply(331, RSFTPUserOkay);
      end else begin
        ASender.Reply.SetReply(332, RSFTPNeedAccountForLogin);
      end;
    end;
  end;
end;

procedure TIdFTPServer.CommandPASS(ASender: TIdCommand);
var
  LValidated: Boolean;
begin
  with TIdFTPServerThread(ASender.Thread) do begin
    case FUserType of
      utAnonymousUser:
      begin
        LValidated := Length(ASender.UnparsedParams) > 0;
        if FAnonymousPassStrictCheck and LValidated then begin
          LValidated := False;
          if FindFirstOf('@.', ASender.UnparsedParams) > 0 then begin    {Do not Localize}
            LValidated := True;
          end;
        end;
        if LValidated then begin
          FAuthenticated := True;
          FPassword := ASender.UnparsedParams;
          ASender.Reply.SetReply(230, RSFTPAnonymousUserLogged);
        end else begin
          FUserType := utNone;
          FAuthenticated := False;
          FPassword := '';    {Do not Localize}
          ASender.Reply.SetReply(530, RSFTPUserNotLoggedIn);
        end;
      end;//utAnonymousUser
      utNormalUser:
      begin
        if Assigned(FUserAccounts) then begin
          FAuthenticated := FUserAccounts.AuthenticateUser(FUsername, ASender.UnparsedParams);
          if FAuthenticated then begin
            FPassword := ASender.UnparsedParams;
            ASender.Reply.SetReply(230, RSFTPUserLogged);
          end else begin
            FPassword := '';    {Do not Localize}
            ASender.Reply.SetReply(530, RSFTPUserNotLoggedIn);
          end;
        end
        else if Assigned(FOnUserLogin) then begin
          LValidated := False;
          FOnUserLogin(TIdFTPServerThread(ASender.Thread), FUsername, ASender.UnparsedParams, LValidated);
          FAuthenticated := LValidated;
          if LValidated then begin
            FPassword := ASender.UnparsedParams;
            ASender.Reply.SetReply(230, RSFTPUserLogged);
          end else begin
            FPassword := '';    {Do not Localize}
            ASender.Reply.SetReply(530, RSFTPUserNotLoggedIn);
          end;
        end
        //APR 020423
        else begin
          ASender.Reply.SetReply(530, RSFTPUserNotLoggedIn); // user manager not found
        end;
      end;//utNormalUser
    else
      ASender.Reply.SetReply(503, RSFTPNeedLoginWithUser);
    end;//case
  end;//with
  //After login
  if TIdFTPServerThread(ASender.Thread).FAuthenticated and Assigned(FOnAfterUserLogin) then begin
    FOnAfterUserLogin(TIdFTPServerThread(ASender.Thread));
  end;
end;

procedure TIdFTPServer.CommandCWD(ASender: TIdCommand);
var
  s: string;
begin
  with TIdFTPServerThread(ASender.Thread) do begin
    if IsAuthenticated(ASender) then begin
      if Assigned(OnChangeDirectory) then begin
        case FEmulateSystem of
          ftpsDOS: s := ProcessPath(FCurrentDir, ASender.UnparsedParams, '\');    {Do not Localize}
          ftpsOther, ftpsUNIX, ftpsVAX: s := ProcessPath(FCurrentDir, ASender.UnparsedParams);
        end;
        DoChangeDirectory(TIdFTPServerThread(ASender.Thread), s);
        ASender.Reply.SetReply(250, Format(RSFTPCmdSuccessful, ['CWD']));    {Do not Localize}
        FCurrentDir := s;
      end else begin
        ASender.Reply.SetReply(550, Format(RSFTPCmdNotImplemented, ['CWD']));    {Do not Localize}
      end;
    end;
  end;
end;

procedure TIdFTPServer.CommandCDUP(ASender: TIdCommand);
var
  s: string;
begin
  with TIdFTPServerThread(ASender.Thread) do begin
    if IsAuthenticated(ASender) then begin
      case FEmulateSystem of
        ftpsDOS: s := '..\';    {Do not Localize}
        ftpsOther, ftpsUNIX, ftpsVAX: s := '../';    {Do not Localize}
      end;
      if Assigned(FOnChangeDirectory) then begin
        DoChangeDirectory(TIdFTPServerThread(ASender.Thread), s);
        FCurrentDir := s;
        ASender.Reply.SetReply(212, Format(RSFTPCurrentDirectoryIs, [FCurrentDir]));
      end else begin
        ASender.Reply.SetReply(550, Format(RSFTPCmdNotImplemented, ['CWD']));    {Do not Localize}
      end;
    end;
  end;
end;

procedure TIdFTPServer.CommandREIN(ASender: TIdCommand);
begin
  with TIdFTPServerThread(ASender.Thread) do
  begin
    if IsAuthenticated(ASender) then
    begin
      ReInitialize;
      ASender.Reply.SetReply(220, RSFTPServiceOpen);
    end;
  end;
end;

procedure TIdFTPServer.CommandPORT(ASender: TIdCommand);
var
  LLo, LHi: Integer;
  LParm, IP: string;
begin
  with TIdFTPServerThread(ASender.Thread) do begin
    if IsAuthenticated(ASender) then begin
      FPASV := False;
      LParm := ASender.UnparsedParams;
      IP := '';    {Do not Localize}
      { h1 }
      IP := IP + Fetch(LParm, ',') + '.';    {Do not Localize}
      { h2 }
      IP := IP + Fetch(LParm, ',') + '.';    {Do not Localize}
      { h3 }
      IP := IP + Fetch(LParm, ',') + '.';    {Do not Localize}
      { h4 }
      IP := IP + Fetch(LParm, ',');    {Do not Localize}
      { p1 }
      LLo := StrToInt(Fetch(LParm, ','));    {Do not Localize}
      { p2 }
      LHi := StrToInt(LParm);
      FDataPort := (LLo * 256) + LHi;
      CreateDataChannel(False);
      FDataChannelThread.SetupDataChannel(IP, FDataPort);
      ASender.Reply.SetReply(200, Format(RSFTPCmdSuccessful, ['PORT']));    {Do not Localize}
    end;
  end;
end;

procedure TIdFTPServer.CommandPASV(ASender: TIdCommand);
var
  LParam: string;
  LBPort: Word;
  LThread: TIdFTPServerThread;
begin
  LThread := TIdFTPServerThread(ASender.Thread);
  with LThread do begin
    if IsAuthenticated(ASender) then begin
      LParam := TIdIOHandlerSocket(Connection.IOHandler).Binding.IP;
      LBPort := FDefaultDataPort;
      DoOnPASV(LThread, LParam, LBPort);
      CreateDataChannel(True);
      FDataChannelThread.SetupDataChannel(LParam, LBPort);
      with TIdSimpleServer(FDataChannelThread.FDataChannel) do begin
        BeginListen;
        LParam := BoundIP;
        LBPort := Binding.Port;
      end;
      FDataPort := LBPort;
      FPASV := True;
      LParam := StringReplace(LParam, '.', ',', [rfReplaceAll]) +   {Do not Localize}
          ',' + IntToStr(LBPort div 256) + ',' + IntToStr(LBPort mod 256);    {Do not Localize}
      ASender.Reply.SetReply(227, Format(RSFTPPassiveMode, [LParam]));
    end;
  end;
end;

procedure TIdFTPServer.CommandTYPE(ASender: TIdCommand);
var
  LType: Char;
begin
  with TIdFTPServerThread(ASender.Thread) do
  begin
    if IsAuthenticated(ASender) then
    begin
      if Length(ASender.UnparsedParams) = 1 then
      begin
        //Default data type is ASCII
        LType := Uppercase(ASender.UnparsedParams)[1];
        case LType of
          'A': FDataType := ftASCII;    {Do not Localize}
          'I': FDataType := ftBinary;    {Do not Localize}
        end;
        if FDataType in  [ftASCII, ftBinary] then
        begin
          ASender.Reply.SetReply(200, Format(RSFTPTYPEChanged, [LType]));
        end;
      end;
    end;
  end;
end;

procedure TIdFTPServer.CommandSTRU(ASender: TIdCommand);
var
  LDataStruct: Char;
begin
  with TIdFTPServerThread(ASender.Thread) do
  begin
    if IsAuthenticated(ASender) then
    begin
      if Length(ASender.UnparsedParams) = 1 then
      begin
        //Default structure is file
        LDataStruct := Uppercase(ASender.UnparsedParams)[1];
        case LDataStruct of
          'F': FDataStruct := dsFile;    {Do not Localize}
          'R': FDataStruct := dsRecord;    {Do not Localize}
          'P': FDataStruct := dsPage;    {Do not Localize}
        end;
        if FDataStruct in [dsFile, dsRecord, dsPage] then
        begin
          ASender.Reply.SetReply(200, Format(RSFTPSTRUChanged, [LDataStruct]));
        end;
      end;
    end;
  end;
end;

procedure TIdFTPServer.CommandMODE(ASender: TIdCommand);
var
  LMode: Char;
begin
  with TIdFTPServerThread(ASender.Thread) do
  begin
    if IsAuthenticated(ASender) then
    begin
      if Length(ASender.UnparsedParams) = 1 then
      begin
        //Default data mode is stream
        LMode := Uppercase(ASender.UnparsedParams)[1];
        case LMode of
          'B': FDataMode := dmBlock;    {Do not Localize}
          'C': FDataMode := dmCompressed;    {Do not Localize}
          'S': FDataMode := dmStream;    {Do not Localize}
        end;
        if FDataMode in [dmBlock, dmCompressed, dmStream] then
        begin
          ASender.Reply.SetReply(200, Format(RSFTPMODEChanged, [LMode]));
        end;
      end;
    end;
  end;
end;

procedure TIdFTPServer.CommandRETR(ASender: TIdCommand);
var
  s: string;
  LStream: TStream;
begin
  with TIdFTPServerThread(ASender.Thread) do begin
    if IsAuthenticated(ASender) then begin
      //TODO: Fix reference to /
      s := ProcessPath(CurrentDir, ASender.UnparsedParams, '/');    {Do not Localize}
      if Assigned(FOnRetrieveFile) then begin
        LStream := nil;
        FOnRetrieveFile(TIdFTPServerThread(ASender.Thread), s, LStream);
        if Assigned(LStream) then begin
          LStream.Position := FRESTPos;
          FRESTPos := 0;
          FDataChannelThread.Data := LStream;
          FDataChannelThread.OKReply.SetReply(226, RSFTPDataConnClosed);
          FDataChannelThread.ErrorReply.SetReply(426, RSFTPDataConnClosedAbnormally);
          ASender.Reply.SetReply(150, RSFTPDataConnToOpen);
          ASender.SendReply;
          FDataChannelThread.StartThread(ftpRetr);
        end else begin
          ASender.Reply.SetReply(550, RSFTPFileActionAborted);
        end;
      end else begin
        ASender.Reply.SetReply(550, Format(RSFTPCmdNotImplemented, ['RETR']));    {Do not Localize}
      end;
    end;
  end;
end;

procedure TIdFTPServer.CommandSSAP(ASender: TIdCommand);
var
  LStream: TStream;
  LTmp1: string;
  LAppend: Boolean;
  Reply: TIdRFCReply;
begin
  with TIdFTPServerThread(ASender.Thread) do begin
    if IsAuthenticated(ASender) then begin
      if AnsiSameText(ASender.CommandHandler.Command, 'STOU') then begin    {Do not Localize}
        //TODO: Find a better method of finding unique names
        RandSeed := 9944;
        Randomize;
        LTmp1 := 'Tmp' + IntToStr(Random(192));    {Do not Localize}
      end else begin
        LTmp1 := ASender.UnparsedParams;
      end;
      //
      LTmp1 := ProcessPath(FCurrentDir, LTmp1);
      LAppend := AnsiSameText(ASender.CommandHandler.Command, 'APPE');    {Do not Localize}
      //

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久| 亚洲欧美在线高清| 欧美性感一类影片在线播放| 成人国产免费视频| 成人动漫在线一区| av一二三不卡影片| 国产成人在线免费| 国产成人精品亚洲午夜麻豆| 国产很黄免费观看久久| 国产精品18久久久久久久久久久久| 另类综合日韩欧美亚洲| 久久国产视频网| 国产一区二区三区电影在线观看| 国产麻豆精品久久一二三| 国内成+人亚洲+欧美+综合在线| 国产精品一区二区久激情瑜伽| 国产一区二区在线视频| 国产精品自拍一区| 成人免费毛片片v| 99国产精品一区| 欧美色图免费看| 日韩无一区二区| 久久久美女毛片| 日韩一区有码在线| 亚洲午夜免费电影| 蓝色福利精品导航| 成人h动漫精品一区二区| 日本高清免费不卡视频| 91精品欧美福利在线观看| 精品国产99国产精品| 国产精品美女久久久久久久久久久 | 国产欧美一区二区在线观看| 国产区在线观看成人精品| 国产精品福利一区二区三区| 亚洲成人免费在线观看| 国产一区在线视频| 在线观看不卡视频| 久久久久亚洲蜜桃| 一区二区三区电影在线播| 免费不卡在线视频| 91美女精品福利| 欧美精品一区二区精品网| 亚洲精品高清视频在线观看| 久久福利资源站| 欧美日韩国产精品成人| 欧美高清一级片在线观看| 日韩av在线免费观看不卡| 色综合亚洲欧洲| 久久综合成人精品亚洲另类欧美 | 亚洲一二三区在线观看| 久久99久久99精品免视看婷婷| 色综合久久综合网欧美综合网| 日韩欧美精品在线| 五月综合激情日本mⅴ| 成人禁用看黄a在线| 日韩精品一区国产麻豆| 亚洲精品网站在线观看| 美国毛片一区二区三区| 99久久国产综合精品麻豆| 欧美一区二区三区视频| 国产精品久久网站| 久久国产综合精品| 狠狠色综合日日| 欧美亚洲免费在线一区| 国产亚洲短视频| 亚洲成人午夜影院| 99天天综合性| 久久亚区不卡日本| 日韩成人伦理电影在线观看| 99视频超级精品| 精品国产乱子伦一区| 亚洲综合在线免费观看| 老汉av免费一区二区三区| 欧美一区二区在线视频| 亚洲精品国产a| 国产成都精品91一区二区三| 精品毛片乱码1区2区3区| 亚洲国产精品久久久久婷婷884| 国产美女在线精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久久亚洲午夜电影| 免费美女久久99| 欧美美女视频在线观看| 亚洲免费在线视频一区 二区| 国内精品伊人久久久久av影院 | 久久精品亚洲一区二区三区浴池| 久久国产精品色婷婷| 日韩一区二区视频| 午夜日韩在线电影| 成人黄色电影在线| 国产精品欧美久久久久无广告| 国产精品一区二区久激情瑜伽 | 色香色香欲天天天影视综合网| 国产校园另类小说区| 国产米奇在线777精品观看| 久久亚洲影视婷婷| 国内欧美视频一区二区 | 秋霞午夜av一区二区三区| 色婷婷av一区二区三区gif| 欧美不卡一区二区三区四区| 午夜日韩在线观看| 国产三级一区二区| 成人性色生活片| 一区在线观看免费| 91久久久免费一区二区| 一区二区三区在线不卡| 在线观看av一区| 日本伊人色综合网| 精品国产sm最大网站免费看| 国产一本一道久久香蕉| 一区二区在线观看视频 | 亚洲高清中文字幕| 欧美日韩aaaaa| 日本不卡中文字幕| 亚洲精品一线二线三线| 国产成人在线色| 亚洲免费在线播放| 欧美日韩国产中文| 国产在线播放一区三区四| 日本一区二区视频在线| 91一区一区三区| 亚洲国产裸拍裸体视频在线观看乱了| 欧美精品少妇一区二区三区| 毛片av中文字幕一区二区| 日本一区二区三区四区| 在线亚洲高清视频| 国内精品在线播放| 亚洲精品视频在线| 88在线观看91蜜桃国自产| 国产主播一区二区| 一区二区在线观看免费| 日韩一区二区在线看片| 成人午夜精品一区二区三区| 午夜电影一区二区三区| 久久精品免视看| 91在线观看一区二区| 亚洲国产欧美在线人成| 国产日韩精品一区二区浪潮av | 亚洲精品中文字幕在线观看| 欧美一区二区久久久| 成人午夜在线免费| 奇米精品一区二区三区在线观看一| 国产视频一区二区三区在线观看| 欧美精选一区二区| 成人av小说网| 日韩在线观看一区二区| 日本一区二区三区在线观看| 91精品国产一区二区三区香蕉| 99久久伊人精品| 国产一区二区三区久久久| 亚洲自拍偷拍网站| 欧美国产视频在线| 91精品国产综合久久香蕉麻豆| fc2成人免费人成在线观看播放| 精品一区二区三区的国产在线播放 | 亚洲欧洲成人自拍| 91麻豆精品国产91久久久久 | 亚洲免费观看高清完整版在线观看熊| 欧美一区二区视频在线观看2022| 91污片在线观看| 成人av动漫在线| 国产.欧美.日韩| 国内久久精品视频| 美女一区二区久久| 国产一区视频在线看| 久久国产精品99久久人人澡| 日韩中文字幕av电影| 日韩电影在线观看一区| 亚洲一区二区三区四区在线| 亚洲精品成人a在线观看| 亚洲免费在线电影| 亚洲一区二区综合| 亚洲小少妇裸体bbw| 国产成人一区二区精品非洲| 极品瑜伽女神91| 国产福利一区在线| 懂色av中文一区二区三区| 丁香啪啪综合成人亚洲小说| 成人午夜视频网站| 欧美理论片在线| 欧美sm美女调教| 久久免费偷拍视频| 日本一区二区三区视频视频| 国产欧美精品日韩区二区麻豆天美| 久久久亚洲精品石原莉奈| 久久综合久久99| 一区二区高清免费观看影视大全| 亚洲免费观看高清完整版在线观看熊| 综合激情成人伊人| 午夜精品福利一区二区三区av | 欧美高清视频一二三区| 欧美一区二区三区的| 久久在线免费观看| 中文字幕电影一区| 亚洲一区二区av在线| 美腿丝袜亚洲综合| 国产一区二区三区久久久| 欧美日韩久久久一区| 精品对白一区国产伦| 国产精品久久久一区麻豆最新章节|