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
 

Neueste Beiträge

Statistik des Forums

Themen
244,858
Beiträge
2,219,658
Mitglieder
371,572
Neuestes Mitglied
#Kuddel#
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.