bumaas
7. Dezember 2018 um 12:53
1
Hallo,
ich setze zum kurzen Anklingeln einer Nebenstelle folgendes Skript ein:
<?php
declare(strict_types=1);
require_once '_Global_functions.ips.php';
$FritzBox = IP_FRITZBOX;
$Password = FRITZBOX_PWD;
$ch = curl_init('http://' . $FritzBox . '/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);
if ($session_status_simplexml->SID !== '0000000000000000') {
$SID = $session_status_simplexml->SID;
} else {
$challenge = $session_status_simplexml->Challenge;
$response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $Password, 'UCS-2LE', 'UTF-8'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "response={$response}&page=/login_sid.lua");
$sendlogin = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($sendlogin);
var_dump($session_status_simplexml);
if ($session_status_simplexml->SID !== '0000000000000000') {
$SID = $session_status_simplexml->SID;
} else {
IPSLogger_Wrn(basename(__FILE__, '.ips.php'), 'Login fehlgeschlagen');
return;
}
}
curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&telcfg:command/Dial=**612"); // Simones interne Nummer
curl_exec($ch);
sleep(6);
curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&telcfg:command/Dial=''");
curl_exec($ch);
curl_close($ch);
Nun hat mein Provider (Unitymedia) vorgestern meine Fritzbox auf 7.01 aktualisiert und seitdem klappt die Anmeldung nicht mehr („Login fehlgeschlagen“)
Hat jemand für mich einen Tipp, wie ich die Anmeldeprozedur ergänzen/ändern muss?
Viele Grüße
Burkhard
Bayaro
7. Dezember 2018 um 18:04
2
EDIT 98: Einloggen kann ich mich jetzt erfolgreich (FritzOS 7.01) und bekomme eine SID, aber keine Ahnung, wie ich danach „was anstellen kann“
Hab bisher alles über SOAP gemacht.
EDIT 99: Musst du dich vlt. bei der FritzBox mittlerweile auch mit User + PW anmelden und nicht mehr nur mit PW? Wie ist das denn, wenn du die Webseite der FritzBox aufrufst? Nur PW Eingabe?
Login funktioniert bei mir mit User + PW wie folgt:
<?
$fritzbox_ip = 'xxxxxxxxxxx';
$username = 'xxxxxxx';
$password = 'xxxxxxxx';
$ch = curl_init($fritzbox_ip.'/login_sid.lua?username='.$username);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);
if ($session_status_simplexml->SID != '0000000000000000')
{
$SID = $session_status_simplexml->SID;
}
else
{
$challenge = $session_status_simplexml->Challenge;
$response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=".$username."&response={$response}&page=/login_sid.lua");
$sendlogin = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($sendlogin);
if ($session_status_simplexml->SID != '0000000000000000')
{
$SID = $session_status_simplexml->SID;
}
else
{
echo "Fehler: Login fehlgeschlagen";
return;
}
}
curl_close($ch);
echo "SID = ".$SID;
bumaas
8. Dezember 2018 um 13:15
3
Besten Dank. Das war der richtige Stupser Der User fehlte.
Auch hat sich wohl die Schnittstelle zum Wählen geändert.
Mit folgendem Skript funktioniert es nun:
<?php
declare(strict_types=1);
require_once '_Global_functions.ips.php';
//Daten anpassen
$FritzBox = IP_FRITZBOX;
$Username = FRITZBOX_USER;
$Password = FRITZBOX_PWD;
$dialNumber = '**611'; //Simone interne Nummer
//$ch = curl_init('http://' . $FritzBox . '/login_sid.lua?username=' . $Username);
$ch = curl_init('http://' . $FritzBox . '/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);
if ((string) $session_status_simplexml->SID !== '0000000000000000') {
$SID = $session_status_simplexml->SID;
} else {
$challenge = $session_status_simplexml->Challenge;
$response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $Password, 'UCS-2LE', 'UTF-8'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=$Username&response={$response}");
$sendlogin = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($sendlogin);
if ((string) $session_status_simplexml->SID !== '0000000000000000') {
$SID = $session_status_simplexml->SID;
} else {
IPSLogger_Wrn(basename(__FILE__, '.ips.php'), 'Login fehlgeschlagen');
return;
}
}
curl_close($ch);
$dial = file_get_contents("http://$FritzBox/fon_num/dial_fonbook.lua?sid=$SID&dial=$dialNumber");
sleep(6);
$hangup = file_get_contents("http://$FritzBox/fon_num/dial_fonbook.lua?sid=$SID&hangup=");
$logout = file_get_contents("http://$FritzBox/fon_num/dial_fonbook.lua?logout=1&sid=$SID");