#!/bin/sh /etc/rc.common
# Copyright (C) 2023 ImmortalWrt.org

START=99
USE_PROCD=1

CONF="ddns-go"
YAML="/etc/$CONF/config.yaml"
PROG="/usr/bin/$CONF"

start_service() {
	config_load "$CONF"

	local enabled
	config_get_bool enabled "config" "enabled" "0"
	[ "$enabled" -eq "1" ] || return 1

	local listen ttl dns noweb insecure
	config_get listen "config" "listen" "[::]:9876"
	config_get ttl "config" "ttl" "300"
	config_get dns "config" "dns"
	config_get_bool noweb "config" "noweb" "0"
	config_get_bool insecure "config" "insecure" "0"

	[ -d "${YAML%/*}" ] || mkdir -p "${YAML%/*}"
	touch "$YAML"
	chown ddns-go "${YAML%/*}"
	chown ddns-go "$YAML"

	procd_open_instance "$CONF"
	procd_set_param command "$PROG"
	procd_append_param command -c "$YAML"
	procd_append_param command -l "$listen"
	procd_append_param command -f "$ttl"
	[ -z "$dns" ] || procd_append_param command -dns "$dns"
	[ "$noweb" -eq "0" ] || procd_append_param command -noweb
	[ "$insecure" -eq "0" ] || procd_append_param command -skipVerify

	procd_set_param respawn
	procd_set_param stderr 1
	procd_set_param user ddns-go

	procd_close_instance
}

service_triggers() {
	procd_add_reload_trigger "$CONF"
}
