uce/scripts/systemd/manage-uce-service.sh
2026-06-27 20:58:07 +00:00

67 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
if [[ ${EUID:-0} -ne 0 ]]; then
echo "This script must run as root." >&2
exit 1
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
UNIT_NAME="uce.service"
UNIT_SOURCE="$SCRIPT_DIR/uce.service"
if [[ ( "$REPO_ROOT" == "/usr/lib/uce" || "$REPO_ROOT" == "/opt/uce" ) && -f "$REPO_ROOT/scripts/deb/uce.service" ]]; then
UNIT_SOURCE="$REPO_ROOT/scripts/deb/uce.service"
fi
UNIT_DEST="/etc/systemd/system/$UNIT_NAME"
CONFIG_SOURCE="$REPO_ROOT/etc/uce/settings.cfg"
CONFIG_DEST="/etc/uce/settings.cfg"
action="${1:-setup}"
render_runtime_file() {
local source="$1"
local destination="$2"
local mode="$3"
local tmp
tmp="$(mktemp)"
trap 'rm -f "$tmp"' RETURN
sed "s#/Code/uce.openfu.com/uce#$REPO_ROOT#g" "$source" > "$tmp"
install -D -m "$mode" "$tmp" "$destination"
rm -f "$tmp"
trap - RETURN
}
install_unit() {
render_runtime_file "$UNIT_SOURCE" "$UNIT_DEST" 0644
if [[ ! -f "$CONFIG_DEST" ]]; then
render_runtime_file "$CONFIG_SOURCE" "$CONFIG_DEST" 0644
fi
systemctl daemon-reload
}
case "$action" in
install)
install_unit
;;
setup)
install_unit
systemctl enable --now "$UNIT_NAME"
;;
enable)
install_unit
systemctl enable "$UNIT_NAME"
;;
start|stop|restart|status)
systemctl "$action" "$UNIT_NAME"
;;
logs)
lines="${2:-100}"
journalctl -u "$UNIT_NAME" -n "$lines" --no-pager
;;
*)
echo "Usage: $0 [install|setup|enable|start|stop|restart|status|logs [lines]]" >&2
exit 1
;;
esac