Fritzbox 7270/Wlan Repeater Scripts

Hallo Rainer,

die Lösung mit dem Disconnect funktioniert ja recht gut und falls dir zu dem anderen Thema noch ein „Geistesblitz“ kommt dann lass es uns wissen.

Gruß
m-f-a

Die funktioniert einwandfrei, zumal ich damit meine Sicherung der Anrufliste habe.
Was anderes wird es von meiner Seite nicht geben.

extension für 2.2 im ersten Post hinzugefügt!

Hallo,
hat schon mal jemand die Anrufliste auf dem IPhone dargestellt?
Im Webfront ist es super, aber beim IPhone ist die Formatierung nicht optimal.
Kann man da was ändern?

cu uwe

Hat keiner mit dem IPhone probiert?

cu uwe

Moin uwe,

Deine Wahrnehmung kann ich bestätigen.
Nutzte auf dem Ipod Touch allerdings auch die Retro Versionen.
Und da sieht die Anrufliste doch recht gut aus.

Gruß Stefan

Ich habe keins :smiley: Wie sieht es denn aus.

Upps, :smiley:

da hatte ich doch wohl gerade das falsche Bild erwischt.:wink:
Anbei nun die Darstellung der Anrufliste auf dem Ipod

Gruß Stefan

Hallo Leute,

tolle Skripte hier in dieser Thread!
Ich habe da mal eine Frage zu der Rückwärtssuche: Wenn klicktel kein direktes Ergebnis findet (z.B. weil die Nummer nicht verzeichnet ist), nimmt es die letzten Ziffern der übergebenen Rufnummer so lange weg, bis ein Treffer in der Datenbank vorhanden ist. Es steht dann der Satz „Die Ergebnisse wurden durch Verkürzung der eingegebenen Rufnummer gefunden.“
Kann man das irgendwie rausfiltern und dann den Treffer nicht herausgeben? Bei uns im Ort haben viele den gleichen Rufnummernbeginn und dann kommt da ziemlich viel Blödsinn heraus…:confused:
Ansonsten: Geniale Idee!!

Joachim

Nachtrag: Ich habe den Code von sysrunetwas angepasst und somit kann man alternativ die Suche über „Das Örtliche“ nutzen:

function SucheNummer2($Rufnummer) // via Das Örtliche
{
$url="http://www.dasoertliche.de/Controller";
$query=array(
    "form_name"=>"search_inv",
    "ph"=>$Rufnummer
);
$data=http_post_fields($url,$query);

if(preg_match('/na: "(.*)"/', $data, $result))
{    // Haben wir ein Ergebniss?
    $Name=$result[1];
}
else
{
    $Name=$Rufnummer;
}
//echo $name;
SetValue(17270 /*[Sonstige Daten\Fritz!Box\Eingehender Anruf]*/ , "am ".datetime. " von ".$Name);
SetValue(57325 /*[Sonstige Daten\Fritz!Box\Letzter Anruf]*/ , "am ".datetime. " von ".$Name);
}

Hallo Obicom,

kannst Du mir etwas näher erklären wie Du diese Variable gestaltet hast? Ich habe einen String genommen, der Wert der Daten wird auch in der Konsole angezeigt, aber nicht, wenn ich im Webfront darauf klicke, irgendetwas ist noch falsch bei mir…

Joachim

Anzeige der Seite DSL.

<?
$fritzbox_ip = 'fritz.box';
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$filename    = IPS_GetKernelDir()."\\webfront\\user\\Fritzbox\\DslDetails.txt";// anpassen
$password    = 'xxxxxx';

$ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
curl_close($ch);
$session_status_simplexml = simplexml_load_string($login);


if ($session_status_simplexml->iswriteaccess == 1)
{
   $SID = $session_status_simplexml->SID;
}
else
{
   $challenge = $session_status_simplexml->Challenge;
   $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));
   $login = array('getpage' => $fritzseite, 'login:command/response' => $response);
   $sendlogin = http_post_fields($fritzgui, $login);
   preg_match('@<input type="hidden" name="sid" value="([A-Fa-f0-9]{16})" id="uiPostSid">@i', $sendlogin, $matches);
   if (isset($matches[1]) && $matches[1] != '0000000000000000')
   {
      $SID = $matches[1];
   }
   else
   {
      echo "Fehler: Login fehlgeschlagen";
      return;
    }
}

$dsl = array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'internet', 'var:pagename' => 'adsl');
$getDslDetails = http_post_fields($fritzgui, $dsl);

