Fritz box

Hallo zusammen ich habe ein Problem ich suche das richtige Skript oder besser den Passenden Befehl um bei meiner Fritzbox die Rufumleitung ein zu schalten.
Leider sind die Befehle nicht bei allen Boxen und Typen gleich darum frage ich einfach mal ob es schon jemand hinbekommen hat bei mein Typ

Fritz Box Fon Wlan 7390 (UI)
Firmware: Fritz!OS 05.21

Vielen Dank

Torsten

Hallo Torsten,

hier ein Script womit die Umschaltung in der 7390 funktioniert. Allerdings wird im WebFront der Status nicht geschaltet. Habe noch keine Zeit gehabt es an zupassen.

<?
if ($IPS_SENDER == "WebFront")
{
    $fritzbox_ip = '192.168.178.1';
    $fritzgui    = 'http://192.168.178.1/cgi-bin/webcm';
    $fritzseite  = '../html/de/menus/menu2.html';
    $password    = 'xxxxx';
    $ein         = '1';
    $aus         = '0';
    $Eddi = '01xxxxxx';
    $Lxxx = '01xxxxxxx';

    $ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $login = curl_exec($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"));
    curl_setopt($ch, CURLOPT_POSTFIELDS, "login:command/response={$response}&getpage=../html/de/menus/menu2.html");
    preg_match('/name="sid" value="([0-9a-f]*)"/', curl_exec($ch), $matches);
   if(isset($matches[1]) && $matches[1] != '0000000000000000')
   {
      $SID = $matches[1];
   }
   else
   {
      echo "Fehler: Login fehlgeschlagen";
      return;
    }
}

    switch($IPS_VALUE)
    {
       case 0:
            curl_setopt($ch, CURLOPT_POSTFIELDS, "getpage={$fritzseite}&sid={$SID}&var:pagename=rulall&telcfg:settings/Diversity0/Active={$aus}");
            curl_exec($ch);
		 break;

       case 1:
            curl_setopt($ch, CURLOPT_POSTFIELDS, "getpage={$fritzseite}&sid={$SID}&var:pagename=rulall&telcfg:settings/Diversity0/Active={$ein}");
            curl_exec($ch);
		 break;

       case 12345: // Wert der Integervariable
          SetValue(41045 /*[FritzBox!\Rufumleitung\Rufumleitung\Umleiten zu]*/,12345);

		  $Exxxx = curl_setopt($ch, CURLOPT_POSTFIELDS, "getpage={$fritzseite}&sid={$SID}&var:pagename=rulall&telcfg:settings/Diversity0/Destination={$Edxxxx}");
			 curl_exec($ch);
		 break;

       case 56789: // Wert der Integervariable
          SetValue(41045 /*[FritzBox!\Rufumleitung\Rufumleitung\Umleiten zu]*/,56789);


		  $Lxxxx = curl_setopt($ch, CURLOPT_POSTFIELDS, "getpage={$fritzseite}&sid={$SID}&var:pagename=rulall&telcfg:settings/Diversity0/Destination={$Lxxxxx}");
		  curl_exec($ch);
		 break;
    }


    if (isset($matches[1]) && $matches[1] != 0)
    {
        SetValue(44763 /*[FritzBox!\Rufumleitung\Rufumleitung\Status]*/ , 1);
    }
    else
    {
           SetValue(44763 /*[FritzBox!\Rufumleitung\Rufumleitung\Status]*/ , 0);
    }


    curl_close($ch);
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

}

?>

Hallo,

möchte das mit der Rufumleitung auch realiseren. Aber irgend wie bekomme ich es nicht zum laufen:
Hab die Variablen und das Script angelegt, die IP und das Passwort, sowie die VarIDs angepaßt und die eigenen Rufnummer, aber es tut sich nicht viel: Wenn ich ne Rufumleitung manuelle (via FritzBox-WEebinterface) eingerichtet habe und via IPS/WF die Umleitung ausschalte (0) dann wird sie in der Box auch ganz gelöscht (und nicht nur deaktiviert). Anders wenn ich die Umleitung im WF einschalte bzw. zwischen den Nummern wechsel, passiert nichts…
Was kann mein Fehler sein, bzw. wie kann ich es kontrollieren?

