#!/bin/sh /etc/rc.common

START=95
STOP=10
USE_PROCD=1

PROG=/usr/bin/rmm-agent
CONFIG_FILE=/etc/rmm-agent.conf
DEFAULT_LOCK_FILE=/tmp/rmm-agent.lock

configured_lock_file() {
	local lock_file
	lock_file="$(sed -n 's/^LOCK_FILE="\([^" ]*\)"$/\1/p' "$CONFIG_FILE" 2>/dev/null | tail -n 1)"
	printf '%s\n' "${lock_file:-$DEFAULT_LOCK_FILE}"
}

remove_lock_file() {
	local lock_file
	lock_file="$(configured_lock_file)"
	case "$lock_file" in
		/*) ;;
		*) logger -t rmm-agent "refusing to remove non-absolute lock path"; return 0 ;;
	esac
	case "$lock_file" in
		/|/tmp|/run|/var|/var/run|/var/lock)
			logger -t rmm-agent "refusing to remove unsafe lock path"
			return 0
			;;
	esac
	rmdir "$lock_file" 2>/dev/null || true
}

start_service() {
	[ -x /usr/libexec/rmm-agent-uci-sync ] && /usr/libexec/rmm-agent-uci-sync
	config_load rmm-agent
	config_get_bool enabled main enabled 0
	[ "$enabled" -eq 1 ] || return 0
	procd_open_instance
	procd_set_param command /bin/sh "$PROG"
	procd_set_param env CONFIG_FILE="$CONFIG_FILE"
	procd_set_param stdout 1
	procd_set_param stderr 1
	procd_set_param term_timeout 15
	procd_set_param respawn 3600 5 5
	procd_close_instance
}

reload_service() {
	stop
	start
}

service_triggers() {
	procd_add_reload_trigger "rmm-agent"
}

service_stopped() {
	remove_lock_file
}
