| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- {
- $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.6 12/2/2004 4:23:54 PM JPMugaas
- Adjusted for changes in Core.
- Rev 1.5 1/21/2004 2:29:40 PM JPMugaas
- InitComponent
- Rev 1.4 2/24/2003 08:41:24 PM JPMugaas
- Should compile with new code.
- Rev 1.3 1/17/2003 05:35:02 PM JPMugaas
- Now compiles with new design.
- Rev 1.2 1/9/2003 07:10:56 AM JPMugaas
- Changed Finger server API so developers do not have to mess with the Context
- and Connnection objects.
- Rev 1.1 1-1-2003 20:13:02 BGooijen
- Changed to support the new TIdContext class
- Rev 1.0 11/14/2002 02:19:56 PM JPMugaas
- 2000-May-15 J. Peter Mugaas
- -Added verbose querry event to complement TIdFinger
- 2000-Apr-22 J Peter Mugass
- -Ported to Indy
- 2000-Jan-13 MTL
- -Moved to new Palette Scheme (Winshoes Servers)
- 1999-Apr-13
- -Final Version
- }
- unit IdFingerServer;
- {
- Original Author: Ozz Nixon
- }
- interface
- {$i IdCompilerDefines.inc}
- uses
- Classes,
- IdAssignedNumbers,
- IdContext,
- IdCustomTCPServer;
- Type
- TIdFingerGetEvent = procedure (AContext:TIdContext; const AUserName: String; var VResponse : String) of object;
- TIdFingerServer = class ( TIdCustomTCPServer )
- protected
- FOnCommandFinger : TIdFingerGetEvent;
- FOnCommandVerboseFinger : TIdFingerGetEvent;
- //
- function DoExecute(AContext: TIdContext): boolean; override;
- public
- constructor Create(AOwner: TComponent); override;
- published
- {This event fires when you make a regular querry}
- property OnCommandFinger: TIdFingerGetEvent read FOnCommandFinger
- write FOnCommandFinger;
- { This event fires when you receive a VERBOSE finger request}
- property OnCommandVerboseFinger : TIdFingerGetEvent
- read FOnCommandVerboseFinger write FOnCommandVerboseFinger;
- property DefaultPort default IDPORT_Finger;
- end;
- implementation
- uses
- IdGlobal, SysUtils;
- constructor TIdFingerServer.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- DefaultPort := IdPORT_FINGER;
- end;
- function TIdFingerServer.DoExecute(AContext:TIdContext): boolean;
- var
- s, LResponse: String;
- begin
- Result := True;
- {We use TrimRight in case there are spaces ending the query which are problematic
- for verbose queries. CyberKit puts a space after the /W parameter}
- s := TrimRight(AContext.Connection.IOHandler.ReadLn);
- if Assigned(FOnCommandVerboseFinger) and TextEndsWith(s, '/W') then {Do not Localize}
- begin
- {we remove the /W switch before calling the event}
- SetLength(s, Length(s)-2);
- OnCommandVerboseFinger(AContext, s, LResponse);
- AContext.Connection.IOHandler.Write(LResponse);
- end
- else if Assigned(OnCommandFinger) then begin
- OnCommandFinger(AContext, s, LResponse);
- AContext.Connection.IOHandler.Write(LResponse);
- end;
- AContext.Connection.Disconnect;
- end;
- end.
|