Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Speedport IP dynamisch ändern. (https://www.delphipraxis.net/174072-speedport-ip-dynamisch-aendern.html)

EWeiss 1. Apr 2013 23:21

Speedport IP dynamisch ändern.
 
Wie könnte ich das am dümmsten anstellen die IP am Speedport dynamisch zu ändern?

Ich hab es mal mit Curl versucht indem ich einfach
mit ner Batch Datei den Router neu starte.

Das Problem dabei ist nur das ich in dem fall fremde Dateien verwenden muss.

Alternativ habe ich noch ein Skript für JDownloader 2 auch mit diesen könnte ich den Router neustarten.
Aber auch wieder ein fremdes Programm. (Was Installiert werden muss)
Mir fehlt jetzt die Anbindung wie ich das Skript parsen müsste um zum Erfolg zu kommen.
Code:
[[[HSRC]]]
[[[STEP]]]
[[[REQUEST https="true"]]]
POST /cgi-bin/login.cgi HTTP/1.1
Host: speedport.ip
Referer: https://speedport.ip/
Content-Type: application/x-www-form-urlencoded
login_pwd=1&pws=%%%pass%%%
[[[/REQUEST]]]
[[[/STEP]]]
[[[STEP]]]
[[[REQUEST https="true"]]]
GET /cgi-bin/disconnect.exe HTTP/1.1
Host: %%%routerip%%%
[[[/REQUEST]]]
[[[/STEP]]]
[[[STEP]]]
[[[REQUEST https="true"]]]
GET /cgi-bin/connect.exe HTTP/1.1
Host: %%%routerip%%%
[[[/REQUEST]]]
[[[/STEP]]]
[[[/HSRC]]]

Wie könnte ich das mit eigener Anwendung realisieren
bei der ich 2 Dinge übergeben müsste das Passwort für den Router und den Link zum Neustart des Routers.
Mit Winsock oder Webbrowser in Delphi bin ich nicht so bewandert.

gruss

Sir Rufo 1. Apr 2013 23:43

AW: Speedport IP dynamisch ändern.
 
Würde ich mit den Indys
Delphi-Quellcode:
TIdHttp
versuchen (auch wenn du am liebsten NonVCL schreibst ;))
Alternativ gäbe es noch http://synapse.ararat.cz/doku.php/

Das Skript von JDownloader beinhaltet ja schon alle Aufrufe, die müsstest du fast 1:1 so verwenden können

Für beide benötigst du in jedem Fall (da https) die OpenSSL dlls (also eigentlich auch was externes)

EWeiss 2. Apr 2013 00:05

AW: Speedport IP dynamisch ändern.
 
Danke für die Infos.
Da ich mich in VB was Controls angeht etwas besser auskenne hab ich einen kleinen Test gemacht.

Code:
    Dim URL As String
    URL = "http://" & Text1.Text & "/cgi-bin/disconnect.exe"
    WebBrowser1.Navigate2 URL
Damit lade ich zumindest schon mal die Konfigurationsseite des Speedport in den versteckten Browser.
Das Problem ist nur das er mir einen Fehler meldet da das interne Skript das Passwort erwartet
bevor ich den Router neustarten kann.

Starte ich die Konfiguration von Hand gebe das Passwort ein
dann läuft alles also der Router startet dann neu mit meinem Test Projekt.

Gibt es einen weg das Passwort vorher zu übergeben?
Bevor ich disconnect.exe aufrufe?

Mist Router mit FritzBox ist das kein Problem.

Zitat:

Für beide benötigst du in jedem Fall (da https) die OpenSSL dlls
Jup auch für Curl ;)
Das Problem dabei jeder macht sein eigenes Ding mit den Libs.

gruss

Sir Rufo 2. Apr 2013 00:12

AW: Speedport IP dynamisch ändern.
 
Du musst zunächst per POST das Kennwort senden (so wie im JDownloader-Skript)

Hmmm, wenn du ein Browserfenster verwendest, dann müsstest du die Login-Seite aufrufen, das Kennwort in das Feld eintragen und das Formular abschicken.

EWeiss 2. Apr 2013 00:19

AW: Speedport IP dynamisch ändern.
 
Zitat:

Zitat von Sir Rufo (Beitrag 1209647)
Du musst zunächst per POST das Kennwort senden (so wie im JDownloader-Skript)

