#!/usr/bin/env bash
# System timer: HTTPS Date: clock fallback every 12h + shortly after boot.
# Needs sudo once (sets /etc/systemd/system). Does not disable systemd-timesyncd.
#
#   bash ~/DyzineFrame/sync/install_http_date_sync.sh
#   bash ~/DyzineFrame/sync/install_http_date_sync.sh --uninstall

if grep -q $'\r' "${BASH_SOURCE[0]}" 2>/dev/null; then
  sed -i 's/\r$//' "${BASH_SOURCE[0]}"
  exec bash "${BASH_SOURCE[0]}" "$@"
fi

set -euo pipefail

if [[ "$(id -un)" == root ]]; then
  echo "FATAL: run as topbox (script uses sudo -n)." >&2
  exit 1
fi

SYNC_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DF_ROOT="${HOME}/DyzineFrame"
PY=""
if [[ -f "${DF_ROOT}/http_date_sync.py" ]]; then
  PY="${DF_ROOT}/http_date_sync.py"
elif [[ -f "${SYNC_ROOT}/http_date_sync.py" ]]; then
  PY="${SYNC_ROOT}/http_date_sync.py"
else
  echo "FATAL: http_date_sync.py not found under ${DF_ROOT} or ${SYNC_ROOT}" >&2
  exit 1
fi
sed -i 's/\r$//' "${PY}" 2>/dev/null || true
chmod +x "${PY}" || true

UNIT_SVC="dyzineframe-http-date.service"
UNIT_TMR="dyzineframe-http-date.timer"

if [[ "${1:-}" == "--uninstall" ]]; then
  sudo -n systemctl disable --now "${UNIT_TMR}" 2>/dev/null || true
  sudo -n rm -f "/etc/systemd/system/${UNIT_SVC}" "/etc/systemd/system/${UNIT_TMR}"
  sudo -n systemctl daemon-reload
  echo "Removed ${UNIT_TMR}"
  exit 0
fi

sudo -n true 2>/dev/null || {
  echo "FATAL: sudo -n failed; cannot install system timer." >&2
  exit 1
}

sudo -n tee "/etc/systemd/system/${UNIT_SVC}" >/dev/null <<EOF
[Unit]
Description=DyzineFrame HTTPS Date clock fallback
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/python3 ${PY} --apply
Nice=10
EOF

sudo -n tee "/etc/systemd/system/${UNIT_TMR}" >/dev/null <<EOF
[Unit]
Description=Every 12h DyzineFrame HTTPS Date clock fallback

[Timer]
OnBootSec=2min
OnUnitActiveSec=12h
Persistent=true
Unit=${UNIT_SVC}

[Install]
WantedBy=timers.target
EOF

sudo -n systemctl daemon-reload
sudo -n systemctl enable --now "${UNIT_TMR}"
echo "Enabled ${UNIT_TMR} → ${PY}"
sudo -n systemctl start "${UNIT_SVC}" || true
systemctl list-timers "${UNIT_TMR}" --no-pager || true
