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

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'] = '';
 
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
 
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/homea...23&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
 
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_uploa...ttstellen/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
 
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).
 
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
 
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
 
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:
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:
upnpc gibt es glücklicherweise auch für Windows ... Aufruf der gleiche - muss das jetzt mal verscripten ;) Vielen Dank!!!
 
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:
Verstehe ich das richtig,
du möchtest das, was unter Internet->Filter->Kindersicherung->Zugangsprofil in der GUI editierbar ist per Script ändern?

Black Senator
 
@Black Senator

ja genau entweder über Internet->Filter->Kindersicherung->Zugangsprofil oder alternativ über WLAN->Filter->Funknetz->bearbeiten->Zugangsprofil
 
Zuletzt bearbeitet von einem Moderator:
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:
@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:
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?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.