Packet Sniffer SDK DLL Edition

HNTcpManager wrapper for Delphi

 Previous Next

File: HNTcpManager.pas

{****************************************************************************
**                                                                         **
**                      PSSDK HNTcpManager module                          **
**            Copyright (c) 1997 - 2007 microOLAP Technologies LTD,        **
**                       Khalturin A.P., Naumov D.A.                       **
**                                                                         **
****************************************************************************}

unit HNTcpManager;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  HNPSManager, HNPsSdkDef;

type
  TOnSessionCreate  = procedure (Sender : TObject; hTcpSession: Pointer; Var Need: BOOL) of object;
  TOnSessionConnect = procedure (Sender : TObject; hTcpSession: Pointer) of object;
  TOnClientData     = procedure (Sender : TObject; hTcpSession: Pointer; hPacket: Pointer; pData: Pointer; DataSize: DWORD) of object;
  TOnServerData     = procedure (Sender : TObject; hTcpSession: Pointer; hPacket: Pointer; pData: Pointer; DataSize: DWORD) of object;
  TOnSessionClose   = procedure (Sender : TObject; hTcpSession: Pointer; Var Need: BOOL) of object;
  TOnSessionDelete  = procedure (Sender : TObject; hTcpSession: Pointer) of object;
  TOnPacketReturn   = procedure (Sender : TObject; hPacket: Pointer; Reason: Integer) of object;

  //---------------------------------------------------------------------------
  // Class THNTcpManager
  //---------------------------------------------------------------------------
  THNTcpManager = class
  private
    hTcpMgr    : Pointer;
    FOnCreate  : TOnSessionCreate ;
    FOnConnect : TOnSessionConnect;
    FOnClient  : TOnClientData;
    FOnServer  : TOnServerData;
    FOnClose   : TOnSessionClose;
    FOnDelete  : TOnSessionDelete ;
    FOnReturn  : TOnPacketReturn ;

  private
    function  GetCheckTcpSum: BOOL;
    procedure SetCheckTcpSum(CheckTcpSum : BOOL);
    function  GetInvaderMode: BOOL;
    procedure SetInvaderMode(InvaderMode : BOOL);
    function  GetMaxSessionsCount: DWORD;
    procedure SetMaxSessionsCount(MaxSessionsCount : DWORD);
    function  GetSessionsCount: DWORD;
    function  GetVirtualMode: BOOL;
    procedure SetVirtualMode(VirtualMode : BOOL);
    function  GetPendingPacketsCount: DWORD;
    //---------------------------------------------------------------------------
    // Add in 2.4
    function  GetCheckIpSum: BOOL;
    procedure SetCheckIpSum(CheckIpSum : BOOL);

    procedure DoOnCreate(hTcpSession: Pointer; Var Need : BOOL);
    procedure DoOnConnect(hTcpSession: Pointer);
    procedure DoOnClient(hTcpSession: Pointer; hPacket: Pointer; pData: Pointer; DataSize: Cardinal);
    procedure DoOnServer(hTcpSession: Pointer; hPacket: Pointer; pData: Pointer; DataSize: Cardinal);
    procedure DoOnClose(hTcpSession: Pointer; Var Need : BOOL);
    procedure DoOnDelete(hTcpSession: Pointer);
    procedure DoOnReturn(hPacket: Pointer; Reason : Integer);

  public
    constructor Create();
    destructor  Destroy(); override;
    function    IsValid: BOOL;

    property  SessionsCount: DWORD read GetSessionsCount;
    property  PendingPacketsCount: DWORD read GetPendingPacketsCount;

    procedure ProcessPacket(hPacket : Pointer);
    procedure ResetSessions();
    procedure ResetOnTimeOut(TimeOut : DWORD);
    procedure CloseSession(hTcpSession : Pointer);
    procedure DeleteSession(hTcpSession : Pointer);

  published
    property  CheckTcpSum: BOOL read GetCheckTcpSum write SetCheckTcpSum;
    property  InvaderMode: BOOL read GetInvaderMode write SetInvaderMode;
    property  MaxSessionsCount: DWORD read GetMaxSessionsCount write SetMaxSessionsCount;
    property  VirtualMode: BOOL read GetVirtualMode write SetVirtualMode;
    //---------------------------------------------------------------------------
    // Add in 2.4
    property  CheckIpSum: BOOL read GetCheckIpSum write SetCheckIpSum;

    property  OnSessionCreate:  TOnSessionCreate  read FOnCreate  write FOnCreate;
    property  OnSessionConnect: TOnSessionConnect read FOnConnect write FOnConnect;
    property  OnClientData:     TOnClientData     read FOnClient  write FOnClient;
    property  OnServerData:     TOnServerData     read FOnServer  write FOnServer;
    property  OnSessionClose:   TOnSessionClose   read FOnClose   write FOnClose;
    property  OnSessionDelete:  TOnSessionDelete  read FOnDelete  write FOnDelete;
    property  OnPacketReturn:   TOnPacketReturn   read FOnReturn  write FOnReturn;
  end;

