Setting up an update server

Создание простейшего сервера обновления Firefox/Thunderbird при помощи Apache и PHP

Цель этого документа заключается в предоставлении основных инструкций по настройке собственного сервера обновлений.

Firefox обеспечивает службы обновления с помощью веб-службы REST - которая содержится в URL при условии наличия XML-файла в этом URL, описывающего доступное обновление.

Во-первых, давайте поговорим о формате URL. Вот URL используемый для обновления Firefox с версии 3.5.2 до Firefox версии 3.5.3:

Windows
https://aus2.mozilla.org/update/3/Fi...ult/update.xml
Mac OS X
https://aus2.mozilla.org/update/3/Fi...ult/update.xml

Формат URL выглядит так:

https://aus2.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml

Этот URL-адрес может отображаться в браузере через about:config как app.update.url, но чтобы изменить его, вы должны создать новую строку под названием app.update.url.override которая содержит ваше новое значение.

В нашем примере, мы должны поместить update.xml на сервере в полном пути, указанном в URL обновлений. Таким образом, в корне вашего веб-сервера, нужно создать путь:

mkdir -p update.dir/3/Firefox/3.5.2/20090729225027/WINNT_x86-msvc/en-US/release/Windows_NT\ 6.0/default/default

Взять файл update.xml из aus2.mozilla.org и поместить его в самой последней папке default:

<?xml version="1.0"?>
<updates>
    <update type="minor" version="3.5.3" extensionVersion="3.5.3" buildID="20090824101458" detailsURL="http://www.mozilla.com/en-US/firefox/3.5.3/releasenotes/">
        <patch type="complete" URL="http://download.mozilla.org/?product=firefox-3.5.3-complete&os=win&lang=en-US" hashFunction="SHA512" hashValue="f8abbaea98bd453b651c24025dbb8cea5908e532ca64ad7150e88778ccb77c0325341c0fecbec37f31f31cdf7e13955c28140725282d2ce7c4a37c89a25319a1" size="10728423"/>
        <patch type="partial" URL="http://download.mozilla.org/?product=firefox-3.5.3-partial-3.5.2&os=win&lang=en-US" hashFunction="SHA512" hashValue="20b133f1bd2025360bda8ef0c53132a5806dbd0606e0fe7c6d1291d1392532cc960262f87b0c7d4fbe8f9bc9fba64ed28ecd89b664c17f51f98acdd76b26ea6a" size="2531877"/>
    </update>
</updates>

Если вы хотите, чтобы эти сборки были загружены с вашего сервера вместо download.mozilla.org, скопируйте их на сервер и отредактируйте файл  update.xml чтобы изменить ссылки URL.

Далее, мы должны настроить сервер Apache, так чтобы можно было создать файл PHP для обработки веб-службы.

Сначала в  httpd.conf, убедитесь что параметр AllowOverride установлен в значение FileInfo для корневого каталога. Затем добавьте следующие строки в ваш файл .htaccess (вам, возможно, придется создать его) в корневом каталоге:

<FILES update>
ForceType application/x-httpd-php
</FILES>

Это укажет веб-серверу обработать update в виде файла PHP. Теперь создайте файл PHP с именем update в корневом каталоге:

<?php
header("Content-type: text/xml");
$path = preg_replace('/^\/update/', 'update.dir', urldecode($_SERVER["REQUEST_URI"]));
echo (file_exists($path)) ? file_get_contents($path) : '<?xml version="1.0"?><updates></updates>';
?>

Теперь, если вы идете по следующему адресу, вы должны увидеть содержимое XML.

http://localhost/update/3/Firefox/3.5.2/20090729225027/WINNT_x86-msvc/en-US/release/Windows_NT%206.0/default/default/update.xml

Наконец, установите параметр app.update.url.override в следующее значение URL через about:config (или MCD), а затем выберите Проверка обновлений в меню Справка. Вы должны получить обновление, если оно имеется.

http://localhost/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml

Соображения безопасности

Вы можете заметить, что  URL обновления Firefox по умолчанию использует HTTPS выше и обслуживается поверх SSL. SSL действительно помещает дополнительную нагрузку на сервер, и вы можете захотеть использовать обычный HTTP - нет!

Каждый пользователь будет пинговать сервер обновлений регулярно, есть ли обновление или нет (один раз в день по умолчанию). Любой пользователь, который подключается снаружи защищенной сети - в частности, из общественной точки доступа WiFi - потенциально может подключиться и подложить вредоносное обновление. SSL защищает от этой атаки. Файл update.xml маленькие, не увеличивают нагрузку SSL.

Большие обновления могут быть безопасно обслужены с незащищенного сервера, потому что файлы обновления содержат хэш, который клиент проверять. Хэшу можно доверять, только если update.xml доставляется надежно.

Смотрите также

Метки документа и участники

 Внесли вклад в эту страницу: Sayan
 Обновлялась последний раз: Sayan,