Инструкция, как поднять локальный сервер обновлений для Firefox.
В наличии имелся сервер с Debian Lenny. На него был поставлен apache2 и libapache2-mod-php5 sudo apt-get install apache2
sudo apt-get install libapache2-mod-php5
В файле /etc/apache2/sites-available/default директива AllowOverride None была изменена на AllowOverride FileInfo
В каталоге /var/www был создан каталог /var/www/update/Firefox/3.0.10/win32/ru/release и туда положены файлы:
root@db-fw:/var/www/update/Firefox/3.0.10/win32/ru/release# ls -la
-rw-r--r-- 1 root root 2188005 2009-05-28 11:22 firefox-3.0.10-3.0.11.ru.win32.partial.mar
-rw-r--r-- 1 root root 10189913 2009-05-28 11:25 firefox-3.0.11.ru.win32.complete.mar
-rw-r--r-- 1 root root 59 2009-05-28 10:12 .htaccess
-rw-r--r-- 1 root root 658 2009-05-28 11:20 update
-rw-r--r-- 1 root root 650 2009-05-28 12:12 update.xml
Файлы firefox-3.0.10-3.0.11.ru.win32.partial.mar и firefox-3.0.11.ru.win32.complete.mar
были взяты с ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/3.0.11.../
Файлы .htaccess и update были взяты с https://developer.mozilla.org/en/Setting_up_an_update_server без изменений.
.htaccess:
<FILES update>
ForceType application/x-httpd-php
</FILES>
PHP скрипт update:
<?php
header("Content-type: text/xml");
$url_array=explode("/",$_SERVER["REQUEST_URI"]);
$noidea=$url_array[2];
$product=$url_array[3];
$version=$url_array[4];
$build_id=$url_array[5];
$build_target=$url_array[6];
$locale=$url_array[7];
$channel=$url_array[8];
// filename is totally ignored
$filename=$url_array[9];
$updatefile = "update.dir/$noidea/$product/$version/$build_id/$build_target/$locale/$channel/$filename";
if (file_exists($updatefile)) {
$handle = fopen($updatefile, "r");
$contents = fread($handle, filesize($updatefile));
echo "$contents";
fclose($handle);
} else {
echo '<?xml version="1.0"?>';
?>
<updates></updates>
<?
}
?>
Потом был создан файл update.xml:
<?xml version="1.0"?>
<updates>
<update type="minor" version="3.0.11" extensionVersion="3.0.11" buildID="2009042316"
detailsURL="http://192.168.0.1/ru/firefox/3.0.11/releasenotes/">
<patch type="complete" URL="http://192.168.0.1/update/Firefox/3.0.10/win32/ru/release/fi...
hashFunction="SHA1" hashValue="1a08be9c203da5fb20f632e970e23331bb21b995" size="10189913" />
<patch type="partial" URL="http://192.168.0.1/update/Firefox/3.0.10/win32/ru/release/fi...
hashFunction="SHA1" hashValue="67683707609194c20188459da2ecfe9853122de4" size="2188005" />
</update>
</updates>
Хэш функции были вычислены с помощью sha1sum.
Потом я открыл русский Firefox 3.0.10 для Windows и создал строковый параметр app.update.url.override со значением
http://192.168.0.1/update/Firefox/3.0.10/win32/ru/release/up... и проверил наличие обновлений.
Firefox успешно нашёл обновление для 3.0.11 и успешно его применил.
URL: http://blog.unghost.ru/2009/05/firefox_28.html https://developer.mozilla.org/en/Setting_up_an_update_server
Обсуждается: http://www.opennet.me/tips/info/2091.shtml