implementation

{$INCLUDE 'HNPsSdkFun.pas'}

//---------------------------------------------------------------------------
// IntOnCreate - OnSessionCreate event handler.
//---------------------------------------------------------------------------
procedure IntOnCreate(Param: Pointer; hTcpSes: Pointer; Var bNeed: BOOL); stdcall;
 var
   pTcpMgr : THNTcpManager;
 begin
   pTcpMgr := THNTcpManager(Param);
   pTcpMgr.DoOnCreate(hTcpSes,bNeed);
 end;

//---------------------------------------------------------------------------
// IntOnConnect - OnSessionConnect event handler.
//---------------------------------------------------------------------------
procedure IntOnConnect(Param: Pointer; hTcpSes: Pointer); stdcall;
 var
   pTcpMgr : THNTcpManager;
 begin
   pTcpMgr := THNTcpManager(Param);
   pTcpMgr.DoOnConnect(hTcpSes);
 end;

//---------------------------------------------------------------------------
// IntOnClient - OnClientData event handler.
//---------------------------------------------------------------------------
procedure IntOnClient(Param: Pointer; hTcpSes: Pointer; hPacket: Pointer; pData : Pointer; DataLength : Cardinal); stdcall;
 var
   pTcpMgr : THNTcpManager;
 begin
   pTcpMgr := THNTcpManager(Param);
   pTcpMgr.DoOnClient(hTcpSes,hPacket,pData,DataLength);
 end;

//---------------------------------------------------------------------------
// IntOnServer - OnServerData event handler.
//---------------------------------------------------------------------------
procedure IntOnServer(Param: Pointer; hTcpSes: Pointer; hPacket: Pointer; pData : Pointer; DataLength : Cardinal); stdcall;
 var
   pTcpMgr : THNTcpManager;
 begin
   pTcpMgr := THNTcpManager(Param);
   pTcpMgr.DoOnServer(hTcpSes,hPacket,pData,DataLength);
 end;

//---------------------------------------------------------------------------
// IntOnClose - OnSessionClose event handler.
//---------------------------------------------------------------------------
procedure IntOnClose(Param: Pointer; hTcpSes: Pointer; Var bNeed: BOOL); stdcall;
 var
   pTcpMgr : THNTcpManager;
 begin
   pTcpMgr := THNTcpManager(Param);
   pTcpMgr.DoOnClose(hTcpSes,bNeed);
 end;

//---------------------------------------------------------------------------
// IntOnDelete - OnSessionDelete event handler.
//---------------------------------------------------------------------------
procedure IntOnDelete(Param: Pointer; hTcpSes: Pointer); stdcall;
 var
   pTcpMgr : THNTcpManager;
 begin
   pTcpMgr := THNTcpManager(Param);
   pTcpMgr.DoOnDelete(hTcpSes);
 end;

//---------------------------------------------------------------------------
// IntOnReturn - OnPacketReturn event handler.
//---------------------------------------------------------------------------
procedure IntOnReturn(Param: Pointer; hPacket: Pointer; Reason: Integer); stdcall;
 var
   pTcpMgr : THNTcpManager;
 begin
   pTcpMgr := THNTcpManager(Param);
   pTcpMgr.DoOnReturn(hPacket,Reason);
 end;

//---------------------------------------------------------------------------
// Create - Creates the HNTcpManager object.
//---------------------------------------------------------------------------
constructor THNTcpManager.Create();
 begin
   hTcpMgr := TcpMgrCreate();

   TcpMgrSetOnCreate  (hTcpMgr,@IntOnCreate, Self);
   TcpMgrSetOnConnect (hTcpMgr,@IntOnConnect,Self);
   TcpMgrSetOnClient  (hTcpMgr,@IntOnClient, Self);
   TcpMgrSetOnServer  (hTcpMgr,@IntOnServer, Self);
   TcpMgrSetOnClose   (hTcpMgr,@IntOnClose,  Self);
   TcpMgrSetOnDelete  (hTcpMgr,@IntOnDelete, Self);
   TcpMgrSetOnReturn  (hTcpMgr,@IntOnReturn, Self);
 end;

