Batch insertion

xiaoxiao2021-03-06  22

Unit unit2;

Interface Uses Windows, ActiveX, Sysutils, Winsock, Comobj, Variants, Forms, Classes, Comctrls, Controls, IPMacedit, Inifiles

Function pluginname: pchar; stdcall;

PROCEDURE LOADDLL; STDCALL;

PROCEDURE UNLOADDLL; STDCALL;

Function config (GroupID: Integer): boolean; stdcall;

Function logProc (GroupID: PBYTEARRAY; longth: ulong; opcode: ulong; action: ulong; plugin: pchar; warnmsg: pchar): integer; stdcall;

Type Tlog = Record Time: TDATETIME;

SRCIP, DSTIP: DWORD;

Plugin, MSG, LINK: STRING

ACT: Integer;

END;

PLOG = ^ TLOG;

Const opcode_tolan = 1;

Const opcode_toint = 2;

Const adopenforwardonly = 0;

AdopenKeyset = 1;

AdoPENDYNAMIC = 2;

AdoPenStatic = 3;

AdlockReadonly = 1;

AdlockPESSIMISTIC = 2;

AdlockOptimistic = 3;

AdlockBatchOptimistic = 4;

ADUSESERVER = 2;

AduseClient = 3;

Procedure saveconfig;

PROCEDURE SAVELOGS;

Procedure loadConfig;

Function TestConnect (UDLFILE: STRING): Boolean;

Function getModulenAme: string;

Procedure Clearloglist;

Var Loglist: TLIST;

MaxLog: integer;

Datalink: String;

DBERROR: BOOLEAN = FALSE;

Adoconn, Adoccu, AdoConn: oleobj_e_first;

Implementation // · μ »ØÄ £ ¿ éû3æèëë¿ Úo ¯ê f function pluginname: pchar; stdcall;

Begin Result: = 'èõõ/4êý4¾¿ âêä3ö ';

END;

// ä £ ¿ é3õõ1/4 »× × ° ôøè¿¿ Úºêý procedure loadingdll; stdcall;

Begin Coinitialize (NIL);

Adoconn: = CreateoleObject ('AdoDb.Connection');

Adors: = CreateoleObject ('AdoDb.Recordset');

Adors.cursorlocation: = aduseclient;

LoadConfig;

Loglist: = tList.create;

END;

// ä £ ¿ é1/2áêøç ° ð øèë¿ Úºêý procedure unloaddll; stdcall;

Begin if Loglist.count> 0 THEN SAVELOGS;

Clearloglist; loglist.free;

Adors: = UNASSIGNED;

Adoconn: = unassigned;

Couninitialize;

END;

// õõ¾///4èë¿¿ ¯êý Function LogProc (GroupID: INTEGER; DATA: PBYTEARRAY; longth: ulong; opcode: ulong; action: ulong; plugin: pchar; warnmsg: pchar): integer; stdcall

Var Envlog: PLOG;

Begin Result: = 0;

NEW (Envlog);

Envlog ^ .time: = NOW;

IF (Length> $ 22) and (PWORD (@Data [$ 0c]) ^ = $ 0008) THEN BEGIN CASE OPCODE OF OPCODE_TOLAN:

Begin Envlog ^ .dstip: = NTOHL (PDWORD (@Data [$ 1a]) ^);

Envlog ^ .SRCIP: = NTOHL (PDWORD (@Data [$ 1e]) ^);

END;

OpCode_Toint:

Begin Envlog ^ .SrCIP: = NTOHL (PDWORD (@Data [$ 1a]) ^);

Envlog ^ .dstip: = NTOHL (PDWORD (@Data [$ 1e]) ^);

END;

END;

END;

Envlog ^ .plugin: = Plugin

Envlog ^ .msg: = WARNMSG;

Envlog ^ .Link: = WARNMSG 256;

Envlog ^ .act: = Action and $ 7;

Loglist.add (envlog);

END;

// åäöãèë¿¿ ¯ºê f function config (GroupID: integer): boolean;

Begin end;

Function getModulenAme: string;

Var SzFileName: array [0..max_path] of char;

Begin getModuleFileName (Hinstance, SzFileName, Max_Path);

Result: = szfilename;

END;

Procedure Clearloglist;

VAR i: integer;

Begin for i: = 0 to loglist.count - 1 Do Begin Dispose (PLOG (Loglist.Items [i]));

END;

Loglist.clear;

END;

// ' ªªäöãã¯ê procedure loadconfig;

VAR INIFILE: TINIFILE

Begin Inifile: = TiniFile.create (extractfilepath (getModulen) 'logtodb.ini');

MaxLog: = INIFILE.Readinteger ('config', 'maxlog', 100);

DataLink: = INIFILE.Readstring ('config', 'Datalink', ExtractFilePath (Application.exename) 'Plugins / DBLink.udl');

