Fritzbox Telefonbuch wiederherstellen

Hallo zusammen,
ich stehe irgendwie auf dem Schlauch und habe leider weder im Forum über das große G eine Lösung für mein Problem gefunden. Vielleicht fällt Euch ja auf, was ich falsch mache.

Ich möchte ein in IPS erstelltes Telefonbuch automatisch auf die Fritzbox laden. Das Telefonbuch ist ok. Das manuelle Hochladen geht. Für das automatische Hochladen habe ich folgende Routine genommen:



	function WritePhoneBook($fritzbox_ip, $password, $telefonbuch){
		$fritzCfg    = $fritzbox_ip.'/cgi-bin/firmwarecfg';
		
		$ch = curl_init($fritzbox_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 . '-' . $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_URL, $fritzCfg);
		curl_setopt($ch, CURLOPT_POSTFIELDS, array("sid" => $SID, "PhonebookId" => $telefonbuch, "PhonebookImportFile" => "/var/lib/symcon/webfront/user/fritzphone.xml", "PhonebookImport" => ""));
		$book = curl_exec($ch);
		curl_close($ch);
		Echo $book.chr(10);
		
		print_r($book);
		
		return;
	}

Die Rückmeldung ist dann aber „Beim Wiederherstellen des Telefonbuchs ist ein Fehler aufgetreten.“. Ich nehme an, dass es an den Postfields liegt, bekomme aber nicht raus, was ich falsch mache.

Hat jemand eine Idee?

Viele Grüße
Jürgen

bin endlich vom Schlauch runter :rolleyes:
Die Lösung ist ganz einfach und sieht so aus:

    function WritePhoneBook($fritzbox_ip, $password, $telefonbuch, $content){
        $fritzCfg    = $fritzbox_ip.'/cgi-bin/firmwarecfg';
        
        $ch = curl_init($fritzbox_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 . '-' . $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_URL, $fritzCfg);
        curl_setopt($ch, CURLOPT_POSTFIELDS, array("sid" => $SID, "PhonebookId" => $telefonbuch, "PhonebookImportFile" => "egal.xml, text/xml, ".$content, "PhonebookImport" => ""));
        $book = curl_exec($ch);
        curl_close($ch);
        
        return;
    }  

dabei ist $content der xml-formatierte Inhalt des Telefonbuchs.

Damit habe ich jetzt den fehlenden Baustein, um mein Fritzbox-Telefonbuch mit was auch immer über IPS zu synchronisieren.

Viele Grüße
Jürgen