| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- { $HDR$}
- {**********************************************************************}
- { Unit archived using Team Coherence }
- { Team Coherence is Copyright 2002 by Quality Software Components }
- { }
- { For further information / comments, visit our WEB site at }
- { http://www.TeamCoherence.com }
- {**********************************************************************}
- {}
- { $Log: 10189: IdHostnameServer.pas
- {
- { Rev 1.0 2002.11.12 10:40:54 PM czhower
- }
- unit IdHostnameServer;
- interface
- {
- 2000-May-18: J. Peter Mugaas
- -Ported to Indy
- 2000-Jan-13: MTL
- -13-JAN-2000 MTL: Moved to new Palette Scheme (Winshoes Servers)
- 1999-May-13: Ozz Nixon
- -Final version
- Original Author: Ozz Nixon
- Based on RFC 953
- }
- uses
- Classes,
- IdAssignedNumbers,
- IdTCPServer;
- Const
- KnownCommands:Array [1..9] of string=
- (
- 'HNAME', {Do not Localize}
- 'HADDR', {Do not Localize}
- 'ALL', {Do not Localize}
- 'HELP', {Do not Localize}
- 'VERSION', {Do not Localize}
- 'ALL-OLD', {Do not Localize}
- 'DOMAINS', {Do not Localize}
- 'ALL-DOM', {Do not Localize}
- 'ALL-INGWAY' {Do not Localize}
- );
- Type
- THostNameGetEvent = procedure(Thread: TIdPeerThread) of object;
- THostNameOneParmEvent = procedure(Thread: TIdPeerThread;Parm:String) of object;
- TIdHostNameServer = class(TIdTCPServer)
- protected
- FOnCommandHNAME:THostNameOneParmEvent;
- FOnCommandHADDR:THostNameOneParmEvent;
- FOnCommandALL:THostNameGetEvent;
- FOnCommandHELP:THostNameGetEvent;
- FOnCommandVERSION:THostNameGetEvent;
- FOnCommandALLOLD:THostNameGetEvent;
- FOnCommandDOMAINS:THostNameGetEvent;
- FOnCommandALLDOM:THostNameGetEvent;
- FOnCommandALLINGWAY:THostNameGetEvent;
- //
- function DoExecute(Thread: TIdPeerThread): boolean; override;
- public
- constructor Create(AOwner: TComponent); override;
- published
- property OnCommandHNAME: THostNameOneParmEvent read fOnCommandHNAME write fOnCommandHNAME;
- property OnCommandHADDR: THostNameOneParmEvent read fOnCommandHADDR write fOnCommandHADDR;
- property OnCommandALL: THostNameGetEvent read fOnCommandALL write fOnCommandALL;
- property OnCommandHELP: THostNameGetEvent read fOnCommandHELP write fOnCommandHELP;
- property OnCommandVERSION: THostNameGetEvent read fOnCommandVERSION write fOnCommandVERSION;
- property OnCommandALLOLD: THostNameGetEvent read fOnCommandALLOLD write fOnCommandALLOLD;
- property OnCommandDOMAINS: THostNameGetEvent read fOnCommandDOMAINS write fOnCommandDOMAINS;
- property OnCommandALLDOM: THostNameGetEvent read fOnCommandALLDOM write fOnCommandALLDOM;
- property OnCommandALLINGWAY: THostNameGetEvent read fOnCommandALLINGWAY write fOnCommandALLINGWAY;
- end;
- implementation
- uses
- IdGlobal,
- SysUtils;
- constructor TIdHostNameServer.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- DefaultPort := IdPORT_HOSTNAME;
- end;
- function TIdHostNameServer.DoExecute(Thread: TIdPeerThread): boolean;
- Var
- S,sCmd:String;
- begin
- result := true;
- while Thread.Connection.Connected do
- begin
- S := Thread.Connection.ReadLn;
- sCmd := UpperCase ( Fetch ( s, CHAR32 ) );
- case Succ(PosInStrArray ( Uppercase ( sCmd ), KnownCommands ) ) of
- 1 : {hname}
- if assigned ( OnCommandHNAME ) then
- OnCommandHNAME ( Thread, S );
- 2 : {haddr}
- if assigned ( OnCommandHADDR ) then
- OnCommandHADDR ( Thread, S );
- 3 : {all}
- if assigned ( OnCommandALL ) then
- OnCommandALL ( Thread );
- 4 : {help}
- if assigned ( OnCommandHELP ) then
- OnCommandHELP ( Thread );
- 5 : {version}
- if assigned ( OnCommandVERSION ) then
- OnCommandVERSION ( Thread );
- 6 : {all-old}
- if assigned ( OnCommandALLOLD ) then
- OnCommandALLOLD ( Thread );
- 7 : {domains}
- if assigned ( OnCommandDOMAINS ) then
- OnCommandDOMAINS ( Thread );
- 8 : {all-dom}
- if assigned ( OnCommandALLDOM ) then
- OnCommandALLDOM ( Thread );
- 9 : {all-ingway}
- if assigned ( OnCommandALLINGWAY ) then
- OnCommandALLINGWAY ( Thread );
- end; //while Thread.Connection.Connected do
- end; //while Thread.Connection.Connected do
- Thread.Connection.Disconnect;
- end; {doExecute}
- end.
|