Fritz!Box API für PHP (inkl. Login-Sessions)

domizilit

Neuer User
Mitglied seit
24 Jan 2014
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo,

Ich konnte das Script "fritzbox_guestwlan_on_off.php" für "FRITZ!OS:06.50" wieder beleben. Vielleicht interessiert es jemanden:

Zeile 118: $formfields['btnSave'] = '';

ersetzt durch: $formfields['apply'] = '';
 

Optimist219

Neuer User
Mitglied seit
28 Jul 2017
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
Hallo domizilit,

vielen Dank. Habe nun etwas länger versucht das Skript zum Laufen zu bringen. Als ich bereits aufgeben wollte, habe ich deine Antwort gelesen. Nun funktioniert es.

Und auch vielen Dank an blauertee, das Problem mit der Verschlüsselung hatte ich auch. Auch deine Antwort hat mir sehr geholfen.

Gruß
Optimist
 

Henrik1234

Neuer User
Mitglied seit
18 Nov 2017
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

ich bin nun schon seid geraumer Zeit auf der Suche nach einer Lösung zum ansteuern meiner Fritzbox über einen Raspberry pi. Ich möchte die beiden folgenden Aufgaben realsieren:
1) Fritz!Dect einschalten
2) Wlan der Fritz.Box ausschalten

Zu 1) habe ich bereits ein Bash Skript gefunden sowie den kompletten String der URL Request :
https://fritz.box/webservices/homeautoswitch.lua?ain=012340000123&switchcmd=setswitchon&sid=9c977765016899f8

Wie muss ich die oben stehende URL anpassen sodass, das Wlan ausgeschaltet wird? Ich finde dazu einfach nichts im Internet.

Diesen String würde ich dann einfach in meine bestehende Bash Datei integrieren.


Gruß
Henrik
 

Henrik1234

Neuer User
Mitglied seit
18 Nov 2017
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hi PeterPawn,

anhand der beiden folgendne Dokumente auf der Seite konnte ich mir ja bereits ein Skript basteln welches automatisch die Fritz Dect schaltet:
https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf
https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AVM_Technical_Note_-_Session_ID.pdf

Leider ist in diesen beiden Dokumenten nicht beschrieben wie man das WLAN Ein- bzw. Ausschalten kann. Die übrigen Dokumente welche auf der Seite zu finden sind, verstehe ich noch nicht einmal im Ansatz. Selbst wenn ich versuche sie mir anhand meines Skriptes herzuleiten. Daher brauche ich einen kleinen Denkanstoß ;)

Gruß
Henrik
 

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
12,250
Punkte für Reaktionen
778
Punkte
113
Irgendwo gibt es ein Interface, was auch das Ein- und Ausschalten des WLAN ermöglicht ... es ist (aus dem Kopf) irgendwas mit "wlanconfigSCPD.pdf" (oder so ähnlich) und da sollte es eine Funktion zum generellen Abschalten (bzw. für das Gegenteil) geben.

Da das aber ein SOAP-Request sein muß, ist es "mit einer Zeile" nicht direkt getan (nicht mal in PHP).
 

Black Senator

Mitglied
Mitglied seit
13 Jul 2007
Beiträge
224
Punkte für Reaktionen
19
Punkte
18

Black Senator

Mitglied
Mitglied seit
13 Jul 2007
Beiträge
224
Punkte für Reaktionen
19
Punkte
18
Hallo Henrik1234 und brenner23,

für´s DECT schalten habe ich ´mal als kleine Fingerübung folgendes Script geschrieben.
Voraussetzung: auf alle Fälle php-soap.
Wenn das gegeben ist, dann in musst Du nur in Zeile 60 dein PW einsetzen und überlegen welchen Aktor du schalten willst (Index-Nr. in Zeile 56 einsetzen):

Code:
<?php


class fb_soap

{

