115 lines
2.6 KiB
Plaintext
115 lines
2.6 KiB
Plaintext
{
|
|
$Project$
|
|
$Workfile$
|
|
$Revision$
|
|
$DateUTC$
|
|
$Id$
|
|
|
|
This file is part of the Indy (Internet Direct) project, and is offered
|
|
under the dual-licensing agreement described on the Indy website.
|
|
(http://www.indyproject.org/)
|
|
|
|
Copyright:
|
|
(c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
|
|
}
|
|
{
|
|
$Log$
|
|
}
|
|
{
|
|
Rev 1.4 2004.02.03 5:44:28 PM czhower
|
|
Name changes
|
|
|
|
Rev 1.3 1/21/2004 4:04:02 PM JPMugaas
|
|
InitComponent
|
|
|
|
Rev 1.2 10/24/2003 01:58:34 PM JPMugaas
|
|
Attempt to port Syslog over to new code.
|
|
|
|
Rev 1.1 2003.10.24 10:38:30 AM czhower
|
|
UDP Server todos
|
|
|
|
Rev 1.0 11/13/2002 08:02:20 AM JPMugaas
|
|
}
|
|
|
|
{
|
|
IdSyslogServer component
|
|
Server-side implementation of the RFC 3164 "The BSD syslog Protocol"
|
|
Original Author: Stephane Grobety (grobety@fulgan.com)
|
|
Copyright the Indy pit crew
|
|
Release history:
|
|
08/09/01: Dev started
|
|
}
|
|
|
|
unit IdSysLogServer;
|
|
|
|
interface
|
|
{$i IdCompilerDefines.inc}
|
|
|
|
uses
|
|
IdAssignedNumbers,
|
|
IdBaseComponent,
|
|
IdComponent,
|
|
IdGlobal,
|
|
IdException,
|
|
IdSocketHandle,
|
|
IdStackConsts,
|
|
IdThread,
|
|
IdUDPBase,
|
|
IdUDPServer,
|
|
IdSysLogMessage,
|
|
IdSysLog;
|
|
|
|
type
|
|
TOnSyslogEvent = procedure(Sender: TObject; ASysLogMessage: TIdSysLogMessage;
|
|
ABinding: TIdSocketHandle) of object;
|
|
|
|
TIdSyslogServer = class(TIdUDPServer)
|
|
protected
|
|
FOnSyslog: TOnSyslogEvent;
|
|
//
|
|
procedure DoSyslogEvent(AMsg: TIdSysLogMessage; ABinding: TIdSocketHandle); virtual;
|
|
procedure DoUDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); override;
|
|
procedure InitComponent; override;
|
|
published
|
|
property DefaultPort default IdPORT_syslog;
|
|
property OnSyslog: TOnSyslogEvent read FOnSyslog write FOnSysLog;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
SysUtils;
|
|
|
|
{ TIdSyslogServer }
|
|
|
|
procedure TIdSyslogServer.DoUDPRead(AThread: TIdUDPListenerThread;
|
|
const AData: TIdBytes; ABinding: TIdSocketHandle);
|
|
var
|
|
LMsg: TIdSysLogMessage;
|
|
begin
|
|
inherited DoUDPRead(AThread, AData, ABinding);
|
|
LMsg := TIdSysLogMessage.Create(Self);
|
|
try
|
|
LMsg.ReadFromBytes(AData, ABinding.PeerIP);
|
|
// ReadFromStream(AData, (AData as TMemoryStream).Size, ABinding.PeerIP);
|
|
DoSyslogEvent(LMsg, ABinding);
|
|
finally
|
|
FreeAndNil(LMsg)
|
|
end;
|
|
end;
|
|
|
|
procedure TIdSyslogServer.InitComponent;
|
|
begin
|
|
inherited;
|
|
DefaultPort := IdPORT_syslog;
|
|
end;
|
|
|
|
procedure TIdSyslogServer.DoSyslogEvent(AMsg: TIdSysLogMessage; ABinding: TIdSocketHandle);
|
|
begin
|
|
if Assigned(FOnSyslog) and assigned(AMsg)then begin
|
|
FOnSyslog(Self, AMsg, ABinding);
|
|
end;
|
|
end;
|
|
|
|
end.
|