#!/usr/bin/env bash
# «Безопасный» — установка настольного окна-приложения для Linux.
# Создаёт ярлык в меню приложений и команду `bezopasny`. Открывает живой сайт в режиме
# приложения (без панелей браузера). Содержимое всегда свежее — грузится с сервера,
# поэтому мессенджер сам «следит за обновлениями». Запуск:  bash bezopasny-linux.sh
set -u
QUIET=0
[ "${1:-}" = "--quiet" ] && QUIET=1

BASE="https://panel-pergament.tail3fbf17.ts.net:8448"
DEST="$HOME/.local/share/bezopasny"
BIN="$HOME/.local/bin"
APPS="$HOME/.local/share/applications"
ICONS="$HOME/.local/share/icons"

say() { [ "$QUIET" = "1" ] || printf '%s\n' "$*"; }

mkdir -p "$DEST/profile" "$BIN" "$APPS" "$ICONS"

say ''
say '  ============================================'
say '     Установка настольного «Безопасный» (Linux)'
say '     Пульт сервера: управление, антивирус, чат с Claude.'
say '  ============================================'
say ''

if ! command -v curl >/dev/null 2>&1; then
  say '  ! Нужен curl:  sudo apt install curl   (или dnf/pacman)'
  exit 1
fi

# Иконка
curl -fsSL --max-time 30 "$BASE/app/icons/bezopasny-256.png" -o "$ICONS/bezopasny.png" 2>/dev/null || true

# Версия оболочки
ver="1.0.0"
json="$(curl -fsSL --max-time 15 "$BASE/app/desktop.json" 2>/dev/null || true)"
r="$(printf '%s' "$json" | sed -n 's/.*"shell_version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)"
[ -n "$r" ] && ver="$r"
printf '%s' "$ver" > "$DEST/version.txt"

# Updater — фоновое слежение за обновлениями оболочки
cat > "$DEST/update.sh" <<'UPD'
#!/usr/bin/env bash
set -u
BASE="https://panel-pergament.tail3fbf17.ts.net:8448"
DEST="$HOME/.local/share/bezopasny"
local_v="$(cat "$DEST/version.txt" 2>/dev/null || true)"
json="$(curl -fsSL --max-time 15 "$BASE/app/desktop.json" 2>/dev/null || true)"
remote_v="$(printf '%s' "$json" | sed -n 's/.*"shell_version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)"
[ -z "$remote_v" ] && exit 0
[ "$remote_v" = "$local_v" ] && exit 0
tmp="$(mktemp)"
curl -fsSL --max-time 30 "$BASE/app/bezopasny-linux.sh" -o "$tmp" 2>/dev/null || exit 0
bash "$tmp" --quiet >/dev/null 2>&1 || true
rm -f "$tmp"
UPD
chmod +x "$DEST/update.sh"

# Лаунчер `bezopasny`
cat > "$BIN/bezopasny" <<'LAUNCH'
#!/usr/bin/env bash
URL="https://panel-pergament.tail3fbf17.ts.net:8448"
PROFILE="$HOME/.local/share/bezopasny/profile"
# фоновая проверка обновлений (не блокирует запуск)
( "$HOME/.local/share/bezopasny/update.sh" >/dev/null 2>&1 & ) 2>/dev/null || true
for b in google-chrome google-chrome-stable chromium chromium-browser \
         microsoft-edge microsoft-edge-stable brave-browser vivaldi-stable; do
  if command -v "$b" >/dev/null 2>&1; then
    exec "$b" --app="$URL" --user-data-dir="$PROFILE" --no-first-run --no-default-browser-check
  fi
done
# нет Chromium-браузера — открываем в браузере по умолчанию
command -v xdg-open >/dev/null 2>&1 && exec xdg-open "$URL"
echo "Откройте в браузере: $URL"
LAUNCH
chmod +x "$BIN/bezopasny"

# Ярлык в меню приложений
cat > "$APPS/bezopasny.desktop" <<DESK
[Desktop Entry]
Type=Application
Name=Безопасный
GenericName=Пульт сервера
Comment=Управление сервером, антивирус и чат с Claude — в одном окне.
Exec=$BIN/bezopasny
Icon=$ICONS/bezopasny.png
Terminal=false
Categories=System;Utility;Settings;
StartupWMClass=panel-pergament.tail3fbf17.ts.net
DESK
chmod +x "$APPS/bezopasny.desktop" 2>/dev/null || true
command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "$APPS" >/dev/null 2>&1 || true

say "  Готово. «Безопасный» — в меню приложений; в терминале — команда: bezopasny"
case ":$PATH:" in
  *":$BIN:"*) : ;;
  *) say "  (добавьте в PATH: echo 'export PATH=\"\$HOME/.local/bin:\$PATH\"' >> ~/.bashrc)" ;;
esac

if [ "$QUIET" != "1" ]; then
  say ''
  say '  Запускаю «Безопасный»...'
  ( "$BIN/bezopasny" >/dev/null 2>&1 & ) 2>/dev/null || true
  say '  Готово — пульт сервера под рукой.'
fi
