Delphi-PRAXiS
Seite 1 von 2  1 2      

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 14: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 14: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 15:11

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

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

xineohp 16. Aug 2004 15: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 15: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 15: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 15: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 15: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 15: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 16: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


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