#!/usr/bin/env bash set -euo pipefail # Installer for NetGescon repair UI systemd units (system-wide and user) # Usage: # sudo bash scripts/install-repair-service.sh # install system-wide service # bash scripts/install-repair-service.sh --user # install user service # bash scripts/install-repair-service.sh --cron-fallback # add @reboot cron fallback BASE_DIR="/var/www/netgescon" SYSTEMD_DIR="/etc/systemd/system" USER_SYSTEMD_DIR="$HOME/.config/systemd/user" if [[ "${1:-}" == "--help" ]]; then sed -n '1,60p' "$0"; exit 0 fi case "${1:-}" in --user) mkdir -p "$USER_SYSTEMD_DIR" sed "s#@BASE_DIR@#$BASE_DIR#g" "$BASE_DIR/scripts/systemd/netgescon-repair-ui.user.service.template" > "$USER_SYSTEMD_DIR/netgescon-repair-ui.service" systemctl --user daemon-reload systemctl --user enable --now netgescon-repair-ui.service || true systemctl --user status netgescon-repair-ui.service --no-pager --full | sed -n '1,100p' || true ;; --cron-fallback) TMP_CRON=$(mktemp) crontab -l 2>/dev/null > "$TMP_CRON" || true if ! grep -q 'netgescon-repair-ui.sh' "$TMP_CRON"; then echo "@reboot /usr/bin/env bash -lc '/var/www/netgescon/scripts/repair-ui.sh || /home/michele/netgescon/scripts/repair-ui.sh || true'" >> "$TMP_CRON" fi crontab "$TMP_CRON" rm -f "$TMP_CRON" echo "Cron installed:"; crontab -l | sed -n '1,20p' ;; *) # system-wide if [[ $EUID -ne 0 ]]; then echo "Please run as root or use sudo for system-wide install" >&2 exit 1 fi sed "s#@BASE_DIR@#$BASE_DIR#g" "$BASE_DIR/scripts/systemd/netgescon-repair-ui.service.template" > "$SYSTEMD_DIR/netgescon-repair-ui.service" systemctl daemon-reload systemctl enable netgescon-repair-ui.service systemctl start netgescon-repair-ui.service systemctl status netgescon-repair-ui.service --no-pager --full | sed -n '1,100p' ;; esac