IdSysLogServer.pas 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. { $HDR$}
  2. {**********************************************************************}
  3. { Unit archived using Team Coherence }
  4. { Team Coherence is Copyright 2002 by Quality Software Components }
  5. { }
  6. { For further information / comments, visit our WEB site at }
  7. { http://www.TeamCoherence.com }
  8. {**********************************************************************}
  9. {}
  10. { $Log: 10361: IdSysLogServer.pas
  11. {
  12. { Rev 1.0 2002.11.12 10:54:44 PM czhower
  13. }
  14. ////////////////////////////////////////////////////////////////////////////////
  15. // IdSyslogServer component
  16. // Server-side implementation of the RFC 3164 "The BSD syslog Protocol"
  17. // Original Author: Stephane Grobety ([email protected])
  18. // Copyright the Indy pit crew
  19. // Release history:
  20. // 08/09/01: Dev started
  21. unit IdSysLogServer;
  22. interface
  23. uses
  24. Classes,
  25. IdAssignedNumbers,
  26. IdBaseComponent,
  27. IdComponent,
  28. IdException,
  29. IdGlobal,
  30. IdSocketHandle,
  31. IdStackConsts,
  32. IdThread,
  33. IdUDPBase,
  34. IdUDPServer,
  35. IdSysLogMessage,
  36. IdSysLog;
  37. type
  38. TOnSyslogEvent = procedure(Sender: TObject; ASysLogMessage: TIdSysLogMessage;
  39. ABinding: TIdSocketHandle) of object;
  40. TIdSyslogServer = class(TIdUDPServer)
  41. protected
  42. FOnSyslog: TOnSyslogEvent;
  43. //
  44. procedure DoSyslogEvent(AMsg: TIdSysLogMessage; ABinding: TIdSocketHandle); virtual;
  45. procedure DoUDPRead(AData: TStream; ABinding: TIdSocketHandle); override;
  46. public
  47. constructor Create(AOwner: TComponent); override;
  48. published
  49. property DefaultPort default IdPORT_syslog;
  50. property OnSyslog: TOnSyslogEvent read FOnSyslog write FOnSysLog;
  51. end;
  52. implementation
  53. uses
  54. SysUtils;
  55. { TIdSyslogServer }
  56. procedure TIdSyslogServer.DoUDPRead(AData: TStream; ABinding: TIdSocketHandle);
  57. var
  58. LMsg: TIdSysLogMessage;
  59. begin
  60. inherited DoUDPRead(AData,ABinding);
  61. LMsg := TIdSysLogMessage.Create(Self);
  62. try
  63. LMsg.ReadFromStream(AData, (AData as TMemoryStream).Size, ABinding.PeerIP);
  64. DoSyslogEvent(LMsg, ABinding);
  65. finally
  66. FreeAndNil(LMsg)
  67. end;
  68. end;
  69. constructor TIdSyslogServer.Create(AOwner: TComponent);
  70. begin
  71. inherited Create(AOwner);
  72. DefaultPort := IdPORT_syslog;
  73. end;
  74. procedure TIdSyslogServer.DoSyslogEvent(AMsg: TIdSysLogMessage; ABinding: TIdSocketHandle);
  75. begin
  76. if Assigned(FOnSyslog) and assigned(AMsg)then begin
  77. FOnSyslog(Self, AMsg, ABinding);
  78. end;
  79. end;
  80. end.