![]() |
idHTTPServer : Befehle auf server ausführen
Hi !
Ich schreibe gerade an einem kleinen Http Server. klappt zum Teil auch schon ganz gut. mit
Delphi-Quellcode:
kann ich das Bild per
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); Var Stream: TFilestream; TheString : String; begin if ARequestInfo.Document = '/' then begin AResponseInfo.ContentType := 'image/jpeg'; IF fileexists('test.jpg') = true then ARequestInfo.Document := 'test.jpg'; end; Stream := TfileStream.Create('Login/test.jpg', fmOpenRead or fmShareDenyWrite ); AResponseInfo.ContentStream := Stream; setlength(TheString, stream.size); stream.Read(TheString[1], stream.size); end; ![]() Was mache ich falsch ? EDIT // Problem glöst. habe allerdings schon ein neues ;-) und zwar will ich eine HTML seite anzeigen. das geht auch. doch ich will machen, dass der user bei mir einen prozess ausführen kann. soll heissen er klickt auf einen link auf meiner bereitgestellten HTML seite und bei mir wird vom server aus ein programm gestartet. Wie kann ich das realisieren ? THX |
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
1. Firewall?
2. Proxy? |
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
Kein Proxy. Firewall wurde soeben ausgeschaltet. geht trotzdem nicht.
Im Router sind die Ports auch freigegeben ! |
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
werden die auch weitergeleitet?
|
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
du meinst diese Port 80 an Port 80 Geschichte ? Joa so ist es eingestellt
|
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
Wie testest du denn, ob es über INet zu erreichen ist ?
|
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
indem ich statt
![]() wir könnens ja mal testen. versucht mal auf meine externe IP zuzugreifen : ![]() |
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
Zitat:
Diese Seite kann nicht angezeigt werden ;) |
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
MIST. woran könnte das liegen ?
|
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
Ich glaube es geht nun. könnt ihr es unter der neuen Adresse
![]() THX Edit :// versteht ihr warum es über Port 88 Klappt, aber nicht über Port 80 ?? |
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
klappt
|
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
Zitat:
|
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
Das ist richtig. über Port 80 gehts nur intern und über Port 88 gehts extern.
Das ist aber doof, denn ginge es via port 80, könnte man einfach nur die IP direkt aufrufen. So wie es im Moment ist muss ich hinter die IP noch :88 hängen |
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
Kannst du im Router denn keine Umleitung von 80 nach 80 einstellen, sondern nur 88 nach 80? :gruebel:
|
Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
ich hab von 80 auf 80 und von 88 auf 88 !
|
Re: idHTTPServer : Befehle auf server ausführen
Jetzt geht es ! Es lag am Router ^^
doch ich habe auch schon ein neues Problem : und zwar will ich eine HTML seite anzeigen. das geht auch. doch ich will machen, dass der user bei mir einen prozess ausführen kann. soll heissen er klickt auf einen link auf meiner bereitgestellten HTML seite und bei mir wird vom server aus ein programm gestartet. Wie kann ich das realisieren ? |
Re: idHTTPServer : Befehle auf server ausführen
z.B. indem dein idHTTPServer "allergisch" auf die anforderung /execute/prog.exe reagiert.
du musst die eben erst mal überlegen, was du für eine schnittstelle zur verfügung stellen willst. du kannst z.b. die komplette befehlszeile oder das komplette Shellexecute zur verfügung stellen. |
Re: idHTTPServer : Befehle auf server ausführen
aaaaaaaaaaalso :
Ich habe vor ein RemoteAdmin Prog zu schreiben. Und man soll auf den Server per HTTP Link zugreifen können. natürlich mit Passwort. doch ich habe keine Ahnung wie ich Befehle von der seite zum Server.exe leiten soll und wie ich darauf reagieren soll ! |
Re: idHTTPServer : Befehle auf server ausführen
du kannst doch im Onreceive oder wie auch immer das heisst den header überprüfen. wenn nun z.B. die anforderung nach einer exe kommt, kannst du diese ja anstatt zum download abzuschicken einfach ausführen, per shellexecute.
|
Re: idHTTPServer : Befehle auf server ausführen
also ich hab mal was gecodet :
Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); begin if ARequestInfo.Document = '/test' then ShowMessage('test'); end; wenn ich jetzt ![]() klappt wunderbar. doch wenn n Kolleg das von seinem rechner aus macht bekommt er nen komischen error und es geschieht nix ! Woran liegt das ? klickt mal alle auf den link. dann werde ich zwar mit messages bombadiert aber was solls ^^ //Edit : GERADE EBEN hat jemand aufn Link geklickt und ich hab ne message bekommen *freu* aber hat dieser Jemand n error erhalten? ^^ Edit : schon wieder einer ^^ die leute die drauf geklickt haben mögen sich bitte hier im Thread melden und mir sagen ob sie einen fehler erhalten haben ! |
Re: idHTTPServer : Befehle auf server ausführen
Noch jemand hier ?
|
Re: idHTTPServer : Befehle auf server ausführen
Ja :mrgreen:
Also bei mir "kann die Seite nicht angezeit werden" :? |
Re: idHTTPServer : Befehle auf server ausführen
mein server ist momentan auch off ^^
ich änder mal was am code und dann meld ich mich dass ihr testen könnt ^^ |
Re: idHTTPServer : Befehle auf server ausführen
![]() da müsste ne weisse seite erscheinen und mein server müsste i um 1 erhöhen - bitte alle mal druf gehn. jeder der drauf war, bitte hier melden und schreiben ob Fehler oder nicht ! WICHTIG ! THX |
Re: idHTTPServer : Befehle auf server ausführen
Jap, war auf ner weißen Seite, hab sogar n paarmal aktualisiert :mrgreen:
Einfach weiß:
XML-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD> <BODY></BODY></HTML> |
Re: idHTTPServer : Befehle auf server ausführen
Perfekt ! sie soll auch weiss sein ^^ es geht mir nur darum dass kein Error kommt und dass er i erhöt.
Edit // ok, server funtzt. hat sogar ne DoS Attacke ausgehalten *stolz-bin* ^^ server ist nun off, da weitere Programmierungsarbeiten vorgenommen werden ;-) |
Re: idHTTPServer : Befehle auf server ausführen
Sodele. Server funtzt und läuft stabil. Ich wäre euch trotzdem sehr verbunden, wenn ihr alle mal auf diesen Link klicken könntet :
![]() bombadiert mich, nuked mich, gebt euch alles ;-) Ich muss wissen wie standfest mein Server ist. THX Achja und falls ihr ne exception bekommen solltet, meldet euch im Thread. Wenn alles glatt läuft solltet ihr einfach eine weisse Seite sehen. Edit // oder meldet euch besser auch wenns geklappt hat. Vielen Dank ;-) Edit : 118 Zugriffe in 20 Sekunden :shock: immer weiter so :-) |
Re: idHTTPServer : Befehle auf server ausführen
hat alles geklappt.
Kidix |
Re: idHTTPServer : Befehle auf server ausführen
Schönes weiß :stupid:
Wenn du wirklich eine Belastungsprobe machen möchtest, gebe statt einer weißen Seite das hier aus:
Code:
:mrgreen:
<html>
<html> <script type="text/javascript"> while (1=1) do { window.open(self.location); } </script> </html> (kann aber auch für den Besucher gefährlich werden - Browser schmiert wahrscheinlch irgendwann ab ...) Hmmm .. geht nicht wirklich :cry: |
Re: idHTTPServer : Befehle auf server ausführen
"(kann aber auch für den Besucher gefährlich werden - Browser schmiert wahrscheinlch irgendwann ab ...)"
deswegen mach ich es auch nicht ;-) Mein rechner wird so schon genug belastet. Hat zufällig jemand Kenntnisse im "Nuken" ? Wenn ja dann ist er hiermit berechtigt seine Kenntnisse auszuprobieren : ![]() |
Re: idHTTPServer : Befehle auf server ausführen
Zitat:
Außerdem bei einer leeren Seite wird dein Server nunmal nicht groß ausgelastet, aber leg doch mal ne Seite mit'n paar 100KB großen Bildern drauf, dann wirst du merken das deine Bandbreite bald ausgelastet ist, wenn einige Leute die Seite aufrufen. |
Re: idHTTPServer : Befehle auf server ausführen
Folgender Quellcode:
Code:
Mit InternetExplorer:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <title>Ein Fenster</title> <script type="text/javascript"> <!-- function doit () { while (1==1) { window.open ("http://84.154.129.69/go"); } } //--> </script> </head> <body onLoad="window.setTimeout('doit()', 2000)"> </body> </html> Es werden bei mir um die 60 Fenster geöffnet - danach einige schließen, TaskManager aufrufen, und iexplore.exe killen ;) Er ist also vollkommen ungefährlich, auch wenns nicht so aussieht ;) (Ich hafte trotztdem nicht, wenn der PC abstürtzt :angle2: - bei mir geht's :mrgreen: ) IE rulez :mrgreen: |
Re: idHTTPServer : Befehle auf server ausführen
So. Script wurde erstellt. Allerdings ist bei mir der FF agestürtzt, also seit vorsichtig !
wenn mich jemand bombt (also auf den Link klickt), bitte gleichzeitig hier melden. danke ![]() Edit :// Static IP wurde erstellt Auf jeden Fall weiss ich nun dass mein Server stabil ist :-) Vielen Dank für eure Hilfe ! |
Re: idHTTPServer : Befehle auf server ausführen
Habe mal wieder ein kleines Problem !
Ich habe nun geschafft ein kleines Login Form zu erstellen : ![]() mein Code :
Delphi-Quellcode:
wenn ich diesen Code verwende, dann kommt die Login seite und bei erfolgreichen einloggen werde ich auf test.htm weitergeileitet.
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); Var Stream: TFilestream; TheString : String; i, Anzahl : Integer; begin if ARequestInfo.Document = '/' then begin try begin AResponseInfo.ContentType := 'text/html'; Stream := TfileStream.Create('Admin/login.htm', fmOpenRead or fmShareDenyWrite ); AResponseInfo.ContentStream := Stream; setlength(TheString, stream.size); stream.Read(TheString[1], stream.size); Anzahl := ARequestInfo.Params.Count; for i := 1 to Anzahl do if (parse('=', ARequestInfo.params[0], 1) = 'submit') and (parse('=', ARequestInfo.params[0], 2) = '1') then if (parse('=', ARequestInfo.params[1], 1) = 'username') and (parse('=', ARequestInfo.params[1], 2) = 'Assun') then if (parse('=', ARequestInfo.params[2], 1) = 'password') and (parse('=', ARequestInfo.params[2], 2) = 'test') then begin AResponseInfo.ContentType := 'text/html'; Stream := TfileStream.Create('Admin/test.htm', fmOpenRead or fmShareDenyWrite ); AResponseInfo.ContentStream := Stream; setlength(TheString, stream.size); stream.Read(TheString[1], stream.size); userok := true; end; if ARequestInfo.Document = '/go' then begin try Caption := 'GEHT DOCH MAAAAAAAN'; except Exit; end; end; end; except Exit; end; end; end; Mein Problem : Wenn ich aber (egal ob vor oder nach dem einloggen) ![]() Was mache ich denn diesmal falsch ? ;-) THX Gruß Assun |
Re: idHTTPServer : Befehle auf server ausführen
Weiss niemand mehr rat ?
|
Re: idHTTPServer : Befehle auf server ausführen
gibts im Indy FAQ vllt eine Lösung?
|
Re: idHTTPServer : Befehle auf server ausführen
ich verstehe deine frage erst garnicht!
|
Re: idHTTPServer : Befehle auf server ausführen
Die Caption sollte sich verändern wenn du /go aufrufst...
Was für ne Caption überhaupt? |
Re: idHTTPServer : Befehle auf server ausführen
die caption von meinem Server ^^ gib au alles schon. aber irgendwie gehn nur die 2 if abfragen, die dritte wird ignored :-(
|
Re: idHTTPServer : Befehle auf server ausführen
Rück mal den Code ein, dann siehst du warum...
Und zwar nach folgendem Format:
Delphi-Quellcode:
Dann siehst du auch was in welchen Block gehört :>
begin
try Funktion... if (blah = blubb) then begin Funktion... end; finally if (blub <> blah) then begin // blubb... end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz