Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi router fernsteuern (https://www.delphipraxis.net/27841-router-fernsteuern.html)

glkgereon 16. Aug 2004 13:54


router fernsteuern
 
hi

ich will einen router "fernsteuern", also mit nem delphi-prog in die firmware rein, und da die funktionen benutzen

zur not sogar, das ich nen dummy mache, der so tut als würde das alles der nutzer machen, also mit dem prog einen mausklick auf position (123|456) emulieren

geht das?

xineohp 16. Aug 2004 13:59

Re: router fernsteuern
 
moin,

ja, das sollte möglich sein. Ich hab mir für meinen Router (SMC Barricade) ein Prog geschrieben, mit dem ich auf dessen Http-Interface zugreifen kann und mich somit einlogen und die Routerfunktionen verwenden kann.

glkgereon 16. Aug 2004 14:11

Re: router fernsteuern
 
smc barricade???
habbich auch..

ist das prog os????
bitte bitte bitte...

xineohp 16. Aug 2004 14:19

Re: router fernsteuern
 
hm, naja, schreibs dir lieber selbst ... mein Progi ist arg verbuggt, aber ich kann dir gerne die relevanten Passagen geben. sek. muss sie nur zusammen kopieren.

glkgereon 16. Aug 2004 14:24

Re: router fernsteuern
 
mein problem ist, das ich davon 0 ahnung und keinen ansatz habe

wär für mich stochern im nebel...

ich muss nur wissen, wie du den router ansprichst...

The-X 16. Aug 2004 14:35

Re: router fernsteuern
 
ich vermute mal über das Integrierte Web-interface des Routers
=> Indy HTTP-Client ;)
und in den Rückgaben des Routers dann nach den benötigten Werten parsen

xineohp 16. Aug 2004 14:42

Re: router fernsteuern
 
so:

Die Kommunikation mit dem Router läuft über Http, und zwar habe ich da die Indi-Komponente verwendet.

Zum Code:

SL_Router ist eine tStringlist, in die die Antwort auf die Http-Get-Anfrage gespeichert wird.
ini ist vom Typ tinifile und beinhaltet die benötigten Parameter, die in einem inifile gespeichert sind.
IdHTTP1 ist die Http-Komponente von Indi.

Delphi-Quellcode:
var SL_Router: tstringlist;
    ini: tinifile;

{-------- Router-Kommunikation + HTTP -----------------------------------------}
procedure HTTPAnfrage(Anfrage:string);
begin
    SL_Router.Clear;
   // SL_Router.Add(IdHTTP1.Get(Anfrage));
end;

function RouterKLogin:boolean;
begin
    try
      HTTPAnfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Login-Sequenz','')+ini.ReadString('Router','Passwort',''));
    except
      on E: Exception do begin
                          If pos('302',E.Message)<>0    // siehe Http-Error-Codes
                            then result:=true
                            else result:=false;
                          end;
    end;
end;

function eRouterKLogout:boolean;
begin
    try
      HTTPAnfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Logout-Sequenz',''));
    except
      on E: Exception do begin
                          If pos('302',E.Message)<>0
                            then result:=true
                            else result:=false;
                          end;
    end;
end;

procedure RouterKommunikation(typ:integer); // typ = 1 Verbindung herstellen
begin                                     // typ = 2 Verbindung trennen
  try                                     // typ = 3 Status abfragen
    If eRouterKLogin then
      begin
          case typ of
            1:begin
                try
                  ehttpanfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Verbinden-Sequenz',''));
                except
                  on E: Exception do
                    If pos('302',E.Message)=0
                      then ;// fehlgeschlagen
                end;
              end;

            2:begin
                try
                  ehttpanfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Trennen-Sequenz',''));
                except
                  on E: Exception do
                    If pos('302',E.Message)=0
                      then ;// fehlgeschlagen
                end;
              end;

            3:begin
                try

                  ehttpAnfrage('http://'+ini.ReadString('Router','IP','')+ini.ReadString('Router','Status-Sequenz',''));
                  If AnsiContainsText(SL_Router.text,ini.ReadString('Router','Indikator-Verbunden-Sequenz','XXX'))then
                    begin
                     // Verbunden:=true;
                    end
                  else
                  If AnsiContainsText(SL_Router.text,ini.ReadString('Router','Indikator-Getrennt-Sequenz',''))then
                    begin
                     // Verbunden:=False;
                     end;
                except

                end;
              end;
            end;

      end;

      eRouterKLogout;

