PSMFWLog.pas
上传用户:xiuanze55
上传日期:2017-08-03
资源大小:1080k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit PSMFWLog;
  2. interface
  3. uses
  4.        Windows, Registry,SysUtils,Classes,StrUtils,IdTrivialFTPBase,WinSock;
  5. type TPSMFWLog=class
  6. public
  7.      mTime: string;
  8.      mDirection:string;
  9.      mPermit:String;
  10.      mIP:string;
  11.      mHostName:string;
  12.      mPort:String;
  13.      mPath:string;
  14.      mToltalRec:String;
  15.      mToltalSen:String;
  16.      mTotalRecSen:String;
  17.      mSockNo:String;
  18.      procedure AssignLogItems(LogLine: Pchar);
  19. end;
  20. implementation
  21. function NameFromIP(ip:string;var hostname:string): Boolean;
  22. var
  23.      WSAData: TWSAData;
  24.      InetAddr: u_long;
  25.      HostEntPtr: PHostEnt;
  26.      HostEnt: THostEnt;
  27.      retVal:Boolean;
  28.      len: Integer;
  29. begin
  30.      WSAStartUp( $101, WSAData );
  31.      HostEntPtr:=Nil;
  32.      try
  33.           InetAddr := inet_addr( PChar(ip));
  34.           if InetAddr = SOCKET_ERROR then
  35.                raise Exception.Create( 'Invalid address entered' );
  36.           HostEntPtr := GetHostByAddr( @InetAddr, len, AF_INET );
  37.           if HostEntPtr = NIL then
  38.                raise Exception.Create( 'WinSock error: ' + IntToStr( WSAGetLastError() ) );
  39.           // Insert hostname into list
  40.           hostname := String( HostEntPtr^.h_name );
  41.           retVal:=True;
  42.      except
  43.           on E: Exception do begin
  44.               retVal:=False;
  45.           end;
  46.      end;
  47.      Result:=retVal;
  48. end;
  49. Procedure  TPSMFWLog.AssignLogItems(LogLine:Pchar);
  50. var
  51.      logItems: TStringList;
  52. begin
  53.      logItems:=TStringList.Create;
  54.      ExtractStrings([#9],[' '],LogLine,logItems);
  55.      //'sdsdf'#9'sfsdfsdf'
  56.      mTime:=logItems[0];
  57.      mDirection:=logItems[1];
  58.      {
  59.      if Trim(logItems[2])='DENY' then
  60.           mPermit:=0
  61.      else
  62.           mPermit:=1;
  63.      }
  64.      mPermit:=logItems[2];
  65.      mIP:=logItems[3];
  66.      //if(not NameFromIP(mIP,mHostName)) then
  67.       //   mHostName:= mIP;
  68.      if(logItems.Count>9) then//New update for hostname
  69.              mHostName:=logItems[10];
  70.      mPort:=logItems[4];
  71.      mPath:=logItems[5];
  72.      mToltalRec:=logItems[6];
  73.      mToltalSen:=logItems[7];
  74.      mTotalRecSen:=logItems[8];
  75.      mSockNo:=logItems[9];
  76.      logItems.Free;
  77. end;
  78. end.