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

START=99
STOP=01

APP_NAME="ruantiblock"
APP_EXEC="/usr/bin/${APP_NAME}"
VAR_DIR="/tmp"
UBUS_ATTEMPTS=10

get_dnsmasq_confdir() {
	local _current_dir="$1" _i=0 _first_instance_dir
	if [ -d "${VAR_DIR}/dnsmasq.d" ]; then
		printf "${VAR_DIR}/dnsmasq.d"
		return 0
	else
		while [ $_i -lt $UBUS_ATTEMPTS ]
		do
			_first_instance_dir=$(ubus call service list | jsonfilter -e "VAR=$.dnsmasq.instances.*.mount" | awk -v CUR_DIR="$_current_dir" '
				BEGIN {
					RS = " ";
				}
				{
					sub("VAR=", "", $0);
					gsub(/[\047,\073,\\]/, "", $0);
					if($0 ~ /^\/tmp\/dnsmasq\./ && !($0 in a)) {
						a[length(a)] = $0;
					};
				}
				END {
					print (CUR_DIR in a) ? CUR_DIR : a[0];
				}')
			if [ -n "$_first_instance_dir" ]; then
				printf "$_first_instance_dir"
				return 0
			fi
			_i=$(($_i + 1))
			sleep 1
		done
	fi
	return 1
}

start() {
	local _update_at_startup _dnsmasq_confdir_cur _dnsmasq_confdir
	config_load $APP_NAME
	config_get _update_at_startup config update_at_startup
	config_get _dnsmasq_confdir_cur config dnsmasq_confdir ""
	_dnsmasq_confdir=$(get_dnsmasq_confdir "$_dnsmasq_confdir_cur")
	if [ $? -eq 0 -a -n "$_dnsmasq_confdir" ]; then
		if [ "$_dnsmasq_confdir" != "$_dnsmasq_confdir_cur" ]; then
			uci set "${APP_NAME}.config.dnsmasq_confdir"="$_dnsmasq_confdir"
			uci commit ruantiblock
		fi
	else
		exit 1
	fi
	$APP_EXEC start
	if [ $? -eq 0 -a "$_update_at_startup" = "1" ]; then
		$APP_EXEC update > /dev/null &
	else
		/etc/init.d/dnsmasq restart
	fi
}

stop() {
	$APP_EXEC stop
}

restart() {
	$APP_EXEC restart
}

reload() {
	$APP_EXEC reload
}
