 |
|
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.
|