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.
Wer es herunterladen möchte findet hier eine GZipte Version.
Anregungen und Hinweise werden dankend angenommen.
Viele Grüße
Florian
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