Gruß
hardlog

In Grundzügen hab ist es inzwischen hinbekommen. Bei mir geht es nur, wenn eine Rufumleitung bereits vordefiniert ist. Neu anlegen tut er sie nicht. Irgend wie bekomme ich es derzeit nicht hin, dass das Script prüft, ob die Umleitung bereits aktiv ist. Oder kann das das Script nicht?

Gruß
hardlog

Hallo hardlog,

wie du schon gemerkt hast, muss die Umleitung in der FritzBox angelegt sein. Ich habe das Script noch nicht Überarbeitet, um den aktuellen Status ab zufragen.:frowning: Die Umleitung wird aber trotzdem de- und aktiviert.

Hallo zusammen,
ich habe die Umschaltung der Rufumleitung für die FritzBox erbenfalls problemlos realisiert. Nachdem ich nun eben auf die neue Firmware umgestellt habe, knallt das Script schon beim login. Offensichtlich hat AVM auf LUA umgestellt (was immer das auch bedeutet - meine HTML/Web-Kenntnisse bewegen sich nahe dem Nullpunkt).
Laut Firebug geht der Zugriff auf:

<frame id="frame_content" scrolling="auto" frameborder="0" src="/logincheck.lua">

Jedenfalls kann das Script mit der Login-Variablen nichts mehr anfangen. Die Zeile 14 bezieht sich auf die letzte Zeile im obigen Code.

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

