Баннер BBox как шаблон из репозитория (motd/10-armbian-header.tpl): версия/URL подставляются при установке, обновление при смене версии

This commit is contained in:
NW
2026-08-07 15:20:45 +01:00
parent a0aa7e3be5
commit 7284a8108c
5 changed files with 284 additions and 17 deletions

View File

@@ -150,26 +150,61 @@ setup_hostname() {
}
# ---------------------------------------------------------------------------
# 6. Баннер BBox (MOTD)
# 6. Баннер BBox (MOTD) — шаблон из репозитория
# ---------------------------------------------------------------------------
setup_motd() {
local HEADER="/etc/update-motd.d/10-armbian-header"
if [ -f "$HEADER" ] && ! grep -q "BBox" "$HEADER"; then
log "Обновление баннера входа: BBox v${BBOX_VERSION} ($BBOX_URL)"
cp "$HEADER" "${HEADER}.bak"
# Шаблон: motd/10-armbian-header.tpl с плейсхолдерами __BBOX_VERSION__ / __BBOX_URL__.
# При каждом запуске файл целиком перезаписывается из шаблона, поэтому смена
# версии в репозитории автоматически обновляет баннер на устройстве.
# ---------------------------------------------------------------------------
MOTD_HEADER="/etc/update-motd.d/10-armbian-header"
MOTD_TPL_REPO="motd/10-armbian-header.tpl"
# ASCII-баннер
sed -i 's|figlet -f small " $VENDOR"|figlet -f small " BBox"|' "$HEADER"
render_motd() {
local tpl="$1"
sed -e "s|__BBOX_VERSION__|${BBOX_VERSION}|g" \
-e "s|__BBOX_URL__|${BBOX_URL}|g" "$tpl"
}
# Строка версии + подпись
sed -i 's|running Armbian Linux \\e\[0;92m\${KERNELID\^}\\x1B\[0m|running \\e[0;92m${KERNELID^}\\x1B[0m, built on Armbian Linux|' "$HEADER"
# Вставка строки версии/подписи после строки баннера figlet
if ! grep -q "bbox.wtf v" "$HEADER"; then
sed -i "/figlet -f small \" BBox\"/a echo -e \" \\\\e[0;92mv${BBOX_VERSION}\\\\x1B[0m ${BBOX_URL} on \$BOARD_NAME\"\necho -e \" \\\\e[0;36mCreated by free people for a free world, in the name of privacy and security.\\\\x1B[0m\"" "$HEADER"
install_motd_template() {
local tpl_src=""
local script_dir
script_dir="$(dirname "$(readlink -f "$0")")"
# Источники шаблона:
# 1) рядом со скриптом (репозиторий / временная загрузка)
# 2) в общем хранилище (после install_scripts.sh -> /usr/local/share/bbox/motd)
for candidate in \
"$script_dir/$MOTD_TPL_REPO" \
"$script_dir/../$MOTD_TPL_REPO" \
"$script_dir/motd/10-armbian-header.tpl" \
"/usr/local/share/bbox/motd/$(basename "$MOTD_TPL_REPO")"
do
if [ -f "$candidate" ]; then
tpl_src="$candidate"
break
fi
log "Баннер обновлён."
done
if [ -z "$tpl_src" ]; then
warn "Шаблон баннера не найден ($MOTD_TPL_REPO), баннер не изменён."
return 1
fi
# Бэкап дефолтного баннера только один раз
if [ ! -f "${MOTD_HEADER}.bak" ]; then
cp -f "$MOTD_HEADER" "${MOTD_HEADER}.bak" 2>/dev/null || true
fi
# Запись шаблона с подстановкой версии/URL
render_motd "$tpl_src" > "$MOTD_HEADER"
chmod 755 "$MOTD_HEADER"
log "Баннер BBox установлен из шаблона: v${BBOX_VERSION} (${BBOX_URL})"
}
setup_motd() {
if [ -f "$MOTD_HEADER" ]; then
install_motd_template
else
log "Баннер BBox уже установлен или скрипт не найден."
warn "Баннер входа не найден ($MOTD_HEADER), пропуск."
fi
}