122 lines
3.1 KiB
Plaintext
122 lines
3.1 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.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
|
|
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;
|
|
procedure InitComponent; 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;
|
|
|
|
procedure TIdFingerServer.InitComponent;
|
|
begin
|
|
inherited InitComponent;
|
|
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}
|
|
s := Copy(s, 1, 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.
|