Einzelnen Beitrag anzeigen

Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#1

Eine isapi dll für Apache 2.4 soll CMD ausführen

  Alt 22. Mär 2021, 10:34
Hallo,

Delphi Xe4
Apache/2.4.46 (Win32) OpenSSL/1.1.1h PHP/7.4.12

.. ich wollte eigentlich nur "schnell" eine ISAP-Dll schreiben, die beim Apache-Start geladen wird -> und dadurch ein CMD gestartet wird..

Bei jedem Apache-Start soll eine spezielle CMD gestartet werden - aber ich kriege das nicht zum laufen

Hat einer einen Hinweis WIESO das nicht geht?

Delphi-Quellcode:
unit WebModuleUnit1;

interface

uses System.SysUtils, System.Classes, Web.HTTPApp,ShellApi;

type
  TWebModule1 = class(TWebModule)
    procedure WebModule1DefaultHandlerAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    procedure WebModuleCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  WebModuleClass: TComponentClass = TWebModule1;

implementation

{$R *.dfm}


procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.Content := '<html><heading/><body>Webserver-Anwendung</body></html>';

end;

procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
  ShellExecute(0, nil, Pchar('C:\Server\test.cmd'), nil, nil, 5);
end;

end.
die DLL wird erfolgreich vom Apache geladen ... der Aufruf "http://localhost:17082/cmd_starter.dll" zeigt im Browser "Webserver-Anwendung" an
aber passieren tut nix


in der httpd.conf hab ich:


<IfModule mod_alias.c>
AddHandler isapi-handler .dll
ISAPICacheFile c:/server/htdocs/cmd_starter.dll
</IfModule>





Zitat:
library cmd_starter;

uses
Winapi.ActiveX,
System.Win.ComObj,
Web.WebBroker,
Web.Win.ISAPIApp,
Web.Win.ISAPIThreadPool,
WebModuleUnit1 in 'WebModuleUnit1.pas' {WebModule1: TWebModule};

{$R *.res}

exports
GetExtensionVersion,
HttpExtensionProc,
TerminateExtension;

begin
CoInitFlags := COINIT_MULTITHREADED;
Application.Initialize;
Application.WebModuleClass := WebModuleClass;
Application.Run;
end.
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \

Geändert von erich.wanker (22. Mär 2021 um 10:39 Uhr)
  Mit Zitat antworten Zitat