Per Skript eine Freigabe einer Fritzbox aktivieren/deaktivieren

Hallo,

hat jemand von euch schon einmal versucht, per Skript eine Freigabe auf der Fritzbox zu aktivieren bzw. deaktivieren?

Ich möchte eine Freigabe „Remote Desktop Zugriff“, welche ich auf der FB eingerichtet habe, mittels Toggle über IPS aktivieren /deaktivieren.

Mal gespannt, ob dies jemand bereits umgesetzt hat.

Grüße

Hi,

in Anlehnung an die vielen Skripte von RWN :smiley:

$ein / $aus beachten und die Nummer der Regel ( beginnt bei 0 ). Die Webfrontsteuerung musst Du noch dazu bauen.

<?

    $fritzbox_ip = '192.168.178.1';
    $fritzgui    = 'http://192.168.178.1/cgi-bin/webcm';
    $fritzseite  = '../html/de/menus/menu2.html';
    $password    = 'xxxxxxxxx';
    $ein         = '1';
    $aus         = '0';
	 $nr          = '1'; // Welche Freigabe soll gändert werden
	 
    $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;
		    	}
	 }

				// hier $aus oder $ein setzen, je nachdem.... Auch $nr beachten = Nummer der zu ändernden Regel !
            $aktion=curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&forwardrules:settings/rule$nr/activated={$ein}");
            curl_exec($ch);


    curl_close($ch);

?>

Have fun !

Walter

Hallo Walter,

danke dir.

Habe das SKript vervollständigt. Wenn es interessiert:

<?
if($_IPS['SENDER'] == "WebFront")
{
    $fritzbox_ip = '192.168.1.1';
    $fritzgui    = 'http://192.168.11.1/cgi-bin/webcm';
    $fritzseite  = '../html/de/menus/menu2.html';
    $password    = 'xxxxxxx';
    $ein         = '1';
    $aus         = '0';
    $nr          = '14'; // Welche Freigabe soll gändert werden

    $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}&forwardrules:settings/rule$nr/activated={$ein}");
        curl_exec($ch);
    }
    else
    {
       curl_setopt($ch, CURLOPT_POSTFIELDS, "sid={$SID}&forwardrules:settings/rule$nr/activated={$aus}");
       curl_exec($ch);
    }
    curl_close($ch);
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

				    
}
?>

Somit kann ich nun einzelne Freigaben bequem per IPS aktivieren/deaktivieren :slight_smile: