Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

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="https://www.mozilla.com/en-US/firefox/3.5.3/releasenotes/">
        <patch type="complete" URL="https://download.mozilla.org/?product=firefox-3.5.3-complete&os=win&lang=en-US" hashFunction="SHA512" hashValue="f8abbaea98bd453b651c24025dbb8cea5908e532ca64ad7150e88778ccb77c0325341c0fecbec37f31f31cdf7e13955c28140725282d2ce7c4a37c89a25319a1" size="10728423"/>
        <patch type="partial" URL="https://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.

https://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), а затем выберите Проверка обновлений в меню Справка. Вы должны получить обновление, если оно имеется.

https://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,