#!/usr/bin/php $response))); if (preg_match('!Location:.+home\.lua\?sid=([\w\d]+)!is', $postlogin_response, $m)) { $sid = $m[1]; echo "Successful, SID is $sid\n"; // And trigger NAS Index Refresh echo "[POST settings.lua ] Refreshing NAS DB $FNASDB ... "; sendRequest("$FRITZBOXHOST", "/storage/settings.lua?sid=$sid", 80, "nas_activ=on&internal_mem_activ=on&viewUsb=on&usb_disconnect=0&webdav_url=https%3A%2F%2Fsd2dav.1und1.de&webdav_username=&webdav_password=&share_name=FRITZ.NAS&workgroup=WORKGROUP&internet_sharing_active=on&internet_sharing_dir=%2F&use_mediasrv=on&media_srvname=AVM+FRITZ%21Mediaserver&cur_mediapath=&start_fnasdb=$FNASDB&btn_refresh="); echo "Done.\n"; } else { die("postlogin_response does not match.\n"); } } else { die("login_response does not match.\n"); } // Translated from JavaScript from fritz.box/login.lua function makeDots($str) { $newStr = ""; for ($i = 0, $len = strlen($str); $i < $len; $i++) { if ($str[$i] > 255) $newStr .= "."; else $newStr .= $str[$i]; } return $newStr; } function sendRequest($host, $path, $port = 80, $postData = false) { $method = (!$postData) ? "GET" : "POST"; $fopenhost = ($port == 443) ? "ssl://$host" : "$host"; // Create POST request with the given data if ($method == "POST") { $request = "POST ".$path." HTTP/1.1\r\n" . "Host: ".$host."\r\n" . (isset($_SERVER['HTTP_USER_AGENT']) ? "User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n" : "") . "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" . "Accept-Language: en-us,en;q=0.5\r\n" . "Content-Type: application/x-www-form-urlencoded\r\n" . "Content-Length: ". strlen($postData) ."\r\n" . "Connection: close\r\n\r\n" . $postData; } // Make GET else { $request = "GET ".$path." HTTP/1.1\r\n" . "Host: ".$host."\r\n" . (isset($_SERVER['HTTP_USER_AGENT']) ? "User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n" : "") . "Connection: close\r\n\r\n"; } // Send request $fp = fsockopen($fopenhost, $port); fputs($fp, $request); // Read response $response = ""; while (!feof($fp)) { $line = fgets($fp, 4096); $response .= $line; } fclose($fp); return $response; } ?>