#!/bin/sh

# PROVIDE: pichi
# REQUIRE: DAEMON
# KEYWORD: shutdown

get_pid()
{
  ps -o "pid=" -p "$(cat ${pid_file} 2>/dev/null)" 2>/dev/null
}

pichi_start()
{
  pid="$(get_pid)"
  if [ -n "${pid}" ]; then
    echo "${name} is running with pid ${pid}"
    exit 1
  fi
  if [ -z "${pichi_port}" ]; then
    echo "pichi_port is not set"
    exit 1
  fi
  "${command}" -u nobody --group daemon -d -g "${pichi_mmdb}" -p "${pichi_port}" -l "${pichi_bind}" --json "${pichi_conf}"
  if ! get_pid >/dev/null 2>&1; then
    echo "Failed to start ${name}"
    exit 1
  fi
}

# Main
. /etc/rc.subr

load_rc_config "${name}"

name="pichi"
rcvar="${name}_enable"
prefix="%%PREFIX%%"
command="${prefix}/bin/${name}"
start_cmd="${name}_start"
stop_cmd="${name}_stop"
restart_cmd="${name}_restart"
status_cmd="${name}_status"
extra_commands="reload"
reload_cmd="${name}_reload"
pid_file="${prefix}/var/run/${name}.pid"

: ${pichi_enable:="NO"}
: ${pichi_bind:="::1"}
: ${pichi_port:="21127"}
: ${pichi_conf:="${prefix}/etc/${name}/pichi.json"}
: ${pichi_mmdb:="${prefix}/etc/${name}/geo.mmdb"}

pichi_stop()
{
  pid=$(get_pid)
  if [ -n "${pid}" ]; then
    kill ${pid}
  fi
}

pichi_restart()
{
  pichi_stop
  pichi_start
}

pichi_reload()
{
  pid=$(get_pid)
  if [ -n "${pid}" ]; then
    kill -HUP ${pid}
  fi
}

pichi_status()
{
  pid=$(get_pid)
  if [ -n "${pid}" ]; then
    echo "${name} is running with PID ${pid}"
  else
    echo "${name} is not running"
  fi
}

run_rc_command "$1"
