{
  $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.2    1/21/2004 3:27:18 PM  JPMugaas
  InitComponent

  Rev 1.1    4/4/2003 8:02:58 PM  BGooijen
  made host published

  Rev 1.0    11/13/2002 07:59:46 AM  JPMugaas

  -2001.05.18 - J. Peter Mugaas
  I removed the property for forcing client ports
  into a specific range.  This was not necessary
  for Rexec.  It is required for the TIdRSH Component

  -2001.02.15 - J. Peter Mugaas
  I moved most of the Rexec code to
  TIdRemoteCMDClient and TIdRexec now inherits
  from that class.  This change was necessary to
  reduce duplicate code with a new addition, IdRSH.

  -2001.02.14 - J. Peter Mugaas
  Made it more complient with Rexec servers
  and handled the #0 or error indicator

  -2001.02.13 - Modified by Kudzu

  -2000.10.24 - Original Author: Laurence LIew
}

unit IdRexec;

{
  Indy Rexec Client TIdRexec
  Copyright (C) 2001 Winshoes Working Group
  Original author Laurence LIew
  2000-October-24
 }

interface

uses
  IdAssignedNumbers,
  IdRemoteCMDClient,
  IdTCPClient;

type
  TIdRexec = class(TIdRemoteCMDClient)
  protected
    procedure InitComponent; override;
  public
    Function Execute(ACommand: String): String; override;
  published
    property Username;
    property Password;
    property Port default Id_PORT_exec;
    property Host;
  end;

implementation

uses
  IdComponent,
  IdGlobal,
  IdSimpleServer,
  IdTCPConnection,
  IdThread;

procedure TIdRexec.InitComponent;
begin
  inherited;
  Port := Id_PORT_exec;
  {Rexec does not require ports to be in a specific range}
  FUseReservedPorts := False;
end;

function TIdRexec.Execute(ACommand: String): String;
begin
  Result := InternalExec(UserName,Password,ACommand);
end;

end.
