⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proxy1.pas

📁 httpanalyzer, source code for delphi
💻 PAS
字号:
unit proxy1;

interface
uses classes, proxy2, httpProxyExtend, WSocket, Dialogs;

const
 ProxyServerVersion = 100;
 ProxyServerCopyright = 'All rights reserved by Thorsten Schmidt';

type

 TProxyServer = class;

 TProxyClientConnectEvent = procedure (Sender : TObject;
                                        Client : TProxyClient;
                                            Error  : Word) of object;

 TProxyServer = class(TWSocket)
 protected
   FConnectionType         : TConnection;
   FListening              : boolean;
   FClientClass            : TProxyClientClass;

   FClientNum              : LongInt;
   FMaxClients             : LongInt;
   Proc_OnClientConnect        : TProxyClientConnectEvent;
   Proc_OnClientDisconnect     : TProxyClientConnectEvent;

   Proc_P1_Dbgout : TProxyClientEvent;
   Proc_P2_Dbgout : TProxyClientEvent;
   Proc_VIP_Dbgout : TProxyClientEvent;
   Proc_P1_DataReceived, Proc_P2_DataReceived : TProxyClientData;

   Proc_P1_HttpHeader, Proc_P1_HttpHeaderModified, Proc_P2_HttpHeader : TProxyClientData;
   Proc_P1_HttpContent, Proc_P2_HttpContent : TProxyClientData;

   dest_addr, dest_port, dest_proto : string;

  FssocksAuthentication : TSocksAuthentication;
  FsSocksLevel : string;
  FsSocksPassword : string;
  FsSocksPort : string;
  FsSocksServer : string;
  FsSocksUsercode : string;

   procedure ClientDestroy(Sender : TObject);
   procedure donothing(Sender : Tobject);

   procedure AddListEntry(toadd : TProxyClient);
   procedure DelListEntry(todel : TProxyClient);
   function  GetClientCount : Integer; virtual;
   function  GetClient(nIndex : Integer) : TProxyClientClass; virtual;
   procedure TriggerSessionAvailable(Error : Word); override;
   procedure TriggerClientConnect(Client : TProxyClient; Error : Word); virtual;
   procedure TriggerClientDisconnect(Client : TProxyClient; Error : Word); virtual;
 public
   FClientList             : TList;
   constructor Create(AOwner: TComponent); override;
   destructor  Destroy; override;

   function start : boolean ; // listen_port, listen_protocol and listen_addr must be set directly
   function shutdown : boolean; reintroduce;
 // closes all running connections and stops listening
   function pause : boolean;  reintroduce;
 // pauses all running connections and pauses listening
   function resume : boolean;  reintroduce;



   { Check  if a given object is one of our clients }
   function  IsClient(SomeThing : TObject) : Boolean;
   { TWSocketClient derived class to instanciate for each client }

      { Client[] give direct access to anyone of our clients }
   property  Client[nIndex : Integer] : TProxyClientClass
                                                 read  GetClient;

 published
   property  ClientClass            : TProxyClientClass
            read  FClientClass
            write FClientClass;
   { How many active clients we currently have }
   property  ClientCount   : Integer
                                          read  GetClientCount;

   { -1 = infinite amount of clients; 0 = no clients are accepted }
   property  MaxClients             : LongInt    read  FMaxClients
                                                 write FMaxClients;

   { Triggered when a client disconnect }
   property  OnClientDisconnect     : TProxyClientConnectEvent
                                                 read  Proc_OnClientDisconnect
                                                 write Proc_OnClientDisconnect;
   { Triggerred when a new client is connecting }
   property  OnClientConnect        : TProxyClientConnectEvent
                                                 read  Proc_OnClientConnect
                                                 write Proc_OnClientConnect;
   { Triggered when line 1/2 produces a message }
   property OnP1Message : TProxyClientEvent
                                           read Proc_P1_dbgout
                                           write Proc_P1_dbgout;
   property OnP2Message : TProxyClientEvent
                                           read Proc_P2_dbgout
                                           write Proc_P2_dbgout;
   property OnVIPMessage : TProxyClientEvent   //wird nur von TNew benutzt
                                           read Proc_VIP_dbgout
                                           write Proc_VIP_dbgout;

   { Triggered when line 1/2 receives data }
   property OnP1DataReceived : TProxyClientData
                                           read Proc_P1_DataReceived
                                           write Proc_P1_DataReceived;
   property OnP2DataReceived : TProxyClientData
                                           read Proc_P2_DataReceived
                                           write Proc_P2_DataReceived;

   //HTTP spezifische Events
    property OnP1HttpHeader : TProxyClientData
                                           read Proc_P1_HttpHeader
                                           write Proc_P1_HttpHeader;
    property OnP1HttpHeaderModified : TProxyClientData
                                           read Proc_P1_HttpHeaderModified
                                           write Proc_P1_HttpHeaderModified;
    property OnP2HttpHeader : TProxyClientData
                                           read Proc_P2_HttpHeader
                                           write Proc_P2_HttpHeader;

    property OnP1HttpContent : TProxyClientData
                                           read Proc_P1_HttpContent
                                           write Proc_P1_HttpContent;
    property OnP2HttpContent : TProxyClientData
                                           read Proc_P2_HttpContent
                                           write Proc_P2_HttpContent;

   {Mu

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -