#!/bin/sh DAEMON=/usr/bin/tera-accessd PIDFILE=/run/tera-accessd.pid ENVFILE=/etc/tera/tera-accessd.env SOCKET=/run/tera-accessd/control.sock load_environment() { if [ -r "$ENVFILE" ]; then set -a . "$ENVFILE" set +a fi SOCKET=${TERA_ACCESSD_SOCKET:-$SOCKET} } is_running() { [ -r "$PIDFILE" ] || return 1 pid="$(cat "$PIDFILE" 2>/dev/null)" [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null } start_service() { if is_running; then echo "tera-accessd is already running" return 0 fi rm -f "$PIDFILE" [ -x "$DAEMON" ] || { echo "missing $DAEMON" >&2; return 1; } [ -r /usr/share/tera-web/index.html ] || { echo "missing tera-web assets" >&2; return 1; } load_environment mkdir -p /run/tera-accessd /var/lib/tera-api/tls/library chown root:tera /run/tera-accessd chmod 0750 /run/tera-accessd chown -R tera:tera /var/lib/tera-api/tls chmod 0700 /var/lib/tera-api/tls /var/lib/tera-api/tls/library start-stop-daemon -S -q -b -m -p "$PIDFILE" -x "$DAEMON" attempts=0 while [ "$attempts" -lt 50 ]; do if [ -S "$SOCKET" ]; then chown root:tera "$SOCKET" || return 1 chmod 0660 "$SOCKET" || return 1 return 0 fi is_running || return 1 attempts=$((attempts + 1)) sleep 0.1 done return 1 } stop_service() { load_environment if is_running; then start-stop-daemon -K -q -p "$PIDFILE" -x "$DAEMON" || return 1 fi rm -f "$PIDFILE" "$SOCKET" } case "$1" in start) start_service ;; stop) stop_service ;; restart) stop_service && start_service ;; status) is_running ;; *) echo "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;; esac