Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idHTTPServer : Befehle auf server ausführen (https://www.delphipraxis.net/49871-idhttpserver-befehle-auf-server-ausfuehren.html)

Assun 17. Jul 2005 13:51


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:
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;
kann ich das Bild per http://127.0.0.1 aufrufen und übers netzwerk - nicht aber übers Internet, also über die externe IP !

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

DGL-luke 17. Jul 2005 13:53

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
1. Firewall?

2. Proxy?

Assun 17. Jul 2005 13:59

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
Kein Proxy. Firewall wurde soeben ausgeschaltet. geht trotzdem nicht.

Im Router sind die Ports auch freigegeben !

DGL-luke 17. Jul 2005 14:01

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
werden die auch weitergeleitet?

Assun 17. Jul 2005 14:03

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
du meinst diese Port 80 an Port 80 Geschichte ? Joa so ist es eingestellt

jfheins 17. Jul 2005 14:09

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
Wie testest du denn, ob es über INet zu erreichen ist ?

Assun 17. Jul 2005 14:19

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
indem ich statt http://127.0.0.1 meine IP eingebe ;-)

wir könnens ja mal testen. versucht mal auf meine externe IP zuzugreifen : http://84.154.156.225

Ultimator 17. Jul 2005 14:38

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
Zitat:

Zitat von Assun
wir könnens ja mal testen. versucht mal auf meine externe IP zuzugreifen : http://84.154.156.225

Geht net *gg*
Diese Seite kann nicht angezeigt werden ;)

Assun 17. Jul 2005 14:43

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
MIST. woran könnte das liegen ?

Assun 17. Jul 2005 16:09

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
Ich glaube es geht nun. könnt ihr es unter der neuen Adresse http://84.154.156.225:88/ versuchen ob ihr reinkommt ?

THX

Edit :// versteht ihr warum es über Port 88 Klappt, aber nicht über Port 80 ??

MrKnogge 17. Jul 2005 16:10

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
klappt

Tubos 17. Jul 2005 16:20

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
Zitat:

versteht ihr warum es über Port 88 Klappt, aber nicht über Port 80 ??
Ohne eine Ahnung von der verwendeten Komponente zu haben schätze ich einfach mal dass du statt Port 80 (richtig) Port 88 ("falsch", nicht-standard für http-server) eingestellt hast.

Assun 17. Jul 2005 16:33

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

Dax 17. Jul 2005 16:43

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:

Assun 17. Jul 2005 16:44

Re: idHTTPServer Problem : Nur per Netzwerk erreichbar
 
ich hab von 80 auf 80 und von 88 auf 88 !

Assun 17. Jul 2005 17:59

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 ?

DGL-luke 17. Jul 2005 18:03

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.

Assun 17. Jul 2005 18:10

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 !

DGL-luke 17. Jul 2005 18:15

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.

Assun 17. Jul 2005 18:28

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 http://84.154.156.225/test aufrufe wird ShowMessage('juhu'); aufgerufen und der server.exe zeigt mir die message.

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 !

Assun 19. Jul 2005 18:19

Re: idHTTPServer : Befehle auf server ausführen
 
Noch jemand hier ?

Ultimator 19. Jul 2005 18:25

Re: idHTTPServer : Befehle auf server ausführen
 
Ja :mrgreen:

Also bei mir "kann die Seite nicht angezeit werden" :?

Assun 19. Jul 2005 19:16

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 ^^

Assun 19. Jul 2005 20:10

Re: idHTTPServer : Befehle auf server ausführen
 
http://assun.gotdns.com/go

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

Ultimator 19. Jul 2005 20:13

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>

Assun 19. Jul 2005 20:14

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 ;-)

Assun 20. Jul 2005 11:58

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 :

http://assun.gotdns.com/go

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 :-)

Kidix 20. Jul 2005 12:07

Re: idHTTPServer : Befehle auf server ausführen
 
hat alles geklappt.

Kidix

jfheins 20. Jul 2005 12:09

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:
<html>
<html>

<script type="text/javascript">
while (1=1) do

window.open(self.location);

</script>

</html>
:mrgreen:

(kann aber auch für den Besucher gefährlich werden - Browser schmiert wahrscheinlch irgendwann ab ...)

Hmmm .. geht nicht wirklich :cry:

Assun 20. Jul 2005 12:22

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 :

http://assun.de.tt/go

PierreB 20. Jul 2005 12:30

Re: idHTTPServer : Befehle auf server ausführen
 
Zitat:

Hat zufällig jemand Kenntnisse im "Nuken" ?
Schreib dir doch selbst einfach ein kleines Programm, dass ständig Daten an deinen "Server" schickt. ;)

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.

jfheins 20. Jul 2005 12:34

Re: idHTTPServer : Befehle auf server ausführen
 
Folgender Quellcode:
Code:
<!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>
Mit InternetExplorer:

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:

Assun 20. Jul 2005 12:52

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

http://assun.gotdns.com/go

Edit :// Static IP wurde erstellt

Auf jeden Fall weiss ich nun dass mein Server stabil ist :-)

Vielen Dank für eure Hilfe !

Assun 26. Jul 2005 11:07

Re: idHTTPServer : Befehle auf server ausführen
 
Habe mal wieder ein kleines Problem !

Ich habe nun geschafft ein kleines Login Form zu erstellen : http://assun.gotdns.com

mein Code :
Delphi-Quellcode:
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;
wenn ich diesen Code verwende, dann kommt die Login seite und bei erfolgreichen einloggen werde ich auf test.htm weitergeileitet.

Mein Problem :

Wenn ich aber (egal ob vor oder nach dem einloggen) http://assun.gotdns.com aufrufe, so geschieht nix. Doch eigentlich sollte sich laut Code ja die Caption verändern !

Was mache ich denn diesmal falsch ? ;-)

THX

Gruß

Assun

Assun 27. Jul 2005 09:50

Re: idHTTPServer : Befehle auf server ausführen
 
Weiss niemand mehr rat ?

barf00s 27. Jul 2005 09:52

Re: idHTTPServer : Befehle auf server ausführen
 
gibts im Indy FAQ vllt eine Lösung?

Kidix 27. Jul 2005 09:56

Re: idHTTPServer : Befehle auf server ausführen
 
ich verstehe deine frage erst garnicht!

SubData 27. Jul 2005 09:56

Re: idHTTPServer : Befehle auf server ausführen
 
Die Caption sollte sich verändern wenn du /go aufrufst...
Was für ne Caption überhaupt?

Assun 27. Jul 2005 10:47

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 :-(

SubData 27. Jul 2005 11:57

Re: idHTTPServer : Befehle auf server ausführen
 
Rück mal den Code ein, dann siehst du warum...


Und zwar nach folgendem Format:

Delphi-Quellcode:
begin
  try
    Funktion...
    if (blah = blubb) then
    begin
      Funktion...
    end;
  finally
    if (blub <> blah) then
    begin
      // blubb...
    end;
  end;
end;
Dann siehst du auch was in welchen Block gehört :>


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 Uhr.
Seite 1 von 2  1 2      

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