Hmmm, wenn du ein Browserfenster verwendest, dann müsstest du die Login-Seite aufrufen, das Kennwort in das Feld eintragen und das Formular abschicken.

Du musst zunächst per POST opss.. zu wenig Erfahrung :oops:

Ja wenn ich das so mache geht es auch also Manuell im IE
Aus dem Programm wo ich auch einen Browser verwende nicht da kommt der User nicht dran
da dieses Fenster versteckt ist.
Das Login-Fenster ist ja
http://speedport.ip

Es soll ja auch alles mit einem klick auf einen Button erledigt sein.

Muss mich dann wohl oder übel doch mal schlau machen wie ich das unter Delphi
bewerkstelligt bekomme. Paar Tipps hab ich ja schon ;)

gruss

Sir Rufo 2. Apr 2013 00:26

AW: Speedport IP dynamisch ändern.
 
Das mit dem Eintragen von Daten in ein Webformular und abschicken geht auch per Code und somit auch mit verstecktem Fenster.

http://www.delphipraxis.net/171367-t...usfuellen.html

EWeiss 2. Apr 2013 00:32

AW: Speedport IP dynamisch ändern.
 
Zitat:

Zitat von Sir Rufo (Beitrag 1209652)
Das mit dem Eintragen von Daten in ein Webformular und abschicken geht auch per Code und somit auch mit verstecktem Fenster.

http://www.delphipraxis.net/171367-t...usfuellen.html

Ahh supi Danke.
Denke das hilft mir schon mal weiter.

Mein momentaner Skriptfehler ist..
Die Eigenschaft Childnodes eines undefinierten oder Nullverweises kann nicht abgerufen werden.

Wenn ich den Code mal durchgehe wird sich eine Lösung finden lassen.
Man lernt nie aus :)

gruss

EWeiss 2. Apr 2013 00:44

AW: Speedport IP dynamisch ändern.
 
Dein Analyzer Projekt gibt mir nun aus
Zitat:

2 Elemente gefunden
===== 0 =====
<INPUT type=hidden value=0 name=login_pwd>
===== 1 =====
<INPUT class=stylepwd maxLength=12 size=12 type=password value="" name=pws>
Kannst mir den Quelltext zur Verfügung stellen? Generics dürften unter D2010 ja kein Problem sein.

Vielleicht könnte ich drauf aufbauen. MSHTML_Tool.
Wäre etwas einfacher für mich ;)

gruss

EWeiss 2. Apr 2013 03:41

AW: Speedport IP dynamisch ändern.
 
Habe es jetzt soweit das ich das Passwort automatisch eingeben kann.
Hoffe das ist so richtig.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  ChildElement: OleVariant;
  URL: OleVariant;

begin
  if edpasswort.Text = '' then
    exit;

  if edNewIp.Text <> '' then
    edOldIP.Text := edNewIp.Text;

  edNewIp.Text := '';

  // Webseite aufrufen in Offline Modus
  Wb.Navigate ('https://speedport.ip');
  // Warte bis Webseite geladen
  WaitForBrowser(Wb, 50);

  if not Assigned(WB.Document) then
    Exit;

  ChildElement := Wb.OleObject.document.forms.item(0);
  ChildElement.Elements.item('login_pwd').value := 0;

  if not VarIsDispatchObject(ChildElement) then
   raise Exception.CreateFmt('Web-Formalar %s nicht gefunden', ['input']);

  ChildElement.Elements.Item('pws').value := edpasswort.Text;

  SubmitWebForm(ChildElement);

  // Router beenden
  URL := 'http://' + edSpeedportHost.Text + '/cgi-bin/disconnect.exe';
  wb.Navigate2(URL);

  // etwas längere Pause das kann dauern bis die IP
  // aktualisiert wurde
  WaitForBrowser(Wb, 100);

  // Router neustarten
  URL := 'http://' + edSpeedportHost.Text + '/cgi-bin/connect.exe';
  Wb.Navigate2(URL);

  btnNewIP.Enabled := True;

end;
Habe aber immer noch das Problem mit dem Script Fehler.
Seltsamer weise tritt das bei dir im MSHTML_Tools nicht auf
Würde mich mal interessieren warum nicht bzw. was ich da falsch mache.

gruss

Sir Rufo 2. Apr 2013 10:33

AW: Speedport IP dynamisch ändern.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sodele, ich hab dann mal die Quellen raus gekramt :)

Bei Fragen einfach die Hand heben :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz