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

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

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

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

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

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

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

Выполняется проверка переменной среды autoupdate_cond, состояние “0” - отвечает опции автоматическое обновление, “1” - обновление с подтверждением, “2” - авто-обновление выключено. Если эта переменная установлена в “0” или “1” то инициируется проверка необходимости обновления.

Считывание файла содержащего список всех доступных для обновления версий, сортированных по дате от старшей к новейшей (последняя/новая запись в конце).

Сравнивание даты из самой новой (последней) записи, с датой сборки текущего образа, которая определяется посредством функции stb.RDir(“ImageDate”) которая возвращает значение переменной среды Image_Date, в случае если дата сборки текущего образа новее, авто-обновление не инициируется.

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

Если дополнительная проверка показывает что дата обновления новее чем дата текущего образа, то выполняется проверка типа образа для обновления. Автоматическое обновление на альфа-версии не запускается. Автоматическое обновление на бета-версии запускается только в том случае если опция в настройка внутреннего портала “Обновление на бета-версии” установлена в значение “обновляться”, эта опция устанавливает переменную среды “betaupdate_cond”. Состояние “1” соответствует значению “обновляться”, “0” - “не обновляться”. По умолчанию установлено значение “не обновляться”.

Если версия типа “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"}
]

где:

name - отображаемое имя (название версии), может содержать любой текст (20 символов);

url - url образа ПО;

type - отображаемый тип релиза (release, beta или alpha);

date - содержит дату создания образа, она должна быть установлена из поля Date из заголовка образа, в следующем формате dd Mon yyyy hh:mm:ss GMT+nnnn, например 10 Nov 2011 20:05:35 GMT+0200;

descr - отображаемый description - краткое описание версии (40 символов);

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

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