restemplate/indy/Protocols/IdRexecServer.pas

96 lines
2.5 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.2 1/21/2004 3:27:20 PM JPMugaas
InitComponent
Rev 1.1 1/31/2003 02:32:10 PM JPMugaas
Should now compile.
Rev 1.0 11/13/2002 07:59:50 AM JPMugaas
2001, Feb 17 - J. Peter Mugaas
moved much of the code into IdRemoteCMDServer so it can be
reused in IdRSHServer
2001, Feb 15 - J. Peter Mugaas
made methods for error and sucess command results
2001, Feb 14 - J. Peter Mugaas
started this unit
}
unit IdRexecServer;
{
based on
http://www.winsock.com/hypermail/winsock2/2235.html
http://www.private.org.il/mini-tcpip.faq.html
This is based on the IdRexec.pas unit and
programming comments at http://www.abandoned.org/nemon/rexeclib.py
}
interface
{$i IdCompilerDefines.inc}
uses
IdAssignedNumbers, IdContext, IdRemoteCMDServer, IdTCPClient, IdTCPServer;
type
TIdRexecCommandEvent = procedure (AThread: TIdContext;
AStdError : TIdTCPClient; AUserName, APassword, ACommand : String) of object;
TIdRexecServer = class(TIdRemoteCMDServer)
protected
FOnCommand : TIdRexecCommandEvent;
procedure DoCMD(AThread: TIdContext;
AStdError : TIdTCPClient; AParam1, AParam2, ACommand : String); override;
procedure InitComponent; override;
published
property OnCommand : TIdRexecCommandEvent read FOnCommand write FOnCommand;
property DefaultPort default Id_PORT_exec;
end;
implementation
{ TIdRexecServer }
procedure TIdRexecServer.InitComponent;
begin
inherited;
DefaultPort := Id_PORT_exec;
{This variable is defined in the TIdRemoteCMDServer component. We do not
use it here because Rexec does not require it. However, we have to set this to
to false to disable forcing ports to be in a specific range. The variable in is the
anscestor because only accepting clients in a specific range would require a change
to the base component.}
FForcePortsInRange := False;
FStdErrorPortsInRange := False;
end;
procedure TIdRexecServer.DoCMD(AThread: TIdContext;
AStdError: TIdTCPClient; AParam1, AParam2, ACommand: String);
begin
if Assigned(FOnCommand) then begin
FOnCommand(AThread,AStdError,AParam1,AParam2,ACommand);
end;
end;
end.