$fileHandle = @fopen($filename, 'wb+');
fwrite($fileHandle, $getDslDetails);
fclose($fileHandle);

$lines = file("../webfront/user/Fritzbox/DslDetails.txt");

for ($i = 1706; $i <= 1840; $i++)
{
    $ausgabe = $lines[$i];
    $ausgabe = str_replace("ä", "ä", $ausgabe);
    $ausgabe = str_replace('<table id="t1" class="tborder" width="600" style="margin: auto;">', '<table border="1" width="990" style="margin: 5;">', $ausgabe);
    $ausgabe = str_replace('<table id="t4" class="tborder" width="600" style="margin: auto;">', '<table border="1" width="990" style="margin: 5;">', $ausgabe);
    echo $ausgabe;
}

?>

Wie immer, der Hammer Rainer.
Funktioniert auf Anhieb und ich bin über die Ausgabe schier entzückt.
Mal wieder Danke für ein neues Fritz.Box Skript.
Mal schauen, was die im laufe der zeit noch so alles dazu einfällt.
Z.B. könnte ich mir in diesem Sinne die Fritz.Box Übersichtsseite vorstellen, wo alle wichtigen Informationen zu DSL, VoIP, DynDNS usw. zusammen angezeigt werden.

zum auslesen der Onlinezeit.

mit print_r($lines); kann man sich die benötigte Zeile raussuchen und eintragen.

<?
$fritzbox_ip = 'fritz.box';
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$filename    = IPS_GetKernelDir()."\\webfront\\user\\Fritzbox\\Kindersicherung.txt";// anpassen
$password    = 'xxxxx'; //PW eingeben

$ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
curl_close($ch);
$session_status_simplexml = simplexml_load_string($login);


if ($session_status_simplexml->iswriteaccess == 1)
{
   $SID = $session_status_simplexml->SID;
}
else
{
   $challenge = $session_status_simplexml->Challenge;
   $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));
   $login = array('getpage' => $fritzseite, 'login:command/response' => $response);
   $sendlogin = http_post_fields($fritzgui, $login);
   preg_match('@<input type="hidden" name="sid" value="([A-Fa-f0-9]{16})" id="uiPostSid">@i', $sendlogin, $matches);
   if (isset($matches[1]) && $matches[1] != '0000000000000000')
   {
      $SID = $matches[1];
   }
   else
   {
      echo "Fehler: Login fehlgeschlagen";
      return;
    }
}

// Kindersicherung
$newlist = array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'internet', 'var:pagename' => 'userlist');
$getnewlist = http_post_fields($fritzgui, $newlist);

$fileHandle = @fopen($filename, 'wb+');
fwrite($fileHandle, $getnewlist);
fclose($fileHandle);

$lines = file("../webfront/user/Fritzbox/Kindersicherung.txt");
//print_r($lines);
$franzi = $lines['1729'];
$franzi = str_replace("theList.push({listtype:'user',id:", '', $franzi);
$ausgabe1 = explode('"', $franzi);
// Ausgabe auch in Variable möglich z.B. SetValue(12345, $ausgabe1[5]); usw......
$ip1 = $ausgabe1[5];
$name1 = $ausgabe1[7];
$time1 = $ausgabe1[9];

$maxi = $lines['1733'];
$maxi = str_replace("theList.push({listtype:'user',id:", '', $maxi);
$ausgabe2 = explode('"', $maxi);
// Ausgabe auch in Variable möglich
$ip2 = $ausgabe2[5];
$name2 = $ausgabe2[7];
$time2 = $ausgabe2[9];
echo "<table border='1' width='990' style='text-align:left; margin: 5;'><tr><th>IP-Adresse</th><th>Name</th><th>TimeToday</th></tr><tr><td>$ip1</td><td>$name1</td><td>$time1</td></tr><tr><td>$ip2</td><td>$name2</td><td>$time2</td></tr></table>";

?>

Danke Rainer. Jetzt habe ich es auch verstanden :slight_smile: und kann sogar die Maximalzeit für den aktuellen Tag mit anzeigen.

Hier noch ein Skript für die Zugangszeiten

$fritzbox_ip = 'fritz.box';
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$filename    = IPS_GetKernelDir()."\\webfront\\user\\Fritzbox\\Zugangszeiten-Franzi.txt";// anpassen
$password    = '*******'; //PW eingeben

$ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
curl_close($ch);
$session_status_simplexml = simplexml_load_string($login);


