#!/usr/bin/env bash
set -euo pipefail
[[ $EUID == 0 ]] || exec sudo /usr/local/bin/hush "$@"
cd /opt/hush
source config/installer.env
case "${1:-help}" in
  status) docker compose ps; curl -fsS "https://$HUSH_DOMAIN/health.json"; echo ;;
  logs) docker compose logs --tail=80 "${2:-prosody}" ;;
  backup) exec bash deploy/backup.sh ;;
  check)
    docker exec hush-prosody prosodyctl check config
    docker exec hush-prosody prosodyctl check turn
    curl -fsS "https://$HUSH_DOMAIN/health.json"; echo ;;
  restart) docker compose restart ;;
  registrations)
    case "${2:-}" in on) hush_value=true ;; off) hush_value=false ;; *) echo 'Use: hush registrations on|off'; exit 2 ;; esac
    sed -i "s/^allow_registration = .*/allow_registration = $hush_value/" config/prosody.cfg.lua
    docker exec hush-prosody prosodyctl reload ;;
  add-user)
    [[ ${2:-} =~ ^[a-z][a-z0-9_]{2,31}$ ]] || { echo 'Use: hush add-user handle'; exit 2; }
    docker exec -it hush-prosody prosodyctl adduser "$2@$HUSH_DOMAIN" ;;
  password)
    [[ ${2:-} =~ ^[a-z][a-z0-9_]{2,31}$ ]] || { echo 'Use: hush password handle'; exit 2; }
    docker exec -it hush-prosody prosodyctl passwd "$2@$HUSH_DOMAIN" ;;
  *) printf '%s\n' 'Hush commands: status, check, logs, backup, restart, registrations on|off, add-user HANDLE, password HANDLE' ;;
esac
