mirror of
https://github.com/gSpotx2f/ruantiblock_openwrt.git
synced 2026-05-14 22:50:58 +00:00
77 lines
1.6 KiB
Bash
Executable File
77 lines
1.6 KiB
Bash
Executable File
#!/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
|
|
}
|