#!/usr/bin/haserl <%in p/common.cgi %> <% [ ! -f "/rom/${mj_bin_file}" ] && redirect_to '/' "danger" "Majestic не поддерживается в этой системе." update_meta() { # re-download metafile if older than 1 hour mj_meta_url="http://openipc.s3-eu-west-1.amazonaws.com/majestic.${soc_family}.${fw_variant}.master.tar.meta" if [ -f "$mj_meta_file" ]; then mj_meta_file_timestamp=$(time_epoch "$(ls -lc --full-time $mj_meta_file | xargs | cut -d' ' -f6,7)") mj_meta_file_expiration=$(( $(time_epoch) + 3600 )) [ "$mj_meta_file_timestamp" -le "$mj_meta_file_expiration" ] && return rm $mj_meta_file fi [ "200" = $(curl $mj_meta_url -s -f -w %{http_code} -o /dev/null) ] && curl -s $mj_meta_url -o $mj_meta_file } page_title="Majestic" mj_meta_file=/tmp/mj_meta.txt # NB! sizes are in allocated blocks. mj_filesize_fw=$(ls -s $mj_bin_file | xargs | cut -d' ' -f1) mj_bin_file_ol="${overlay_root}${mj_bin_file}" [ -f "$mj_bin_file_ol" ] && mj_filesize_ol=$(ls -s $mj_bin_file_ol | xargs | cut -d' ' -f1) free_space=$(df | grep /overlay | xargs | cut -d' ' -f4) available_space=$(( ${free_space:=0} + ${mj_filesize_ol:=0} - 1 )) if [ "POST" = "$REQUEST_METHOD" ]; then case "$POST_action" in rmmj) [ -f "$mj_bin_file_ol" ] && rm $mj_bin_file_ol && mount -oremount / redirect_back "success" "Majestic вернулся к базовой версии." ;; update) [ -z "$network_gateway" ] && redirect_to "danger" "Для обновления требуется подключение к интернету!" update_meta mj_filesize_new=$(( ($(cat $mj_meta_file | sed -n 2p) + 1024) / 1024 )) [ "$mj_filesize_new" -gt "$available_space" ] && redirect_back "danger" "Недостаточно места для обновления Majestic. ${mj_filesize_new} КБ > ${available_space} КБ." curl --silent --insecure --location -o - http://openipc.s3-eu-west-1.amazonaws.com/majestic.${soc_family}.${fw_variant}.master.tar.bz2 | bunzip2 | tar -x ./majestic -C /usr/bin/ [ $? -ne 0 ] && redirect_back "error" "Недостаточно места для обновления Majestic." redirect_to "reboot.cgi" ;; esac fi mj_version_fw=$(/rom${mj_bin_file} -v) mj_version_ol="- не устанавливается в оверлее -" [ -f "$mj_bin_file_ol" ] && mj_version_ol=$($mj_bin_file_ol -v) if [ -n "$network_gateway" ]; then update_meta if [ -f "$mj_meta_file" ]; then # parse version, date and file size if [ "$(wc -l $mj_meta_file | cut -d' ' -f1)" = "1" ]; then mj_filesize_new=$(sed -n 1p $mj_meta_file) else mj_version_new=$(sed -n 1p $mj_meta_file) mj_filesize_new=$(sed -n 2p $mj_meta_file) fi # NB! size in bytes, but since blocks are 1024 bytes each, we are safe here for now. mj_filesize_new=$(( ($mj_filesize_new + 1024) / 1024 )) # Rounding up by priming, since $(()) sucks at floats. else mj_version_new="unavailable" fi else mj_version_new="- нет доступа к сегменту S3 -" fi %> <%in p/header.cgi %>
Majestic использует оригинальную конфигурацию.
<% else %>Majestic использует индивидуальную конфигурацию.
<% fi %>Нечего обновлять.
Последняя версия уже установлена.
Недостаточно места для обновления Majestic!
Обновление требует <%= $mj_filesize_new %>KБ, но только <%= $available_space %>KБ доступно <% if [ "$mj_filesize_ol" -ge "1" ]; then %> (<%= $free_space %>KБ нераспределенного пространства плюс <%= ${mj_filesize_ol:=0} %>KБ размер Majestic, установленного в оверлее) <% fi %> .
Для обновления требуется доступ к Amazon S3.
<% fi %> <% if [ -f "$mj_bin_file_ol" ]; then %>Более поздняя версия Majestic найдена в разделе оверлея. Занимает <%= $mj_filesize_ol %> KБ места на диске.