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

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

?? ftpsrv.pas

?? 互聯網套件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
{*_* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Author:       Fran鏾is PIETTE
Description:  TFtpServer class encapsulate the FTP protocol (server side)
              See RFC-959 for a complete protocol description.
EMail:        francois.piette@pophost.eunet.be
              francois.piette@rtfm.be             http://www.rtfm.be/fpiette
Creation:     April 21, 1998
Version:      1.06
Support:      Use the mailing list twsocket@rtfm.be See website for details.
Legal issues: Copyright (C) 1997, 1998, 1999 by Fran鏾is PIETTE
              Rue de Grady 24, 4053 Embourg, Belgium. Fax: +32-4-365.74.56
              <francois.piette@pophost.eunet.be>

              This software is provided 'as-is', without any express or
              implied warranty.  In no event will the author be held liable
              for any  damages arising from the use of this software.

              Permission is granted to anyone to use this software for any
              purpose, including commercial applications, and to alter it
              and redistribute it freely, subject to the following
              restrictions:

              1. The origin of this software must not be misrepresented,
                 you must not claim that you wrote the original software.
                 If you use this software in a product, an acknowledgment
                 in the product documentation would be appreciated but is
                 not required.

              2. Altered source versions must be plainly marked as such, and
                 must not be misrepresented as being the original software.

              3. This notice may not be removed or altered from any source
                 distribution.

              4. You must register this software by sending a picture postcard
                 to the author. Use a nice stamp and mention your name, street
                 address, EMail address and any comment you like to say.

History:
Apr 29, 1998  V0.90 released for beta testing.
May 01, 1998  V0.92 Adapted for Delphi 1.0
May 03, 1998  V0.93 Adapted for Delphi 2.0 and C++Builder
May 04, 1998  V0.94 Use '/' or '\' as path delimiter. Expose only '/' to the
              outside. Stripped any telnet options (IE send two !). Handled
              absolute path. Implemented SIZE and REST commands.
              Added support for UNC (not finished !)
May 06, 1998  V0.95 Corrected spurious 226 message on PASV mode STOR.
              Made GetInteger retunrs a LongInt.
              Use a LongInt for N in CommandPORT (needed for 16 bits)
              Added slash substitution in BuildFilePath command.
Jul 09, 1998  V1.00 Adapted for Delphi 4, removed beta status.
Jul 21, 1998  V1.01 Added OnValidateDele event
              Changed function to get file size (do not open the file)
Feb 14, 1999  V1.02 Replaced straight winsock call by indirect calls thru
              wsocket (this provide runtime link to winsock DLL).
Mar 06, 1999  V1.03 Added code from  Plegge, Steve <jsp@nciinc.com> to add
              APPE, XMKD, KRMD and STRU commands support.
Jul 24, 1999  V1.04 Replaced msgStorDisabled value from '500 Cannot STOR.' to
              '501 Permission Denied' because CuteFTP doesn't like error 500.
              Suggested by Cedric Veilleux <webmaster@smashweb.com>.
Aug 20, 1999  V1.05 Added compile time options. Revised for BCB4.
              Added Addr property to select interface in multihomed computers.
Oct 02, 1999  V1.06 Added OnValidateRnFr and OnValidateRnTo events.
              Initialized Allowed variable to TRUE before triggerValidateDele.

 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
unit FtpSrv;

{$B-}           { Enable partial boolean evaluation   }
{$T-}           { Untyped pointers                    }
{$X+}           { Enable extended syntax              }
{$IFNDEF VER80} { Not for Delphi 1                    }
    {$H+}       { Use long strings                    }
    {$J+}       { Allow typed constant to be modified }
{$ENDIF}
{$IFDEF VER110} { C++ Builder V3.0                    }
    {$ObjExportAll On}
{$ENDIF}
{$IFDEF VER125} { C++ Builder V4.0                    }
    {$ObjExportAll On}
{$ENDIF}

interface

uses
    WinTypes, WinProcs, Messages, SysUtils, Classes, Graphics, Controls, Forms,
    Dialogs, Winsock, WSocket, FtpSrvC;

const
    FtpServerVersion         = 106;
    CopyRight : String       = ' TFtpServer (c) 1998 F. Piette V1.06 ';
    WM_FTPSRV_CLOSE_REQUEST  = WM_USER + 1;
    WM_FTPSRV_CLIENT_CLOSED  = WM_USER + 2;
    WM_FTPSRV_ABORT_TRANSFER = WM_USER + 3;
    WM_FTPSRV_CLOSE_DATA     = WM_USER + 4;

type
    FtpServerException  = class(Exception);
{ Various Delphi and C++Builder version handle string parameter passed as var }
{ differently. To get application code compatible across all versions, we     }
{ need to define our own string type. We use the larger we can with the given }
{ compiler version. btw: the 255 limit is not a problem because it applies to }
{ the command laines sent to the server and 255 should be enough except if    }
{ you use incredibly long file names.                                         }
{$IFDEF VER100}                     { Delphi 3   }
    TFtpString = String;
{$ELSE}                             { All others }
    TFtpString = String[255];
{$ENDIF}
    TFtpCtrlSocketClass = class of TFtpCtrlSocket;
    TFtpSrvAuthenticateEvent  =  procedure (Sender   : TObject;
                                            Client   : TFtpCtrlSocket;
                                            UserName : TFtpString;
                                            Password : TFtpString;
                                            var Authenticated : Boolean) of object;
    TFtpSrvChangeDirectoryEvent =  procedure (Sender      : TObject;
                                              Client      : TFtpCtrlSocket;
                                              Directory   : TFtpString;
                                              var Allowed : Boolean) of object;
    TFtpSrvBuildDirectoryEvent =  procedure (Sender        : TObject;
                                             Client        : TFtpCtrlSocket;
                                             var Directory : TFtpString;
                                             Detailed      : Boolean) of object;
    TFtpSrvClientConnectEvent = procedure (Sender : TObject;
                                           Client : TFtpCtrlSocket;
                                           Error  : Word) of object;
    TFtpSrvDataSessionConnectedEvent = procedure (Sender : TObject;
                                                  Client : TFtpCtrlSocket;
                                                  Data   : TWSocket;
                                                  Error  : Word) of object;
    TFtpSrvClientCommandEvent = procedure (Sender        : TObject;
                                           Client        : TFtpCtrlSocket;
                                           var Keyword   : TFtpString;
                                           var Params    : TFtpString;
                                           var Answer    : TFtpString) of object;
    TFtpSrvAnswerToClientEvent = procedure (Sender        : TObject;
                                            Client        : TFtpCtrlSocket;
                                            var Answer    : TFtpString) of object;
    TFtpSrvValidateXferEvent  = procedure (Sender        : TObject;
                                           Client        : TFtpCtrlSocket;
                                           var FilePath  : TFtpString;
                                           var Allowed   : Boolean) of object;
    TFtpSrvDataAvailableEvent = procedure (Sender : TObject;
                                           Client : TFtpCtrlSocket;
                                           Data   : TWSocket;
                                           Buf    : PChar;
                                           Len    : LongInt;
                                           Error  : Word) of object;
    TFtpSrvRetrDataSentEvent  = procedure (Sender : TObject;
                                           Client : TFtpCtrlSocket;
                                           Data   : TWSocket;
                                           Error  : Word) of object;
    TFtpSrvCommandProc        = procedure (Client        : TFtpCtrlSocket;
                                           var Keyword   : TFtpString;
                                           var Params    : TFtpString;
                                           var Answer    : TFtpString) of object;
    TFtpSrvCommandTableItem   = record
                                    KeyWord : String;
                                    Proc    : TFtpSrvCommandProc;
                                end;
    TFtpServer = class(TComponent)
    protected
        FAddr                   : String;
        FPort                   : String;
        FBanner                 : String;
        FServSocket             : TWSocket;
        FWindowHandle           : HWND;
        FClientClass            : TFtpCtrlSocketClass;
        FClientList             : TList;
        FClientNum              : LongInt;
        FMaxClients             : LongInt;
        FCmdTable               : array [0..31] of TFtpSrvCommandTableItem;
        FLastCmd                : Integer;
        FUserData               : LongInt;      { Reserved for component user }
        FOnStart                : TNotifyEvent;
        FOnStop                 : TNotifyEvent;
        FOnAuthenticate         : TFtpSrvAuthenticateEvent;
        FOnClientConnect        : TFtpSrvClientConnectEvent;
        FOnClientDisconnect     : TFtpSrvClientConnectEvent;
        FOnClientCommand        : TFtpSrvClientCommandEvent;
        FOnAnswerToClient       : TFtpSrvAnswerToClientEvent;
        FOnChangeDirectory      : TFtpSrvChangeDirectoryEvent;
        FOnMakeDirectory        : TFtpSrvChangeDirectoryEvent;
        FOnBuildDirectory       : TFtpSrvBuildDirectoryEvent;
        FOnAlterDirectory       : TFtpSrvBuildDirectoryEvent;
        FOnValidatePut          : TFtpSrvValidateXferEvent;
        FOnValidateDele         : TFtpSrvValidateXferEvent;
        FOnValidateRnFr         : TFtpSrvValidateXferEvent;
        FOnValidateRnTo         : TFtpSrvValidateXferEvent;
        FOnStorSessionConnected : TFtpSrvDataSessionConnectedEvent;
        FOnStorSessionClosed    : TFtpSrvDataSessionConnectedEvent;
        FOnStorDataAvailable    : TFtpSrvDataAvailableEvent;
        FOnValidateGet          : TFtpSrvValidateXferEvent;
        FOnRetrSessionConnected : TFtpSrvDataSessionConnectedEvent;
        FOnRetrSessionClosed    : TFtpSrvDataSessionConnectedEvent;
        FOnRetrDataSent         : TFtpSrvRetrDataSentEvent;
        procedure Notification(AComponent: TComponent; operation: TOperation); override;
        procedure ServSocketSessionAvailable(Sender : TObject; Error : Word);
        procedure ServSocketStateChange(Sender : TObject; OldState, NewState : TSocketState);
        procedure ClientSessionClosed(Sender : TObject; Error : Word);
        procedure ClientDataSent(Sender : TObject; Error : Word);
        procedure ClientCommand(Sender : TObject; CmdBuf : PChar; CmdLen : Integer);
        procedure ClientPassiveSessionAvailable(Sender : TObject; Error : Word);
        procedure ClientStorSessionConnected(Sender : TObject; Error : Word);
        procedure ClientStorSessionClosed(Sender : TObject; Error : Word);
        procedure ClientStorDataAvailable(Sender: TObject; Error : word);
        procedure ClientRetrSessionConnected(Sender : TObject; Error : Word);
        procedure ClientRetrSessionClosed(Sender : TObject; Error : Word);
        procedure ClientRetrDataSent(Sender : TObject; Error : Word);
        procedure SendAnswer(Client : TFtpCtrlSocket; Answer : TFtpString);
        procedure SendNextDataChunk(Client : TFtpCtrlSocket; Data : TWSocket);
        procedure StartSendData(Client : TFtpCtrlSocket);
        procedure BuildDirectory(Client : TFtpCtrlSocket; var Params : TFtpString; Stream : TStream; Detailed   : Boolean);
        procedure TriggerServerStart; virtual;
        procedure TriggerServerStop; virtual;
        procedure TriggerAuthenticate(Client            : TFtpCtrlSocket;
                                      UserName          : String;
                                      PassWord          : String;
                                      var Authenticated : Boolean); virtual;
        procedure TriggerChangeDirectory(Client         : TFtpCtrlSocket;
                                         Directory      : String;
                                         var Allowed    : Boolean); virtual;
        procedure TriggerMakeDirectory(Client         : TFtpCtrlSocket;
                                       Directory      : String;
                                       var Allowed    : Boolean); virtual;
        procedure TriggerBuildDirectory(Client        : TFtpCtrlSocket;
                                        var Params    : TFtpString;
                                        Detailed      : Boolean);
        procedure TriggerAlterDirectory(Client        : TFtpCtrlSocket;
                                        var Params    : TFtpString;
                                        Detailed      : Boolean);
        procedure TriggerSendAnswer(Client : TFtpCtrlSocket;
                                    var Answer : TFtpString); virtual;
        procedure TriggerClientConnect(Client : TFtpCtrlSocket; Error : Word); virtual;
        procedure TriggerClientDisconnect(Client : TFtpCtrlSocket; Error : Word); virtual;
        procedure TriggerClientCommand(Client      : TFtpCtrlSocket;
                                       var Keyword : TFtpString;
                                       var Params  : TFtpString;
                                       var Answer  : TFtpString); virtual;
        procedure TriggerStorSessionConnected(Client : TFtpCtrlSocket;
                                              Data   : TWSocket;
                                              Error  : Word); virtual;
        procedure TriggerStorSessionClosed(Client : TFtpCtrlSocket;
                                           Data   : TWSocket;
                                           Error  : Word); virtual;
        procedure TriggerValidatePut(Client        : TFtpCtrlSocket;
                                     var FilePath  : TFtpString;
                                     var Allowed   : Boolean); virtual;
        procedure TriggerValidateDele(Client        : TFtpCtrlSocket;
                                      var FilePath  : TFtpString;
                                      var Allowed   : Boolean); virtual;
        procedure TriggerValidateRnFr(Client        : TFtpCtrlSocket;
                                      var FilePath  : TFtpString;
                                      var Allowed   : Boolean); virtual;
        procedure TriggerValidateRnTo(Client        : TFtpCtrlSocket;
                                      var FilePath  : TFtpString;
                                      var Allowed   : Boolean); virtual;
        procedure TriggerRetrSessionConnected(Client : TFtpCtrlSocket;
                                              Data   : TWSocket;
                                              Error  : Word); virtual;
        procedure TriggerRetrSessionClosed(Client : TFtpCtrlSocket;
                                           Data   : TWSocket;
                                           Error  : Word); virtual;
        procedure TriggerValidateGet(Client        : TFtpCtrlSocket;
                                     var FilePath  : TFtpString;
                                     var Allowed   : Boolean); virtual;
        procedure TriggerStorDataAvailable(Client : TFtpCtrlSocket;
                                       Data   : TWSocket;
                                       Buf    : PChar;
                                       Len    : LongInt;
                                       Error  : Word); virtual;
        procedure TriggerRetrDataSent(Client : TFtpCtrlSocket;
                                       Data   : TWSocket;
                                       Error  : Word); virtual;
        function  GetClientCount : Integer; virtual;
        function  GetActive : Boolean;
        procedure SetActive(newValue : Boolean);
        procedure AddCommand(const Keyword : String;
                             const Proc : TFtpSrvCommandProc); virtual;
        procedure WMFtpSrvCloseRequest(var msg: TMessage);
                                       message WM_FTPSRV_CLOSE_REQUEST;
        procedure WMFtpSrvClientClosed(var msg: TMessage);
                                       message WM_FTPSRV_CLIENT_CLOSED;
        procedure WMFtpSrvAbortTransfer(var msg: TMessage);
                                       message WM_FTPSRV_ABORT_TRANSFER;
        procedure WMFtpSrvCloseData(var msg: TMessage);
                                       message WM_FTPSRV_CLOSE_DATA;
        procedure CommandDirectory(Client      : TFtpCtrlSocket;
                                   var Keyword : TFtpString;
                                   var Params  : TFtpString;
                                   var Answer  : TFtpString;
                                   Detailed    : Boolean);
        procedure CommandUSER(Client      : TFtpCtrlSocket;
                              var Keyword : TFtpString;
                              var Params  : TFtpString;
                              var Answer  : TFtpString); virtual;
        procedure CommandPASS(Client      : TFtpCtrlSocket;
                              var Keyword : TFtpString;
                              var Params  : TFtpString;
                              var Answer  : TFtpString); virtual;
        procedure CommandQUIT(Client      : TFtpCtrlSocket;
                              var Keyword : TFtpString;
                              var Params  : TFtpString;
                              var Answer  : TFtpString); virtual;
        procedure CommandNOOP(Client      : TFtpCtrlSocket;
                              var Keyword : TFtpString;
                              var Params  : TFtpString;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清一级片在线观看| 欧美一区二区三区思思人| 青椒成人免费视频| 一区二区三区日韩欧美| 国产人久久人人人人爽| 日韩视频免费观看高清在线视频| 91色视频在线| 99re8在线精品视频免费播放| 国产黄色精品网站| 国产精品一品二品| 国内精品久久久久影院色| 免费在线观看不卡| 日韩1区2区3区| 秋霞av亚洲一区二区三| 日本欧美一区二区| 天堂蜜桃91精品| 日本大胆欧美人术艺术动态 | ●精品国产综合乱码久久久久| 精品国产麻豆免费人成网站| 欧美成人精品福利| 欧美精品一区男女天堂| www一区二区| 中文字幕 久热精品 视频在线| 国产亚洲精久久久久久| 国产午夜三级一区二区三| 国产亚洲精品aa| 国产精品久久久久四虎| 一区二区三区成人在线视频| 亚洲一区二区不卡免费| 日本午夜一区二区| 国内成人精品2018免费看| 极品少妇xxxx精品少妇偷拍| 国产一区二区三区在线看麻豆| 国产在线看一区| 国产精品资源网站| 色综合久久久久综合99| 欧美久久一区二区| 久久网站最新地址| 椎名由奈av一区二区三区| 亚洲成a人v欧美综合天堂下载 | 555夜色666亚洲国产免| 欧美一级夜夜爽| 国产欧美精品一区二区三区四区| 国产精品成人在线观看| 香蕉成人伊视频在线观看| 麻豆国产精品一区二区三区 | 日韩va亚洲va欧美va久久| 精品影院一区二区久久久| 国产成人h网站| 欧美在线影院一区二区| www国产亚洲精品久久麻豆| **网站欧美大片在线观看| 日韩精品色哟哟| 不卡在线观看av| 欧美一区二区三区婷婷月色| 成人欧美一区二区三区黑人麻豆| 日日摸夜夜添夜夜添亚洲女人| 国产精品一区二区免费不卡| 欧美日韩国产中文| 国产精品毛片无遮挡高清| 日本视频一区二区| 91香蕉视频在线| 欧美r级电影在线观看| 亚洲一区二区三区四区在线免费观看 | 91久久线看在观草草青青| 日韩一二三四区| 亚洲精品伦理在线| 国产成人精品免费看| 日韩天堂在线观看| 一区二区三区四区激情| 成人av小说网| 久久久亚洲综合| 久久精品国产一区二区三区免费看| 91视频www| 中文字幕成人在线观看| 国产在线精品不卡| 91.xcao| 午夜伦欧美伦电影理论片| 色伊人久久综合中文字幕| 中日韩免费视频中文字幕| 久久99最新地址| 欧美一区二区三区四区视频| 亚洲第一电影网| 欧美性受xxxx| 亚洲午夜久久久久久久久电影院| 高潮精品一区videoshd| 亚洲精品在线三区| 韩国理伦片一区二区三区在线播放 | 成年人国产精品| 国产日韩影视精品| 国产黄人亚洲片| 国产日韩一级二级三级| 国产一区二区导航在线播放| 精品国产欧美一区二区| 精品中文字幕一区二区| 欧美α欧美αv大片| 激情五月婷婷综合网| 精品久久久久久无| 久久99精品久久久久婷婷| 日韩免费电影网站| 韩国精品一区二区| 久久免费国产精品| 国产成人在线视频网址| 国产欧美精品区一区二区三区| 福利91精品一区二区三区| 日本一区二区电影| 色综合色狠狠综合色| 亚洲精品视频在线观看免费| 在线观看日韩高清av| 午夜伦理一区二区| 日韩欧美国产一二三区| 久久99精品一区二区三区| 国产日韩欧美不卡| 色欧美片视频在线观看| 亚洲一区二区欧美日韩| 欧美一级精品大片| 国产自产视频一区二区三区| 国产精品乱码人人做人人爱| 日本精品视频一区二区| 无吗不卡中文字幕| 久久久久久99久久久精品网站| 成人综合激情网| 亚洲一区在线免费观看| 91麻豆精品国产91久久久久| 韩国成人在线视频| 中文字幕中文在线不卡住| 欧美日韩成人高清| 国内精品免费**视频| 亚洲欧美福利一区二区| 91精品国产入口在线| 国产91富婆露脸刺激对白| 亚洲一区二区黄色| 国产亚洲婷婷免费| 欧美人成免费网站| 9久草视频在线视频精品| 美女视频一区二区三区| 国产欧美日韩综合| 在线观看日韩高清av| 免费欧美在线视频| 亚洲欧洲国产日韩| 日韩三级伦理片妻子的秘密按摩| 成人国产精品视频| 美女精品自拍一二三四| 日韩伦理免费电影| 久久在线免费观看| 欧美精品在线一区二区三区| 波多野结衣亚洲| 久久成人免费电影| 亚洲电影一级黄| 中文字幕一区不卡| 久久奇米777| 欧美精品一二三区| 在线免费观看不卡av| 国产黄色成人av| 久久精品免费观看| 婷婷国产在线综合| 一区二区三区欧美视频| 国产欧美一区二区三区沐欲| 日韩一级片在线观看| 91福利在线免费观看| 成年人网站91| 国产福利91精品一区二区三区| 日韩精品国产欧美| 亚洲一线二线三线久久久| 亚洲婷婷综合久久一本伊一区 | 欧美影院一区二区| 成人黄色电影在线 | 日本成人中文字幕| 丝袜美腿高跟呻吟高潮一区| 成人欧美一区二区三区白人| 国产精品麻豆久久久| 欧美经典一区二区三区| 久久久亚洲精品石原莉奈| 日韩欧美一区二区三区在线| 在线综合亚洲欧美在线视频| 欧美精品 日韩| 欧美一级理论片| 4438亚洲最大| 4438x成人网最大色成网站| 7777精品伊人久久久大香线蕉完整版| 色综合久久中文字幕综合网| 91麻豆精东视频| 一本到高清视频免费精品| 色视频成人在线观看免| 在线观看三级视频欧美| 欧美日韩在线亚洲一区蜜芽| 欧美日韩精品欧美日韩精品一综合 | 欧美久久久一区| 欧美精品丝袜中出| 欧美一区二区免费观在线| 欧美一级爆毛片| 亚洲精品一区二区三区蜜桃下载 | 国产精品卡一卡二| **欧美大码日韩| 亚洲一区二区三区免费视频| 午夜私人影院久久久久| 另类专区欧美蜜桃臀第一页| 国产精品综合久久| 99国产精品国产精品毛片| 欧美日韩一区二区三区高清|