end;
das ini-File beinhaltet folgendes:
Code:
[Router]
IP=192.168.2.1
Port=80
Passwort=PASSWORT
Login-Sequenz=/cgi-bin/login.exe?pws=
Logout-Sequenz=/cgi-bin/logout.exe
Verbinden-Sequenz=/cgi-bin/statusprocess.exe?connect=+connect+
Trennen-Sequenz=/cgi-bin/statusprocess.exe?disconnect=disconnect
Status-Sequenz=/status_main.stm
Indikator-Verbunden-Sequenz=bWanConnected=1
Indikator-Getrennt-Sequenz=bWanConnected=0

DaFox 16. Aug 2004 14:50

Re: router fernsteuern
 
Wenn der SMC Telnet unterstützt, würde ich das dem Webinterface vorziehen. So habe ich das zumindest vor einiger Zeit bei meinem Elsa Router getan.

Gruß,
Markus

xineohp 16. Aug 2004 14:57

Re: router fernsteuern
 
@DaFox: ich hab keine Ahnung ob der sowas unterstützt, geschweigedenn wie das ginge :roll:

@glkbkk: ich kann dir nicht sagen, ob die Parameter, die für meinen Router ( SMC Barricade SMC7404BRB ) auch für deinen gelten, aber du kannst es ja ausprobieren und wenn es nicht funzt musst du dir halt den Quellcode der Interface seiten anschaun und nach prüfen was bei dir gilt.

DaFox 16. Aug 2004 15:07

Re: router fernsteuern
 
Zitat:

Zitat von xineohp
@DaFox: ich hab keine Ahnung ob der sowas unterstützt, geschweigedenn wie das ginge :roll:

Konsole öffnen -> telnet [ENTER] -> open [Router-IP] [ENTER]
Wenn eine Verbindung hergestellt werden kann, dann unterstützt Dein Router Telnet. :)

Gruß,
Markus

xineohp 16. Aug 2004 15:14

Re: router fernsteuern
 
hm, scheint leider nicht zu funzen:
"Es konnte keine Verbindung mit dem Host hergestellt werden, auf Port 23: Verbindung fehlgeschlagen"

glkgereon 16. Aug 2004 15:43

Re: router fernsteuern
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich habs ma probiert

ich kriegs nicht hin
ich poste mal meinen versuch, was ist daran falsch?
bei jedem aufruf von httpanfrage gibtsn fehler

was tut die überhaupt?

xineohp 16. Aug 2004 15:57

Re: router fernsteuern
 
Liste der Anhänge anzeigen (Anzahl: 1)
so gehts:

nicht vergessen: in der Inidatei das Passwort anpassen!!!


PS: Nicht wundern, bei jedem Aufruf von IdHttp1.Get bringt Delphi zur Laufzeit eine Fehlermeldung (obwohl der Fehler gewollt ist und auch abgefangen wird). Das ist normal so. einfach OK klicken und F9 (Start) drücken.

glkgereon 16. Aug 2004 16:06

Re: router fernsteuern
 
der zeigt aber offline an, obwohl ich online bin :gruebel:

xineohp 16. Aug 2004 17:26

Re: router fernsteuern
 
dann stimmen die Daten im inifile nicht...

1. hast du das Passwort richtig eingegeben?
2. stimmt die IP des Routers?

3. welchen Router hast du genau?
4. gib mal http://ROUTERIP/cgi-bin/login.exe?pw...ROUTERPASSWORD ein den Explorer ein und schau was er dir anzeigt.

glkgereon 16. Aug 2004 19:22

Re: router fernsteuern
 
pwd und ip stimmen, mein router ist smc barricade 7004 v 2

sorry,smc barricade 7004 abr v.2...

ich nutze jetzt ein freeware-prog dazu, aber wenn doch noch einer sieht worans liegt....

xineohp 16. Aug 2004 19:43

Re: router fernsteuern
 
wie gesagt, die Login-Parameter werden ein bischen anders sein... müsstest du halt mal testen: http://ROUTERIP/cgi-bin/login.exe?pw...ROUTERPASSWORD in den Explorer eingeben und schaun was passiert!

glkgereon 17. Aug 2004 09:05

Re: router fernsteuern
 
ich habs gemacht, da kommt dann eine weisse seite, schwarze schrift

Zitat:

no CGI
kann damit wer was anfangen?

xineohp 17. Aug 2004 12:34

Re: router fernsteuern
 
hm, da ist wohl in der Tat die Loginsite eine andere ... wenn du dein eigenes Steuerprogramm haben willst musst du dir den Quellcode der Loginsite mal genauer anschaun bzw. mir zeigen :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 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