Содержание

Описание модуля автоматического обновления ПО

Модуль автоматического обновления предназначен для организации автоматического и ручного обновления версий внутреннего ПО по протоколу HTTP с указанного URL.

По умолчанию, если в переменных окружения не указано значение переменной autoupdateURL - модуль автоматического обновления работает по URL производителя!!!

Пример переменной:

autoupdateURL=http://example.com/update_list.txt

autoupdateURL - по этому URL должен находится файл update_list.txt

Этапы процедуры обновления

  1. Выполняется проверка переменной среды autoupdate_cond, состояние «0» - отвечает опции автоматическое обновление, «1» - обновление с подтверждением, «2» - авто-обновление выключено. Если эта переменная установлена в «0» или «1» то инициируется проверка необходимости обновления.
  2. Считывание файла содержащего список всех доступных для обновления версий, сортированных по дате от старшей к новейшей (последняя/новая запись в конце).
  3. Сравнивание даты из самой новой (последней) записи, с датой сборки текущего образа, которая определяется посредством функции stb.RDir(«ImageDate») которая возвращает значение переменной среды Image_Date, в случае если дата сборки текущего образа новее, авто-обновление не инициируется.
  4. Если дата указанная в файле списка обновлений новее чем дата сборки образа прошитого в приставку, выполняется дополнительная проверка даты создания образа лежащего по адресу указанному в текстовом файле обновлений.
  5. Если дополнительная проверка показывает что дата обновления новее чем дата текущего образа, то выполняется проверка типа образа для обновления. Автоматическое обновление на альфа-версии не запускается. Автоматическое обновление на бета-версии запускается только в том случае если опция в настройка внутреннего портала «Обновление на бета-версии» установлена в значение «обновляться», эта опция устанавливает переменную среды «betaupdate_cond». Состояние «1» соответствует значению «обновляться», «0» - «не обновляться». По умолчанию установлено значение «не обновляться».
  6. Если версия типа «release» или «beta» и установлена опция «обновление на бета-версии» и её дата новее чем дата создания текущего образа, то инициируется автоматическое обновление.

Синтаксис файла update_list.txt , пример:

[
{"name":"0.2.14-r3", "url":"http://example.com/250/imageupdate214r3", "type":"release", "date":"26 Nov 2012 23:22:19 GMT+0200", "descr":"Release"},
{"name":"0.2.14-r7", "url":"http://example.com/250/imageupdate214r7", "type":"release", "date":"30 Nov 2012 14:43:29 GMT+0200", "descr":"Release"}
]

где:

Отключения модуля "Автообновления" и элементов управления в пользовательском интерфейсе

services.html

/home/web/services.html

<tr>
    <td class="t20w pad10r tabs_center_title" id="autoUpdateHolder" align="right"></td>
    <td class="t18w" id="autoUpdateInputHolder"></td>
</tr>
<tr>
    <td class="t20w pad10r tabs_center_title" id="alphaUpdateHolder" align="right"></td>
    <td class="t18w" id="alphaUpdateInputHolder"></td>
</tr>

Привести к виду:

<tr style="display:none;">
    <td class="t20w pad10r tabs_center_title" id="autoUpdateHolder" align="right"></td>
    <td class="t18w" id="autoUpdateInputHolder"></td>
</tr>
<tr style="display:none;">
    <td class="t20w pad10r tabs_center_title" id="alphaUpdateHolder" align="right"></td>
    <td class="t18w" id="alphaUpdateInputHolder"></td>
</tr>

vars.js

/home/web/vars.js

settings_objArr = new RegExp("MAG200").test(gSTB.GetDeviceModelExt())?
[
 [
  ["languageAudiotrack"],["languageSubtitle"],["frontPanelSel"],["screenClockSel"],
  ["ssdelay_select"],["videoClockSel"],["autoupdateSel"],["alphaupdateSel"],
  ["update_button","update_button_s"]
 ]
]:
[
 [
  ["languageAudiotrack"],["languageSubtitle"],["frontPanelSel"],["screenClockSel"],
  ["ssdelay_select"],["videoClockSel"],["autoupdateSel"],["alphaupdateSel"],
  ["timeShiftSettings"],["update_button","update_button_s"]
 ],
 [
  ["tsOn"],["tsIco"],["tsPath"],["tsTime"],["tsEndType"],["tsExitType"],["tsLag"],["tsBack"]
 ]
],

Привести к виду: убрать - autoupdateSel, alphaupdateSel, update_button

settings_objArr = new RegExp("MAG200").test(gSTB.GetDeviceModelExt())?
[
 [
  ["languageAudiotrack"],["languageSubtitle"],["frontPanelSel"],["screenClockSel"],
  ["ssdelay_select"],["videoClockSel"],["update_button_s"]
 ]
]:
[
 [
  ["languageAudiotrack"],["languageSubtitle"],["frontPanelSel"],["screenClockSel"],
  ["ssdelay_select"],["videoClockSel"],["timeShiftSettings"],["update_button_s"]
 ],
 [
  ["tsOn"],["tsIco"],["tsPath"],["tsTime"],["tsEndType"],["tsExitType"],["tsLag"],["tsBack"]
 ]
],

Установить переменные

При сборке образа ПО в env.txt

Пример env.txt:

autoupdate_cond=2
betaupdate_cond=0