if ($session_status_simplexml->iswriteaccess == 1)
{
   $SID = $session_status_simplexml->SID;
}
else
{
   $challenge = $session_status_simplexml->Challenge;
   $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));
   $login = array('getpage' => $fritzseite, 'login:command/response' => $response);
   $sendlogin = http_post_fields($fritzgui, $login);
   preg_match('@<input type="hidden" name="sid" value="([A-Fa-f0-9]{16})" id="uiPostSid">@i', $sendlogin, $matches);
   if (isset($matches[1]) && $matches[1] != '0000000000000000')
   {
      $SID = $matches[1];
   }
   else
   {
      echo "Fehler: Login fehlgeschlagen";
      return;
    }
}

$newlist = array('getpage' => $fritzseite, 'sid' => $SID, 'var:menu' => 'internet', 'var:pagename' => 'useradd2','var:devid' => 'landevice1', 'var:LANAutoUserName' => '192.168.0.105','var:userid' => 'user1');

$getnewlist = http_post_fields($fritzgui, $newlist);

$fileHandle = @fopen($filename, 'wb+');
fwrite($fileHandle, $getnewlist);
fclose($fileHandle);

$lines = file("../webfront/user/Fritzbox/Zugangszeiten-Franzi.txt");

$franzi = htmlspecialchars($lines['1843'],ENT_QUOTES); //Zeilennummer anpassen
$ausgabe = explode(';', $franzi);
$starttime_MO_DO = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$starttime_MO_DO."
";

$franzi = htmlspecialchars($lines['1844'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$endtime_MO_DO = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$endtime_MO_DO."
";

$franzi = htmlspecialchars($lines['1845'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$time_MO_DO = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$time_MO_DO."
";

$franzi = htmlspecialchars($lines['1847'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$starttime_FR = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$starttime_FR."
";

$franzi = htmlspecialchars($lines['1848'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$endtime_FR = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$endtime_FR."
";

$franzi = htmlspecialchars($lines['1849'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$time_FR = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$time_FR."
";

$franzi = htmlspecialchars($lines['1851'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$starttime_SA = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$starttime_SA."
";

$franzi = htmlspecialchars($lines['1852'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$endtime_SA = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$endtime_SA."
";

$franzi = htmlspecialchars($lines['1853'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$time_SA = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$time_SA."
";

$franzi = htmlspecialchars($lines['1855'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$starttime_SO = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$starttime_SO."
";

$franzi = htmlspecialchars($lines['1856'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$endtime_SO = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$endtime_SO."
";

$franzi = htmlspecialchars($lines['1857'],ENT_QUOTES); //Zeilennummer anpassen

$ausgabe = explode(';', $franzi);
$time_SO = substr($ausgabe[6],0,5);
echo $ausgabe[6]." ".$time_SO."
";



Nur zur Info, wenn man die ganzen SIDs rausschmeisst und einen login:command/password macht klappts auch mit der alten Firmware (getestet mit FritzFon 7150).

Dafür gibt es ja auch andere Scripts und nicht diese hier!

Hi …

nachdem mein Projekt „Automatische Anwesenheitserkennung“ auf Basis von BlueTooth-Polling an der Tatsache gescheitert ist, dass es für Windows Server 2008 R2 keinen Bluetooth-Stack gibt, würde ich gerne diesen Thread noch mal dazu verwenden, um euch um Skript-Vorschläge zu bitten, da ich immer noch nicht richtig durchblicke …

Die FritzBox 7270 führt eine Liste bereits angemeldeter und derzeit aktiver WLAN-Verbindungen (siehe beiliegende Graphik). Diese könnte man ggf. zur automatischen Erkennung von Anwesenheiten benutzen, wenn man auswertet, ob sich ein WLAN-Gerät (SmartPhone) im Empfangsbereich befindet. Das Skript würde ich gerne beisteuern, ich bräuchte nur jemanden, der mir das Skript zum Auslesen dieser Liste erzeugt. Benötigt würde die MAC-Adresse des WLAN-Gerätes und der Status (letzte Spalte). Ich danke euch schon mal recht herzlich für eure Kompetenz :wink:

Ich kann mir das mal anschauen, allerdings bist Du dann ständig am pollen auf der Box da die Box ja nichts selbstständig sendet.

Hi Rainer,

ich denke, das Pollen könnte man auf 5 Minuten beschränken, damit kann ich leben. Die Möglichkeit, sich manuell ein- uns auszubuchen, lasse ich weiterhin bestehen. Es soll eigentlich dafür sein, dass jemand es mal vergisst … und dadurch z.B. die Alarmfunktion nicht aktiviert wird.

Danke schon mal für deine Hilfe …