Fritzbox 7270/Wlan Repeater Scripts

Nur noch eine Frage;
$ein = ‚1‘ und $aus =‚0‘ müssen aber nicht in Deinem Script angepasst werden. oder?

Trotzdem danke für Deine Mühe,
Gruß Ralph

probier das mal, wobei der Wert vom Inhalt des Feldes IPSYMID eine 1 oder 0 enthalten muss.

Ansonsten musst Du warten bis jemand antwortet der den Designer kennt.

if($_IPS['SENDER'] == "Designer")
{
    $fritzbox_ip = 'fritz.box';
    $password    = 'mein password';
    $ein         = '1';
    $aus         = '0';

    $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;
        }
    }

    if($_IPS['COMPONENT'] == 1)
    {
        curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&tam:settings/TAM1/Active={$ein}");
        curl_exec($ch);
    }
    if($_IPS['COMPONENT'] == 0)
    {
       curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&tam:settings/TAM1/Active={$aus}");
       curl_exec($ch);
    }
    curl_close($ch);
    
}

Hey Rainer,
Du bist der Größte:D.
Der Weg ist genau richtig. Ich versuche jetzt die änderungen, die Du im AB Script gemacht hast ins Wlan einzubauen und zumindest geht das Wlan schon mal an. Muss jetzt nur noch den Fehler für Wlan aus finden, aber ich denke das bekomme ich hin.

Danke ganz herzlich für die echt tollen Tips:loveips:

Ralph

Habe mich mal an das Skript #6 gesetzt bekomme aber folgende Fehlermeldung kann mir jemand helfen??

http_post_fields

wird nicht mehr unterstützt
im letzten script von rainer steht die „einlogg-prozedur“ mit curlopt_postfields
ich habe das einloggen in separates script gepackt und include es für alle fritz-scripte

Hier sind die Scripts ab V 2.5

Hallo Rainer,

habe die Neuen skripte gefunden die Anrufliste.csv füllt sich auch aber wie bekomme ich die ins Webfront?

und ein Skript fehlt bei deiner neuen Samlung 2.5 die Rufumleitung ein und ausschalten :confused:

Grüße Torsten

Hallo zusammen also das mit der Anrufliste auslesen klappt jetzt nur das Wichtigste die Rufumleitung geht nicht. Skript macht kein Fehler schaltet aber auch nicht um in der Fritzbox.

vielen Dank

<?
if($_IPS['SENDER'] == "WebFront")
{
$fritzbox_ip = 'fritz.box';
$fritzgui    = 'http://fritz.box/cgi-bin/webcm';
$fritzseite  = '../html/de/menus/menu2.html';
$password    = '1234567';
$ein         = '1';
$aus         = '0';

$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;
        }
    }

    if($IPS_VALUE)
    {
        curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&telcfg:settings/Diversity1/Active={$ein}");
        curl_exec($ch);
    }
    else
    {
       curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&telcfg:settings/Diversity1/Active={$aus}");
       curl_exec($ch);
    }
    curl_close($ch);
    SetValue($IPS_VARIABLE, $IPS_VALUE);




}
?>

Hast Du bewusst „Diversity1“ (und nicht „0“) gewählt?

Grüße
galleto

„Hast Du bewusst „Diversity1“ (und nicht „0“) gewählt?“

nein das Skript steht jetzt auf den letzten stand habe alles schon versucht 0 oder auch keine Zahl oder auch zwei :frowning:

Ein und Ausgeschaltet, wird hiermit.

telcfg:settings/CallerIDActions0/Active

Edit:

Ich passe meine Aussage etwas an. Je nachdem wie die Umleitung eingerichtet ist, stehen unterschiedliche Befehle zur Verfügung. du musst also bei dir im Quelltext nachsehen was dort steht und dieses eintragen!

Ich würde gerne die verschiedenen Rufumleitungsoptionen nutzen
0 = sofort
1 = verzögert
2= verzögert lang usw.

gefunden hab ich’s im Quelltext in Zeile 3565

<script type="text/javascript">document.write(TrRul("Diversity0", "0", "", "0790000000", "2"));</script><!-- "0" / "Diversity0" -->

nun käme das mit der Umsetzung im vorhandenen Script. :confused:

Hallo ich wollte mir das Script für die Internen Anrufe drauf machen, jetzt habe ich die entsprechenden Dateien nach ext. kopiert und den dienst neu gestartet. Nach kontrrolle der Log stand folgendes drin:

04.01.2013 08:29:45.276 |     0 | MESSAGE | ScriptEngine         | >Erweiterung php_curl.dll nicht geladen. Version stimmt nicht überein: PHP: 5.4.4, EXT: 5.4.0
04.01.2013 08:29:45.281 |     0 | MESSAGE | ScriptEngine         | >Erweiterung: php_gd2.dll
04.01.2013 08:29:45.281 |     0 | MESSAGE | ScriptEngine         | >Erweiterung: php_gettext.dll
04.01.2013 08:29:45.286 |     0 | MESSAGE | ScriptEngine         | >Erweiterung php_http_ips.dll nicht geladen. Version stimmt nicht überein: PHP: 5.4.4, EXT: 5.3.1
04.01.2013 08:29:45.286 |     0 | MESSAGE | ScriptEngine         | >Erweiterung php_mbstring.dll nicht geladen. Version stimmt nicht überein: PHP: 5.4.4, EXT: 5.4.0
04.01.2013 08:29:45.286 |     0 | MESSAGE | ScriptEngine         | >Erweiterung: php_soap.dll

