#!/bin/sh

LOG=/var/log/phone-server-services.log

# Optional services remain disabled until their packages and configuration are ready.
ENABLE_RSYSLOG=0
ENABLE_FAIL2BAN=0
ENABLE_BESZEL=0

log() {
  printf '[%s] %s\n' "$(date '+%F %T')" "$*" >> "$LOG"
}

start_services() {
  mkdir -p /run/sshd

  if [ "$ENABLE_RSYSLOG" = "1" ] && ! pgrep -x rsyslogd >/dev/null 2>&1; then
    touch /var/log/auth.log
    /usr/sbin/rsyslogd >> "$LOG" 2>&1
    log "rsyslogd start requested"
  fi

  if [ "$ENABLE_FAIL2BAN" = "1" ] && ! /usr/bin/fail2ban-client ping >/dev/null 2>&1; then
    /usr/bin/fail2ban-client -x start >> "$LOG" 2>&1
    log "fail2ban start requested"
  fi

  if [ "$ENABLE_BESZEL" = "1" ] && ! pgrep -x beszel-agent >/dev/null 2>&1; then
    set -a
    . /etc/default/beszel-agent
    set +a
    nohup /opt/beszel/beszel-agent >> /var/log/beszel-agent.log 2>&1 &
    log "beszel-agent start requested"
  fi

  if ! ss -ltn 2>/dev/null | grep -q ':22 '; then
    /usr/sbin/sshd >> "$LOG" 2>&1
    log "sshd start requested"
  fi
}

log "supervisor started"
while true; do
  start_services
  sleep 60
done
