#!/bin/bash
# Первая загрузка сервера, установленного с образа Bridge&Join: на экране сервера спрашивает ключ
# продукта и запускает bj-installer. После успешной установки служба выключается; адрес первичной
# настройки и одноразовый код остаются на экране входа (/etc/issue.d/bj-setup.issue).
set -u
MARK=/var/lib/bj/.bj/installed-from-iso
SERVER=https://lic.zetit.ru
CHANNEL=stable
[ -s /etc/bj/channel ] && CHANNEL=$(tr -d ' \n' < /etc/bj/channel)

finish() {
  mkdir -p "$(dirname "$MARK")" && date -Iseconds > "$MARK"
  systemctl disable bj-firstboot.service >/dev/null 2>&1
}

clear
printf '\n  Bridge&Join: установка на сервер\n  ────────────────────────────────────────────────\n\n'
printf '  Debian установлен. Осталось установить bj.\n'
printf '  Нужен ключ продукта (BJ-XXXX-XXXX-XXXX): он есть в портале клиента %s/portal/\n\n' "$SERVER"

for i in $(seq 1 60); do
  curl -fsS -m 5 -o /dev/null "$SERVER/healthz" && break
  [ "$i" = 1 ] && printf '  Жду сеть и связь с %s…\n' "$SERVER"
  sleep 2
done

while true; do
  read -r -p "  Ключ продукта (пусто — установить позже): " CODE
  CODE=$(printf '%s' "$CODE" | tr -d ' ' | tr '[:lower:]' '[:upper:]')
  if [ -z "$CODE" ]; then
    printf '\n  Установка bj отложена. Позже выполните: sudo bj-installer install --code КЛЮЧ-ПРОДУКТА\n\n'
    finish
    sleep 3
    exit 0
  fi
  if /usr/local/sbin/bj-installer install --code "$CODE" --server "$SERVER" --channel "$CHANNEL"; then
    finish
    read -r -p "  Нажмите Enter, чтобы перейти к экрану входа. " _
    exit 0
  fi
  printf '\n  Установка не завершилась. Проверьте ключ продукта и сеть и попробуйте ещё раз.\n\n'
done