Das Log sieht wie folgt aus:


    Warning:*simplexml_load_string():*Entity:*line*771:*parser*error*:*xmlParseEntityRef:*no*name*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*if*(h1*!=*null*&amp;&amp;*h2*!=*null)*h1.value=h2.value;*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*****************^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*771:*parser*error*:*xmlParseEntityRef:*no*name*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*if*(h1*!=*null*&amp;&amp;*h2*!=*null)*h1.value=h2.value;*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():******************^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*784:*parser*error*:*StartTag:*invalid*element*name*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*for*(var*i*=*0,*len*=*inps.length;*i*&lt;*len;*i++)*{*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():***************************************^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*801:*parser*error*:*StartTag:*invalid*element*name*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*for*(var*i*=*0,*len*=*str.length;*i*&lt;*len;*i++)*{*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():**************************************^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*820:*parser*error*:*Opening*and*ending*tag*mismatch:*meta*line*7*and*head*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*&lt;/head&gt;*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():********^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*835:*parser*error*:*Specification*mandate*value*for*attribute*disabled*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*&lt;input*type=&quot;hidden&quot;*name=&quot;box:settings/webui_cookie&quot;*value=&quot;&quot;*disabled&gt;*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():************************************************************************^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*837:*parser*error*:*Opening*and*ending*tag*mismatch:*input*line*835*and*form*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*&lt;/form&gt;*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():********^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*841:*parser*error*:*Entity*'nbsp'*not*defined*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*&lt;div*class=&quot;fw_header&quot;&gt;&amp;nbsp;&lt;/div&gt;*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():******************************^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*860:*parser*error*:*Entity*'nbsp'*not*defined*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*ign:right;padding*right:5px;&quot;&gt;&lt;label*for=&quot;uiViewPassword&quot;&gt;Kennwort&lt;/label&gt;&amp;nbsp;*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():********************************************************************************^*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    [0]*in*function*simplexml_load_string*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14
    Warning:*simplexml_load_string():*Entity:*line*861:*parser*error*:*Opening*and*ending*tag*mismatch:*input*line*861*and*td*in*D:\APPL\IP*Symcon\scripts\rufumleitung.php*on*line*14

Kann mir jemand einen Tip geben, wie das Script umzubauen ist, damit es wieder läuft?

Danke im Voraus
BONOX

Hallo,

ist es möglich 2 verschiende Umleitungen zu aktivieren? Also MSN1 auf xxx und MSN2 auf yyyy (in der firzt.box geht das ja)?
Wenn ich manuell 2 anlege und das via IPS ( telcfg:settings/Diversity0/MSN=SIP0 und in seperatem Script telcfg:settings/Diversity0/MSN=SIP1) programmiere, löscht er die 2. Umleitung und paßt nur die verbleibende bzgl. Ursprung und Zielnummer an …

Hardlog

Hallo Hardlog,
Du musst die beiden Umleitungen mit …/Diversity0… und Diversity1 ansprechen, dann klappt es.
Bei mir sieht das so aus:

   curl_setopt($ch, CURLOPT_POSTFIELDS, "getpage={$fritzseite}&sid={$SID}&var:pagename=rulall&telcfg:settings/Diversity0/Active={$einAus}");
   curl_exec($ch);
	curl_setopt($ch, CURLOPT_POSTFIELDS, "getpage={$fritzseite}&sid={$SID}&var:pagename=rulall&telcfg:settings/Diversity1/Active={$einAus}");
 	curl_exec($ch);

Viel Erfolg
BONOX

PS: hat denn niemand eine Lösung für mein oben gepostetes Problem?

Danke @BONOX

Gut das du das mit dem Login der neuen Firmware der Fritzbox mitgeteil hast bevor ich upgedatet habe. Hat schon jemand das Problem lösen können?

Gruß
hardlog

Das Forum weis alles, einfach mal suchen. Ein bischen Eigeninitiative kann ja nicht schaden. :wink:

Danke für den Tipp Rainer,

auch Ostern hatte schon immer Probleme beim Finden der Eier…, aber ich finde dazu nichts! Gib doch mal ne Hilfe, nur weil heute der 3. Advent ist :wink:

hardlog

Wenn Du schon in dem gesuchten Threads postest, warum liest Du nicht einfach einpaar Threads rückwärts. :confused:

weil mich das bisher nicht entscheident weitergebracht hat.
Das Einloggen scheint zu funktionieren, aber ich kann die Rufumleitung nicht beeinflussen. Es kommt aber auch keine Fehlermeldung.

          
$fritzseite  = '../html/de/menus/menu2.html';
$MSN=1;
$ein=1;
$password='++++++';

$ch = curl_init('http://192.168.178.1/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);

   if ($session_status_simplexml->SID != '0000000000000000')
   {
   $SID = $session_status_simplexml->SID;
   }
   else
   {
      echo "Fehler: Login fehlgeschlagen";
      return;
    }
}

curl_setopt($ch, CURLOPT_POSTFIELDS, "getpage={$fritzseite}&sid={$SID}&var:pagename=rulall&telcfg:settings/Diversity{$MSN}/MSN=SIP{$MSN}&telcfg:settings/Diversity{$MSN}/Active={$ein}");
curl_exec($ch);

Kann jemand helfen?

hardlog

Hallo
die Aufrufe für die Rufumleitung haben sich ab 5.50 völlig geändert.
Anbei mein Coding nach dem erfolgreichen logon:

	$ch = curl_init("http://{$fritzbox_ip}/fon_num/rul_list.lua?sid={$SID}");
   $rc1=curl_setopt($ch, CURLOPT_POSTFIELDS, ($einAus == "on" ? "rul_0=on&rul_1=on&" : "") . "apply=&back_to_page=%2Ffon_num%2Frul_list.lua");
   $rc2=curl_exec($ch);

Voraussetzungen: Die Rufumleitung ist bereits in der Fritzbox definiert. In meinem Fall gibt es zwei Umleitungen (rul_0 und rul_1). Das Coding schaltet nur die Rufumleitung ein oder aus.
Die Variable $einAus hat zwei mögliche werte:
„on“: RUL einschalten
„“ : Rul ausschalten.
Ich hoffe, das hilft weiter.

Gruß BONOX

Danke Bonox,

ein und ausschalten lassen sich so die zwei umleitungen einwandfrei!
Dennoch meldet WF nachdem Ausführen den im Screenshot abgelichteten Fehler?


Wie kann ich neue Rufnummern in der Umleitung von WF aus hinterlegen?

Gruß
hardlog

Hallo Hardlog,

danke für den Hinweis. Meine Web-Kenntnisse sind nur rudimentär. Ich habe die Parameter über Firebug herausbekommen und nachdem es klappte nicht mehr ins Log geschaut. Dort wurde die gesamte Website protokolliert. Ich habe nunmehr analog zum Logon-Ablauf das Coding erweitert. Nun habe ich Ruhe im Log.:

	$ch = curl_init("http://{$fritzbox_ip}/fon_num/rul_list.lua?sid={$SID}");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$rc0 = curl_exec($ch);
   $rc1=curl_setopt($ch, CURLOPT_POSTFIELDS, ($einAus == "on" ? "rul_0=on&rul_1=on&" : "") . "apply=");
   $rc2=curl_exec($ch);

Bitte teste mal, ob bei Dir die Messages im Webfront auch ausbleiben. Ich mache das nicht über das Webfront. Das Script wird automatisch mit Ein-/Ausschalten der Alarmanlage gestartet.
Wie man eine RUL-Nummer vorgibt, kann ich Dir im Moment nicht beantworten. Versuche es mal mit Firebug zu ermitteln. Wenn ich etwas Luft habe und Du noch nicht erfolgreich warst, kann ich mich nochmal darum kümmern. Ich bevorzuge aus dokumentarischen Gründen die Definition der Nummern in der Fritzbox anstatt sie in irgendwelchen Scripsts zu verstecken.

Viel Erfolg
BONOX

Danke BONOX,

jetzt gehts fehlerfrei.
Ich werd mich mal in firebug versuchen einzuarbeiten. Vielleicht bekomme ich das mit den Nummern dann auch hin. Falls Du es vorherhinbekommst dann las es mich bitte wissen.
Vielleicht kannst Du den Script-Teil auch auf dieser Seiten posten: http://www.ip-symcon.de/forum/threads/20405-Funktionierende-Scripts-f%C3%BCr-FRITZ!OS-05-50-7390

Ich hab noch Probleme einzelne Umleitungen zu bearbeiten. rul_0, rul_1 … ist klar, wenn ich aber mehrere Umleitungen (3 bei mir) eingerichtet habe und nur eine davon aktivieren bzw. deaktivieren will werden die anderen beiden von der Veränderungen auch mitbetrofen …

Gruß
hardlog

Hallo Hardlog,
freut mich, wenn es klappt.
Ich habe festgestellt, dass der erste CURL_EXEC nicht notwendig ist. Habe das Script im obigen Link entsprechend angepasst, abgelegt.
Viel Spaß mit Firebug (über den Reiten Netzwerk kannst Du Messages verfolgen).

Gruß BONOX

Hallo erstmal.
Ich habe jetzt eine ganze Menge gestestet aber es geht nix bei mir.
Ich habe folgende Ausstattung:
AVM 7390 FRITZ!OS 05.22 Firmware 84.05.22 sowie
AVM 7390 FRITZ!OS 05.50 Firmware 84.05.50

Beide Boxen sind über https://xxxxx.dyndns.org erreichbar.
Ich möchte einfach nur über ein PHP Skript welches auf ein Webserver liegen soll
eine Rufumleitung ein/aus schalten.

Aber es geht nicht.
Ich habe nun einige Skripte versucht aber nichts geht.
Hat vielleicht jemand ein funktionierendes was auch wirklich geht ?

Hallo,

wie sieht denn das zuletzt bekannte gesamte Skript aus?

Bzw. funktioniert das oder ähnlich auch unter FirtzOS 7.01, wäre genau was ich suche…

LG