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

START=93
USE_PROCD=1

get_config() {
	config_get_bool enabled "$1" enabled 0
	config_get data_dir "$1" data_dir ""
	config_get port "$1" port "8189"
}

mkdir_p() {
	[ -d "$1" ] || mkdir -p "$1"
}

start_service() {
	config_load kaiplus
	config_foreach get_config kaiplus

	if [ "$enabled" != 1 ]; then
		return 0
	fi
	if [ -z "$data_dir" ]; then
		logger -t kaiplus "data_dir is empty; please set option data_dir in /etc/config/kaiplus"
		return 1
	fi

	mkdir_p "$data_dir"
	umask 077
	mkdir_p "$data_dir/workspace"
	mkdir_p "$data_dir/cache"
	mkdir_p "$data_dir/config"
	mkdir_p "$data_dir/state"
	chmod 0700 "$data_dir/config" "$data_dir/state"

	logger -t kaiplus "Starting KaiPlus service"
	procd_open_instance kaiplus
	procd_set_param env \
		KAIPLUS_HOME="$data_dir" \
		KAIPLUS_SYSTEM_ROLE="istoreos" \
		KAIPLUS_RELEASE_CHANNEL="stable" \
		KAIPLUS_AUTH_MODE="openwrt_luci" \
		LINKEASE_AUTH_PROVIDER="openwrt_luci" \
		KAIPLUS_LISTEN_MODE="tcp" \
		REASONIX_CREDENTIALS_STORE="file"
	procd_set_param command /usr/sbin/kaiplus kaiplus-web
	procd_append_param command --listen-mode tcp
	procd_append_param command --addr "0.0.0.0:$port"
	procd_append_param command --data-dir "$data_dir"
	procd_append_param command --base-path /apps/kaiplus/
	procd_append_param command --system-role istoreos
	procd_append_param command --release-channel stable
	procd_set_param stdout 1
	procd_set_param stderr 1
	procd_set_param respawn
	procd_close_instance
	logger -t kaiplus "KaiPlus service started"
}

service_triggers() {
	procd_add_reload_trigger "kaiplus"
}
