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

USE_PROCD=1
START=98

netlog_log_level() {
	local level
	level="$(uci -q get netlog.settings.log_level)"
	case "$level" in
		silent|error|warn|info|debug) printf '%s\n' "$level" ;;
		*) printf '%s\n' info ;;
	esac
}

netlog_should_log() {
	local level
	level="$(netlog_log_level)"
	case "$level:$1" in
		debug:debug|debug:info|debug:warn|debug:error) return 0 ;;
		info:info|info:warn|info:error) return 0 ;;
		warn:warn|warn:error) return 0 ;;
		error:error) return 0 ;;
	esac
	return 1
}

log_debug() { netlog_should_log debug && logger -t netlog -p daemon.debug "$*"; }
log_info()  { netlog_should_log info  && logger -t netlog -p daemon.info  "$*"; }
log_warn()  { netlog_should_log warn  && logger -t netlog -p daemon.warn  "$*"; }
log_error() { netlog_should_log error && logger -t netlog -p daemon.err "$*"; }

start_service() {
	local api_port

	api_port="$(uci -q get netlog.settings.api_port)"
	case "$api_port" in
		''|*[!0-9]*) log_warn "api port invalid value=${api_port:-empty} using=8687"; api_port=8687 ;;
	esac
	[ "$api_port" -ge 1 ] 2>/dev/null && [ "$api_port" -le 65535 ] 2>/dev/null || {
		log_warn "api port out of range value=$api_port using=8687"
		api_port=8687
	}
	log_info "starting url=$(uci -q get netlog.settings.url_enabled 2>/dev/null || echo 1) dns=$(uci -q get netlog.settings.dns_enabled 2>/dev/null || echo 1) api_port=$api_port"

	procd_open_instance
	procd_set_param command /usr/bin/netlogd -p "$api_port"
	procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
	procd_set_param stdout 1
	procd_set_param stderr 1
	procd_close_instance
}

stop_service() {
	log_info "stopping"
	echo 0 >/proc/sys/urllogger_store/enable 2>/dev/null
	echo clear >/dev/urllogger_queue 2>/dev/null
	rm -rf /tmp/netlog/dns-capture /tmp/netlog/watch
}

reload_service() {
	log_info "reloading"
	restart
}

service_triggers() {
	procd_add_reload_trigger "netlog"
}
