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

. /lib/functions.sh
. /lib/functions/procd.sh

USE_PROCD=1

START=90
STOP=10

init_conf() {
	config_load "gecoosac"
	config_get "db_dir" "config" "db_dir" "/etc/gecoosac/"
	config_get "upload_dir" "config" "upload_dir" "/tmp/gecoosac/upload/"
	config_get "enabled" "config" "enabled" "0"
	config_get "port" "config" "port" "60650"
	config_get "isonlyoneprot" "config" "isonlyoneprot" "1"
	config_get "m_port" "config" "m_port" "8080"
	config_get "https" "config" "https" "0"
	config_get "crt_file" "config" "crt_file" "/etc/gecoosac/tls/1.crt"
	config_get "key_file" "config" "key_file" "/etc/gecoosac/tls/1.key"
	config_get "log" "config" "log" "0"
}

start_service() {
	init_conf
	[ "${enabled}" = "1" ] || return 0
	procd_open_instance gecoosac
	procd_set_param command "/usr/bin/gecoosac"
	procd_append_param command -f "${upload_dir}"
	procd_append_param command -p "${port}"
	procd_append_param command -debug "0"
	procd_append_param command -dbpath "${db_dir}"
	procd_append_param command -token "1"
	if [ "${isonlyoneprot}" = "0" ]; then
		procd_append_param command -isonlyoneprot "0"
		procd_append_param command -mp "${m_port}"
		if [ "${https}" = "1" ]; then
			procd_append_param command -https "1"
			procd_append_param command -crt "${crt_file}"
			procd_append_param command -key "${key_file}"
		else
			procd_append_param command -https "0"
		fi
	else
		procd_append_param command -isonlyoneprot "1"
	fi
	procd_append_param command -showtip "0"
	procd_set_param env GIN_MODE=release
	procd_set_param pidfile /var/run/gecoosac.pid
	procd_set_param stdout $log
	procd_set_param stderr $log
	procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
	procd_close_instance
}

stop_service(){
	init_conf
}

reload_service()
{
	stop
	start
}

service_triggers() {
	procd_add_reload_trigger "gecoosac"
}
