restemplate/indy/Protocols/IdFinger.pas

153 lines
4.0 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 2004.02.03 5:45:10 PM czhower
Name changes
Rev 1.5 1/21/2004 2:29:38 PM JPMugaas
InitComponent
Rev 1.4 2/24/2003 08:41:20 PM JPMugaas
Should compile with new code.
Rev 1.3 12/8/2002 07:58:54 PM JPMugaas
Now compiles properly.
Rev 1.2 12/8/2002 07:26:38 PM JPMugaas
Added published host and port properties.
Rev 1.1 12/6/2002 05:29:34 PM JPMugaas
Now decend from TIdTCPClientCustom instead of TIdTCPClient.
Rev 1.0 11/14/2002 02:19:50 PM JPMugaas
2000-April-30 J. Peter Mugaas
-adjusted CompleteQuery to permit recursive finger queries such
as "test@test.com@example.com". I had mistakenly assumed that
everything after the first @ was the host name.
-Added option for verbose output request from server - note that
many do not support this.
}
unit IdFinger;
{*******************************************************}
{ }
{ Indy Finger Client TIdFinger }
{ }
{ Copyright (C) 2000 Winshoes Working Group }
{ Original author J. Peter Mugaas }
{ 2000-April-23 }
{ Based on RFC 1288 }
{ }
{*******************************************************}
interface
{$i IdCompilerDefines.inc}
uses
IdAssignedNumbers,
IdTCPClient;
type
TIdFinger = class(TIdTCPClientCustom)
protected
FQuery: String;
FVerboseOutput: Boolean;
Procedure SetCompleteQuery(AQuery: String);
Function GetCompleteQuery: String;
Procedure InitComponent; override;
public
{This connects to a server, does the finger querry specified in the Query
property and returns the results of the querry}
function Finger: String;
published
property Port default IdPORT_FINGER;
property Host;
{This is the querry to the server which you set with the Host Property}
Property Query: String read FQuery write FQuery;
{This is the complete querry such as "user@host"}
Property CompleteQuery: String read GetCompleteQuery write SetCompleteQuery;
{This indicates that the server should give more detailed information on
some systems. However, this will probably not work on many systems so it is
False by default}
Property VerboseOutput: Boolean read FVerboseOutPut write FVerboseOutPut
default False;
end;
implementation
uses
IdGlobal, IdGlobalProtocols,
IdTCPConnection;
{ TIdFinger }
procedure TIdFinger.InitComponent;
begin
inherited InitComponent;
Port := IdPORT_FINGER;
end;
{This is the method used for retreiving Finger Data which is returned in the
result}
function TIdFinger.Finger: String;
var
QStr : String;
begin
QStr := FQuery;
if VerboseOutPut then
begin
QStr := QStr + '/W'; {Do not Localize}
end; //if VerboseOutPut then
Connect;
try
{Write querry}
Result := ''; {Do not Localize}
IOHandler.WriteLn(QStr);
{Read results}
Result := IOHandler.AllData;
finally
Disconnect;
end;
end;
function TIdFinger.GetCompleteQuery: String;
begin
Result := FQuery + '@' + Host; {Do not Localize}
end;
procedure TIdFinger.SetCompleteQuery(AQuery: String);
var
p : Integer;
begin
p := RPos('@', AQuery, -1); {Do not Localize}
if p <> 0 then begin
if p < Length(AQuery) then
begin
Host := Copy(AQuery, p+1, MaxInt);
end;
FQuery := Copy(AQuery, 1, p-1);
end else begin
FQuery := AQuery;
end;
end;
end.