    private $ip;
    private $user;
    private $password;

   
    public function __construct($password = false, $ip = 'fritz.box', $user = 'dslf-config') {

        $this->ip       = $ip;
        $this->user     = $user;
        $this->password = $password;
    }

   
    public function getSOAPclient() {
   
            $client = new \SoapClient(
                null,
                array(
                    'location'   => "http://".$this->ip.":49000/upnp/control/x_homeauto",
                    'uri'        => "urn:dslforum-org:service:X_AVM-DE_Homeauto:1",
                    'noroot'     => true,
                    'login'      => $this->user,
                    'password'   => $this->password,
                    'trace'      => true,
                    'exceptions' => true
                )
            );
        return $client;
    }

   
    public function getGenericDeviceInfos ($id) {
        $client = $this->getSoapClient();
        $result = $client->GetGenericDeviceInfos (new \SoapParam($id,"NewIndex"));
        return $result;
    }
   
   
    public function setSwitch ($ain, $state = "TOGGLE") {  // optional parameters are: OFF, ON, TOGGLE, UNDEFINED    
        $client = $this->getSoapClient();
        $client->SetSwitch (new \SoapParam($ain,"NewAIN"), new \SoapParam($state,"NewSwitchState"));
    }
   
}


$switch = new fb_soap ('PASSWORT');
   
    $result = $switch->getGenericDeviceInfos (1);
    PHP_EOL;
    echo "Generic Device Infos:" . PHP_EOL;
    print_r ($result) . PHP_EOL;

    $switch->setSwitch ($result['NewAIN']);
   
    $result = $switch->getGenericDeviceInfos (1);
    PHP_EOL;
    echo 'Schaltstatus für ' . $result['NewDeviceName'] . ' ist: ' . $result['NewSwitchState'] . PHP_EOL;

?>
Viel Spaß damit

Black Senator
 

Wulfman_CGN

Neuer User
Mitglied seit
5 Mrz 2016
Beiträge
16
Punkte für Reaktionen
1
Punkte
3
Hey,

ich suche aktuell eine Lösung wie ich eine eingerichtete Port-Weiterleitung (Port 80 zu meinem Webserver) per Script aktivieren/deaktivieren kann. Hintergrund: mein Webserver läuft auf HTTPS/443 mit Letsencrypt-Zertfikat. Zum aktualisieren dieses Zertifikates (alle 90 Tage) muss Port 80 offen sein. Das Script (Windows) sieht dann so aus das ich
* die Portweiterleitung auf Port 80 aktivieren muss (fehlt) ... ich könnte per wget eine php-Seite mit dem php-Script aufrufen
* die Zertifikatsaktualisierung anstoßen (vorhanden)
* den Apache neu starten (damit die neuen Zertifikate aktiviert werden; machbar)
* Portweiterleitung auf Port 80 wieder deaktivieren (fehlt)

Genutzt wird eine Fritz!Box 7590 / 7.01, Windows, Apache, php5

Ist hier was möglich?

Grüße
 

Wulfman_CGN

Neuer User
Mitglied seit
5 Mrz 2016
Beiträge
16
Punkte für Reaktionen
1
Punkte
3
ADD? füge ich damit nicht ein Portmapping zu? Ich hab den Port ja bereits gemappt. Port 80 TCP auf SERVER-LOKAL Port 80. Der ist nur deaktiviert - ich aktivere den alle 3 Monate einmal händisch, mach mein Update und deaktiviere.
 
Zuletzt bearbeitet:

fxb

Neuer User
Mitglied seit
26 Feb 2011
Beiträge
29
Punkte für Reaktionen
1
Punkte
3
Vollzitat von darüber entfernt
Auch wenn es nicht ganz zur Überschrift passt, aber das kann man auch einfach mit einem Skript lösen.

Code:
#!/bin/bash
################################################
# Update letsencrypt
# linux package must install: apt install miniupnpc

upnpc -a 192.168.178.124 80 80 TCP (IP-Adr. local Server)
upnpc -a 192.168.178.124 443 443 TCP
/etc/letsencrypt/./letsencrypt-auto -c /etc/letsencrypt/cli.ini -d <Domain.name> --apache
#/etc/letsencrypt/./letsencrypt-auto -c /etc/letsencrypt/cli.ini -d <Domain.name> --nginx
sleep 1
upnpc -d 80 TCP
upnpc -d 443 TCP
exit
Als Datei abspeichern, mit chmod +x ausführbar machen und mittels Cronjob zu bestimmten Zeiten dann aufrufen. Ggf. noch die Pfade anpassen.

