96 lines
2.5 KiB
Plaintext
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.
|