//---------------------------------------------------------------------------
// Destroy - Destroys the HNTcpManager object.
//---------------------------------------------------------------------------
destructor THNTcpManager.Destroy();
 begin
   TcpMgrSetOnCreate  (hTcpMgr,nil,nil);
   TcpMgrSetOnConnect (hTcpMgr,nil,nil);
   TcpMgrSetOnClient  (hTcpMgr,nil,nil);
   TcpMgrSetOnServer  (hTcpMgr,nil,nil);
   TcpMgrSetOnClose   (hTcpMgr,nil,nil);
   TcpMgrSetOnDelete  (hTcpMgr,nil,nil);
   TcpMgrSetOnReturn  (hTcpMgr,nil,nil);

   TcpMgrDestroy(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// Method - IsValid - Checks if the HNTcpManager object is created correctly.
//---------------------------------------------------------------------------
function THNTcpManager.IsValid: BOOL;
 begin
   Result := (hTcpMgr <> nil);
 end;

//---------------------------------------------------------------------------
// Property - CheckTcpSum - Returns the TCP packet checksum verification flag.
//---------------------------------------------------------------------------
function THNTcpManager.GetCheckTcpSum(): BOOL;
 begin
   Result := TcpMgrGetCheckTcpSum(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// Property - CheckTcpSum - Sets the TCP packet checksum verification flag.
//---------------------------------------------------------------------------
procedure THNTcpManager.SetCheckTcpSum(CheckTcpSum: BOOL);
 begin
    TcpMgrSetCheckTcpSum(hTcpMgr,CheckTcpSum);
 end;

//---------------------------------------------------------------------------
// v2.4 - Property - CheckIpSum - Returns the IP packet checksum verification flag.
//---------------------------------------------------------------------------
function THNTcpManager.GetCheckIpSum(): BOOL;
 begin
   Result := TcpMgrGetCheckIpSum(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// v2.4 - Property - CheckIpSum - Sets the IP packet checksum verification flag.
//---------------------------------------------------------------------------
procedure THNTcpManager.SetCheckIpSum(CheckIpSum: BOOL);
 begin
   TcpMgrSetCheckIpSum(hTcpMgr,CheckIpSum);
 end;

//---------------------------------------------------------------------------
// Property - InvaderMode - Returns the TCP sessions capturing mode flag.
//---------------------------------------------------------------------------
function THNTcpManager.GetInvaderMode(): BOOL;
 begin
   Result := TcpMgrGetInvaderMode(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// Property - InvaderMode - Sets the TCP sessions capturing mode flag.
//---------------------------------------------------------------------------
procedure THNTcpManager.SetInvaderMode(InvaderMode: BOOL);
 begin
    TcpMgrSetInvaderMode(hTcpMgr,InvaderMode);
 end;

//---------------------------------------------------------------------------
// Property - MaxSessionsCount - Returns the maximum number of TCP sessions to be monitored at the same time.
//---------------------------------------------------------------------------
function THNTcpManager.GetMaxSessionsCount(): DWORD;
 begin
   Result := TcpMgrGetMaxSessionsCount(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// Property - MaxSessionsCount - Sets the maximum number of TCP sessions to be monitored at the same time.
//---------------------------------------------------------------------------
procedure THNTcpManager.SetMaxSessionsCount(MaxSessionsCount: DWORD);
 begin
    TcpMgrSetMaxSessionsCount(hTcpMgr,MaxSessionsCount);
 end;

//---------------------------------------------------------------------------
// Property - SessionsCount - Returns the current number of TCP sessions are monitored.
//---------------------------------------------------------------------------
function THNTcpManager.GetSessionsCount(): DWORD;
 begin
   Result := TcpMgrGetSessionsCount(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// Property - VirtualMode - Returns the virtual TCP sessions mode status flag.
//---------------------------------------------------------------------------
function THNTcpManager.GetVirtualMode(): BOOL;
 begin
   Result := TcpMgrGetVirtualMode(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// Property - VirtualMode - Sets the virtual TCP sessions mode status flag.
//---------------------------------------------------------------------------
procedure THNTcpManager.SetVirtualMode(VirtualMode: BOOL);
 begin
    TcpMgrSetVirtualMode(hTcpMgr,VirtualMode);
 end;

//---------------------------------------------------------------------------
// Property - PendingPacketsCount - Returns the number of packets awaiting for processing.
//---------------------------------------------------------------------------
function THNTcpManager.GetPendingPacketsCount(): DWORD;
 begin
   Result := TcpMgrGetPendingPacketsCount(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// Method - ProcessPacket - Sends HNPacket object to the HNTcpManager component for further processing.
//---------------------------------------------------------------------------
procedure THNTcpManager.ProcessPacket(hPacket : Pointer);
 begin
    TcpMgrProcessPacket(hTcpMgr,hPacket);
 end;

//---------------------------------------------------------------------------
// Method - ResetSessions - Deletes all HNTcpSession objects.
//---------------------------------------------------------------------------
procedure THNTcpManager.ResetSessions();
 begin
    TcpMgrResetSessions(hTcpMgr);
 end;

//---------------------------------------------------------------------------
// Method - ResetOnTimeOut - Deletes obsolete HNTcpSession objects.
//---------------------------------------------------------------------------
procedure THNTcpManager.ResetOnTimeOut(TimeOut : DWORD);
 begin
    TcpMgrResetOnTimeOut(hTcpMgr,TimeOut);
 end;

//---------------------------------------------------------------------------
// Method - CloseSession - Stops tracking of TCP session.
//---------------------------------------------------------------------------
procedure THNTcpManager.CloseSession(hTcpSession : Pointer);
 begin
    TcpMgrCloseSession(hTcpMgr,hTcpSession);
 end;

//---------------------------------------------------------------------------
// Method - DeleteSession - Deletes tracked TCP session.
//---------------------------------------------------------------------------
procedure THNTcpManager.DeleteSession(hTcpSession : Pointer);
 begin
    TcpMgrDeleteSession(hTcpMgr,hTcpSession);
 end;

//---------------------------------------------------------------------------
// DoOnCreate - Fires on the new TCP session is registered by HNTcpManager object.
//---------------------------------------------------------------------------
procedure THNTcpManager.DoOnCreate(hTcpSession: Pointer; Var Need : BOOL);
 begin
   if Assigned(FOnCreate) then FOnCreate(Self,hTcpSession,Need);
 end;

//---------------------------------------------------------------------------
// DoOnConnect - Fires immediately after successful establishing of TCP connection.
//---------------------------------------------------------------------------
procedure THNTcpManager.DoOnConnect(hTcpSession: Pointer);
 begin
   if Assigned(FOnConnect) then FOnConnect(Self,hTcpSession);
 end;

//---------------------------------------------------------------------------
// DoOnClient - Fires immediately after receiving of data sent by client.
//---------------------------------------------------------------------------
procedure THNTcpManager.DoOnClient(hTcpSession: Pointer; hPacket: Pointer; pData: Pointer; DataSize: Cardinal);
 begin
   if Assigned(FOnClient) then FOnClient(Self,hTcpSession,hPacket,pData,DataSize);
 end;

//---------------------------------------------------------------------------
// DoOnServer - Fires immediately after receiving of data sent by server.
//---------------------------------------------------------------------------
procedure THNTcpManager.DoOnServer(hTcpSession: Pointer; hPacket: Pointer; pData: Pointer; DataSize: Cardinal);
 begin
   if Assigned(FOnServer) then FOnServer(Self,hTcpSession,hPacket,pData,DataSize);
 end;

//---------------------------------------------------------------------------
// DoOnClose - Fires immediately after stopping tracking a session by HNTcpManager object.
//---------------------------------------------------------------------------
procedure THNTcpManager.DoOnClose(hTcpSession: Pointer; Var Need : BOOL);
 begin
   if Assigned(FOnClose) then FOnClose(Self,hTcpSession,Need);
 end;

//---------------------------------------------------------------------------
// DoOnDelete - Fires immediately before deletion of HNTcpSession object.
//---------------------------------------------------------------------------
procedure THNTcpManager.DoOnDelete(hTcpSession: Pointer);
 begin
   if Assigned(FOnDelete) then FOnDelete(Self,hTcpSession);
 end;

//---------------------------------------------------------------------------
// DoOnReturn - Fired immediately after releasing a packet for further using.
//---------------------------------------------------------------------------
procedure THNTcpManager.DoOnReturn(hPacket: Pointer; Reason : Integer);
 begin
   if Assigned(FOnReturn) then FOnReturn(Self,hPacket,Reason);
 end;

end.
See also:HNTcpManager, All wrappers in one ZIP archive