Wo bekomme ich neuere Versionen der Dateien?

Danke

mach mal den IPS Update…wenn er sie kennt zieht er die dll´s mit

Vielen dank jetzt klappts, das war jetzt zu einfach um selbst drauf zu kommen.

so ist es manchmal…

Hallo Leute,

in verschiedenen Threads gibt es Skripte zur Rufumleitung. Leider ist es mir bisher aber nicht gelungen, eines zu finden was nach den Postings einwandfrei funktioniert. Ich suche eines, dass sowohl eine Rufnummer setzen kann, als auch die Änderung sichtbar macht…

Wäre jemand bitte so nett, mir ein Link auf ein Posting zu geben, dass eine funktionierende Variante beinhaltet?

Joachim

Hallo,

das würde mich auch interessieren. Habe eines zusammengebastelt, das schaltet aber nur die erste RUL (rul_0):

<?

$fritzbox 		= GetValue(15851 /*[EDV\Fritzbox\Fritzbox-Hostname]*/);
$fritzpasswort	= GetValue(48902 /*[EDV\Fritzbox\Fritzbox-Passwort]*/);
$einAus 			= "on";

// -----------------------------------------------------------------------------
// Login in die Fritzbox

$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 . '-' . $fritzpasswort, "UCS-2LE", "UTF-8"));

   curl_setopt($ch, CURLOPT_POSTFIELDS, "response={$response}&page=/login_sid.lua");
    $sendlogin = curl_exec($ch);
   curl_close($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;
    }
}
// Ende - Login in die Fritzbox
// -----------------------------------------------------------------------------

$ch = curl_init("http://{$fritzbox}/fon_num/rul_list.lua?sid={$SID}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);

curl_setopt($ch, CURLOPT_POSTFIELDS, ($einAus == "on" ? "rul_0=on&rul_1=&" : "") . "apply=");
curl_exec($ch);

curl_close($ch);
?>

Hallo Leute,

nach vielen Versuchen habe ich es jetzt für die erste Regel (ich habe nur eine eingerichtet) so hinbekommen:

//*************************************************************************************************************
// Schaltet die Rufumleitung der FritzBox
function FritzBox_Rufumleitung($IP, $passwort, $status)
	{
	If ($status == true)
	   {
	   $einAus = "on";
	   }
	else
	   {
	   $einAus = "";
	   }
	// -----------------------------------------------------------------------------
 // Login in die Fritzbox

	$ch = curl_init('http://'.$IP.'/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 . '-' .$passwort, "UCS-2LE", "UTF-8"));

	   curl_setopt($ch, CURLOPT_POSTFIELDS, "response={$response}&page=/login_sid.lua");
	     $sendlogin = curl_exec($ch);
	   curl_close($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;
	    }
	}
	// Ende - Login in die Fritzbox
	// -----------------------------------------------------------------------------

	$ch = curl_init("http://{$IP}/fon_num/rul_list.lua?sid={$SID}");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_exec($ch);

	curl_setopt($ch, CURLOPT_POSTFIELDS, ($einAus == "on" ? "rub_1=on&" : "") . "apply=");
	 curl_exec($ch);

	curl_close($ch);
	
	}

Joachim

Nachtrag: Kann man das Skript so anpassen, dass es einen den aktuellen Status ausliest??

Hallo Joachim,

siehe auch hier http://www.ip-symcon.de/forum/threads/20405-Funktionierende-Scripts-für-FRITZ!OS-05-50-7390?p=188910#post188910.

Auf der ausgelesenen Seite in der Fritzbox erscheint so etwas (hier ist wieder etwas von rub_0 zu lesen):

var g_RulList=[{
  "idx": 0, 
  "num_out": "", 
  "action": "0", 
  "active": true, 
  "uid": "rub_0", 
  "num_dest": "0171123456789", 
  "displaytxt": "Alle ankommenden Anrufe", 
  "name": "", 
  "type": "rub", 
  "caller_id": "*"
}]
function FindRule(key,val)

Meine Idee, an der ich mangels genug Wissen bzgl. Regulärer Ausdrücke nicht weiterkomme, ist:
Zuerst alles, was zwischen var g_RulList=[ und ]function FindRule(key,val) steht heraus trennen und dann weiter auseinanderplücken. Z.B. in ein Array: idx -> 0, num-out -> „“, usw. Dann anzeigen.

Wenn da alles gar nicht geht, die Umleitungen in der Fritzbox anlegen, die Bezeichnung (rul_0 oder rub_3 …) merken und dann per Script schalten.