InIfile.Free;

END;

Procedure saveconfig;

Var Inifile: Tinifile; Begin Inifile: = TiniFile.create (extractfilepath (getModulen) 'logtodb.ini');

InIfile.WriteInteger ('config', 'maxlog', maxlog);

InIfile.WritString ('config', 'Datalink', Datalink);

InIfile.Free;

DBERROR: = FALSE;

END;

PROCEDURE SAVELOGS;

Var LogItem: PLOG;

IP: TIP;

i: integer;

Begin if DBERROR THEN EXIT;

Try adoconn.open ('file name =' datalink ');

Except dberror: = true;

EXIT;

END;

Try Adors.open ('Select * from EventLog where 0 = 1', Adoconn, AdopenkeySet, AdlockBatchOptimistic);

Except adoconn.close;

DBERROR: = True;

EXIT;

END;

Ip: = tip.create;

Try for i: = 0 to loglist.count - 1 do beg Logitem: = loglist.items [i];

Adors.Addnew;

Adors.fields.Item ['EventTime']. Value: = LogItem ^ .time;

Ip.dip: = logitem ^ .srcip;

Adors.fields.Item ['srcip']. Value: = ip.ipstring;

Ip.dip: = logitem ^ .dstip;

Adors.fields.Item ['Dstip']. Value: = ip.ipstring;

Adors.fields.Item ['Plugin']. Value: = LogItem ^ .plugin

Adors.fields.Item ['Act']. Value: = LogItem ^ .act;

Adors.fields.Item ['msg']. Value: = LogItem ^ .msg;

Adors.fields.Item ['res']. Value: = logitem ^ .LINK;

END;

Adors.Updatebatch;

Except adors.cancelupdate;

DBERROR: = True;

END;

Ip.free;

Adors.close;

Adoconn.Close;

END;

Function TestConnect (UDLFILE: STRING): Boolean;

Begin try adoconn.open ('file name =' UDLFILE ');

Excepter: = false;

EXIT;

END;

Try Adors.open ('SELECT EventTime, Srcip, Dstip, Plugin, ACT, MSG, RES from EventLog where id = 0', adoconn, adopenkeyset, adlickbatchoptimistic); Except adoconn.close;

Result: = FALSE;

EXIT;

END;

Adors.close;

Adoconn.Close;

RESULT: = TRUE;

END;

End.

Unit2;

Interface

Uses Windows, ActiveX, Sysutils, Winsock, Comobj, Variants, Forms, Classes, Comctrls, Controls, IPMACedit, Inifiles

Function pluginname: pchar; stdcall;

PROCEDURE LOADDLL;

PROCEDURE UNLOADDL1;

Function config (GroupID: Integer): boolean; stdcall;

Function logProc (GroupID: PBYTEARRAY; longth: ulong; opcode: ulong; action: ulong; plugin: pchar; warnmsg: pchar): integer; stdcall;

Type

TLOG = Record

Time: TDATETIME;

SRCIP, DSTIP: DWORD;

Plugin, MSG, LINK: STRING

ACT: Integer;

END;

PLOG = ^ TLOG;

Const

Opcode_tolan = 1;

Const

Opcode_toint = 2;

Const

AdopenForwardonly = 0;

AdopenKeyset = 1;

AdoPENDYNAMIC = 2;

AdoPenStatic = 3;

AdlockReadonly = 1;

AdlockPESSIMISTIC = 2;

AdlockOptimistic = 3;

AdlockBatchOptimistic = 4;

ADUSESERVER = 2;

AduseClient = 3;

Procedure saveconfig;

PROCEDURE SAVELOGS;

Procedure loadConfig;

Function TestConnect (UDLFILE: STRING): Boolean;

Function getModulenAme: string;

Procedure Clearloglist;

VAR

Loglist: TLIST;

MaxLog: integer;

Datalink: String;

DBERROR: BOOLEAN = FALSE;

Adoconn, Adoccu, AdoConn: oleobj_e_first;

IMPLEMentation

// · μ »ØÄ £ ¿ éû3æèëë¿ Úo ¯êý

Function pluginname: pchar; stdcall;

Begin

Result: = 'õõ¾/4êý4¾¿¿¿ âêä3ö ';

END;

// ä £ ¿ é3õõ1/4 »× × ° ôøè¿¿ Úo ¯êý

PROCEDURE LOADDLL; stdcall;

Begin

Coinitialize (NIL);

Adoconn: = CreateoleObject ('AdoDb.connection'); Adors: = CreateoleObject ('AdoDb.Recordset');

Adors.cursorlocation: = aduseclient;

LoadConfig;

Loglist: = tList.create;

END;

// ä £ ¿ é1/2áêøç ° ð øèë¿ Úo ¯êý

PROCEDURE UNLOADDL1;

Begin

IF loglist.count> 0. Savelogs;

Clearloglist;

Loglist.free;

Adors: = UNASSIGNED;

Adoconn: = unassigned;

Couninitialize;

END;

// õõ¾///4èë¿¿ Úo ¯êý

Function logProc (GroupID: PBYTEARRAY; longth: ulong; opcode: ulong; action: ulong; plugin: pchar; warnmsg: pchar): integer; stdcall;

VAR

Envlog: PLOG;

Begin

Result: = 0;

NEW (Envlog);

Envlog ^ .time: = NOW;

IF (Length> $ 22) and (PWORD (@Data [$ 0c]) ^ = $ 0008) THEN

Begin

Case opcode of

Opcode_tolan:

Begin

Envlog ^ .dstip: = NTOHL (PDWORD (@Data [$ 1a]) ^);

Envlog ^ .SRCIP: = NTOHL (PDWORD (@Data [$ 1e]) ^);

END;

OpCode_Toint:

Begin

Envlog ^ .SrCIP: = NTOHL (PDWORD (@Data [$ 1a]) ^);

Envlog ^ .dstip: = NTOHL (PDWORD (@Data [$ 1e]) ^);

END;

END;

END;

Envlog ^ .plugin: = Plugin

Envlog ^ .msg: = WARNMSG;

Envlog ^ .Link: = WARNMSG 256;

Envlog ^ .act: = Action and $ 7;

Loglist.add (envlog);

END;

// åäöãèë¿¿ Úo ¯êý

Function Config (GroupID: Integer): Boolean;

Begin

END;

Function getModulenAme: string;

VAR

SZFileName: array [0..max_path] of char;

Begin

GetModuleFileName (Hinstance, SzFileName, Max_Path);

Result: = szfilename;

END;

Procedure Clearloglist;

VAR

i: integer;

Begin

For i: = 0 to loglist.count - 1 do

Begin

Dispose (PLOG (Loglist.Items [i]));

END;

Loglist.clear;

END;

// ' ªªäãã ¯êý

Procedure loadConfig;

VAR

InIfile: tinifile;

Begin

InIfile: = TiniFile.create (extractfilepath) 'logtodb.ini'); MaxLog: = INIFILE.Readinteger ('config', 'maxlog', 100);

DataLink: = INIFILE.Readstring ('config', 'Datalink', ExtractFilePath (Application.exename) 'Plugins / DBLink.udl');

InIfile.Free;

END;

Procedure saveconfig;

VAR

InIfile: tinifile;

Begin

InIfile: = tinifile.create (extractfilepath 'logtodb.ini');

InIfile.WriteInteger ('config', 'maxlog', maxlog);

InIfile.WritString ('config', 'Datalink', Datalink);

InIfile.Free;

DBERROR: = FALSE;

END;

PROCEDURE SAVELOGS;

VAR

Logitem: PLOG;

IP: TIP;

i: integer;

Begin

If dberror kiln

Try

Adoconn.open ('file name =' Datalink ');

Except

DBERROR: = True;

EXIT;

END;

Try

Adors.open ('Select * from EventLog Where 0 = 1', Adoconn, AdopenkeySet, AdlockbatchOptimistic);

Except

Adoconn.Close;

DBERROR: = True;

EXIT;

END;

Ip: = tip.create;

Try

For i: = 0 to loglist.count - 1 do

Begin

Logitem: = loglist.items [i];

Adors.Addnew;

Adors.fields.Item ['EventTime']. Value: = LogItem ^ .time;

Ip.dip: = logitem ^ .srcip;

Adors.fields.Item ['srcip']. Value: = ip.ipstring;

Ip.dip: = logitem ^ .dstip;

Adors.fields.Item ['Dstip']. Value: = ip.ipstring;

Adors.fields.Item ['Plugin']. Value: = LogItem ^ .plugin

Adors.fields.Item ['Act']. Value: = LogItem ^ .act;

Adors.fields.Item ['msg']. Value: = LogItem ^ .msg;

Adors.fields.Item ['res']. Value: = logitem ^ .LINK;

END;

Adors.Updatebatch;

Except

Adors.cancelupdate;

DBERROR: = True;

Ip.free;

Adors.close;

Adoconn.Close;

END;

Function TestConnect (UDLFILE: STRING): Boolean;

Begin

Try

Adoconn.open ('file name =' UDLFILE ');

Except

Result: = FALSE;

EXIT;

END;

Try

Adors.open ('Select EventTime, SrCIP, Dstip, Plugin, ACT, MSG, Res range Eventlog where id = 0', Adoconn, AdopenKeyset, AdlockBatchOptimistic);

Except

Adoconn.Close;

Result: = FALSE;

EXIT;

END;

Adors.close;

Adoconn.Close;

RESULT: = true;

END;

End.

转载请注明原文地址:https://www.9cbs.com/read-40900.html

New Post(0)