So habe ich das gelöst u. läuft prima.

Noch vergessen: In der FritzBox muss natürlich für die IP Adr., wo das Skript läuft, die automatische Portfreigabe aktiviert sein, dann läuft das alles automatisch ab.

//edit by stoney: [CODE] TAG [/CODE] gesetzt
 
Zuletzt bearbeitet:

Wulfman_CGN

Neuer User
Mitglied seit
5 Mrz 2016
Beiträge
16
Punkte für Reaktionen
1
Punkte
3
upnpc gibt es glücklicherweise auch für Windows ... Aufruf der gleiche - muss das jetzt mal verscripten ;) Vielen Dank!!!
 

Flekay

Neuer User
Mitglied seit
28 Jul 2019
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,
könnte mir jemand sagen ob es möglich ist das Zugangsprofil eines Gerätes zu ändern?

so in etwa:
/net/edit_device.lua?sid=<SID>&dev=landevice3273&kisi_profile=filtprof4

bzw.
/internet/kids_userlist.lua?sid=<SID>&profile:landevice3273=filtprof4
 
Zuletzt bearbeitet:

Black Senator

Mitglied
Mitglied seit
13 Jul 2007
Beiträge
224
Punkte für Reaktionen
19
Punkte
18
Verstehe ich das richtig,
du möchtest das, was unter Internet->Filter->Kindersicherung->Zugangsprofil in der GUI editierbar ist per Script ändern?

Black Senator
 

Flekay

Neuer User
Mitglied seit
28 Jul 2019
Beiträge
2
Punkte für Reaktionen
0
Punkte
1
@Black Senator

ja genau entweder über Internet->Filter->Kindersicherung->Zugangsprofil oder alternativ über WLAN->Filter->Funknetz->bearbeiten->Zugangsprofil
 
Zuletzt bearbeitet von einem Moderator:

Black Senator

Mitglied
Mitglied seit
13 Jul 2007
Beiträge
224
Punkte für Reaktionen
19
Punkte
18
Spannend,
SOAP-Handling dafür gibt es wohl nicht - jedenfalls habe ich nix gefunden.

Ich versuche mir das gerade zu erschließen:
Was ich gefunden habe bzw. zuordnen konnte ist:
Code:
filtprof1 = Standard
filtprof2 = Gast
filtprof3 = Unbeschränkt
filtprof4 = Gesperrt
Aber wie die Geräte profile:user6[nnn], bzw. profile:landevice[n*] und die eigenen Zugangsprofile filtprof5[nnn] sich generisch zuordnen bzw. identifizieren lassen weiß ich noch nicht.
Zuminest wäre das hilfreich, um testweise http-Requests abzuschicken.

Als API würde ich das auch mit postFile() der aktuellen von andig machen und probieren, ob das mit einem Multipart-Request funktioniert. Ist aber nicht so meine starke Seite... eher so trail & error
 
Zuletzt bearbeitet:

Black Senator

Mitglied
Mitglied seit
13 Jul 2007
Beiträge
224
Punkte für Reaktionen
19
Punkte
18
@Flekay

schau mal hier

Das wesentliche Coding steckt in der /src/functions.php und der /src/FritzBox/Api.php

Grüße & Spaß damit

Black Senator
 
Zuletzt bearbeitet:

tube2002

Neuer User
Mitglied seit
2 Apr 2006
Beiträge
81
Punkte für Reaktionen
0
Punkte
6
Hey, weiß jemand zufällig, ob ich die MAC Adresse des angeschlossenen Geräts an einem bestimmten LAN Port (z.B. Port 3) auslegen kann?
 

3CX PBX - GRATIS
Linux / Win / Cloud

Neueste Beiträge

Statistik des Forums

Themen
233,165
Beiträge
2,030,859
Mitglieder
351,561
Neuestes Mitglied
real1234567