153 lines
4.0 KiB
Plaintext
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.
|