C450ip und S450ip FW-mirror script.

mindflow

Neuer User
Mitglied seit
10 Apr 2007
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
Hallo, ich habe hier ein PHP-Skript geschrieben welches die wichtigsten Teile (soweit ich das herausgefunden habe) des Siemens-Gigaset Chagall-Servers spiegelt. So kann man wenn man mehrere Gigasets in einem Netzwerk betreibt die Firmware zentral zur Verfügung stellen und muss die Telefone zum Firmware-Update nicht mehr in der Firewall freischalten.

PHP:
<html>
<body>
<?php

/*	This script is designed to get firmware files for Siemens Gigaset
	C450IP from Siemens' server and copy them to a local directory
	for possible re-supplying within a small home/business network.

	This script ist based on the Code of Kai Michael Poppe, but 
	contains some major changes. 
	
	GNU Public License applies.

	Version 0.2 as of October, 25th 2007 11:00 GMT +0002
	
	INSTALLATION: in order to run this srcipt you have to reate some 
	folder hierarchy on your webserver:
		chagall - 1
				  - 0
				- 2
				  - 3
				- sifs
	The folder chagall can be calles however you like it, I named it 
	this way to follow the naming structures on the Siemens server 
	These folders have to be writable by your webserver!
	
*/


// These are the base directories, where siemens puts its firmware files
// Directory-Listing is disabled on these servers so we have to know what 
// to look for. There are 3 directories where we can find a baselines.bin file
// named "1", "2", and "3"
// 1 - C450IP/C460IP
// 2 - S450IP
// 3 - Unkown

$baseurl = "http://gigaset.siemens.com/chagall/";
$basedir = "";

function getFilenames($file,$folder) {
	GLOBAL $baseurl;
	$fcont = file_get_contents($baseurl.$file);
	preg_match_all("/([a-z0-9_]*\.bin)/",$fcont,$fhits);
	for ($i=0; $i<count($fhits[0]); $i++){
		$fhits[0][$i]=  $folder . $fhits[0][$i];
	}
	return($fhits[0]);
}
// This Method just get's an array of files to download
function getFirmware($folders) {
	GLOBAL $basedir,$baseurl;
	$filesToGet=Array($folders[0].'baselines.bin',$folders[0].$folders[1].'master.bin');
	$x = getFilenames($folders[0].'baselines.bin',$folders[0]);
	$filesToGet[]= $x[0];
	$y=getFilenames($folders[0].$folders[1].'master.bin',$folders[0].$folders[1]);
	$filesToGet[]=$y[0];
	foreach($filesToGet as $file) {
			print 'Getting File ' . $baseurl.$file . '<br>';
			$fp = fopen($basedir.$file,"w+");
			fputs($fp,file_get_contents($baseurl.$file));
			fclose($fp);
	}
}

// These are the directory-Tuples for the different phones:
// baslines-file, master-file,
$c450=Array('1/','0/');
$s450=Array('2/','3/');
	

/* First get the files for the C450IP */
print '<span style="font-weight:bold;">Getting Firmware for C450IP </span><br />';
getFirmware($c450);
// Get the FW for S450IP
print '<span style="font-weight:bold;">Getting Firmware for S450IP </span><br />';
getFirmware($s450);

// Now getting the content of the sifsroot folder:
$filesToGet=Array('sifs/sifsroot.bin');
$x = getFilenames('sifs/sifsroot.bin','sifs/');
$filesToGet = array_merge($filesToGet,$x);
foreach($filesToGet as $file) {
			$fp = fopen($basedir.$file,"w+");
			fputs($fp,file_get_contents($baseurl.$file));
			fclose($fp);
	}
print "Done";
?> 
</body>
</html>

Wer es herunterladen möchte findet hier eine GZipte Version.
Anregungen und Hinweise werden dankend angenommen.

Viele Grüße

Florian
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.