1
1
Files
zyxel-vmg8825_b50b-cfw/package/network/services/dnsmasq/files/dnsmasq.sh.ZyXEL
T
2026-04-17 18:33:03 +02:00

137 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
export PATH=/home/bin:/home/scripts:/opt/bin:/bin:/sbin:/usr/bin:/usr/sbin
#export LD_LIBRARY_PATH=/lib/public:/lib/private:/usr/lib:/lib:/usr/lib/ebtables:/usr/lib/iptables
SUPPORT_LIB64=`ls / | grep lib64`
if [ "$SUPPORT_LIB64" == "lib64" ] ;then
export LD_LIBRARY_PATH=/lib/public:/lib/private:/usr/lib:/lib:/lib64/gpl:/lib64:/usr/lib/ebtables:/usr/lib/iptables
else
export LD_LIBRARY_PATH=/lib/public:/lib/private:/usr/lib:/lib:/usr/lib/ebtables:/usr/lib/iptables
fi
EXEC_NAME=dnsmasq
EXEC_PATH=/usr/sbin
EXEC_CONF=/etc/dnsmasq.conf
USER=root
DNSMASQ_LOG_CONF=/var/dnsmasq/conf.d/logquit.conf
DNSMASQ_LOG_CONF_BACK=/var/dnsmasq/conf.d/logquit.conf_back
logchk()
{
local re_start=0
if [ ! -f $DNSMASQ_LOG_CONF ]; then
echo "quiet-dhcp" > $DNSMASQ_LOG_CONF
echo "quiet-dhcp6" >> $DNSMASQ_LOG_CONF
echo "quiet-ra" >> $DNSMASQ_LOG_CONF
re_start=1
fi
cp $DNSMASQ_LOG_CONF $DNSMASQ_LOG_CONF_BACK
local str=""
for i in $@
do
if [ -z ${i##*dhcp-log*} ]; then
str='quiet-dhcp'
elif [ -z ${i##*dhcp6-log*} ]; then
str='quiet-dhcp6'
elif [ -z ${i##*ra-log*} ]; then
str='quiet-ra'
else
str=''
fi
if [ ! -z $str ]; then
local replace=$str
if [ -z ${i##enable*} ]; then
replace='#'$replace
fi
local chk=`cat $DNSMASQ_LOG_CONF | grep "^#*\s*$str\s*$"`
if [ ! -z $chk ]; then
sed -i "s/^#*[ tab]*$str[ tab]*$/$replace/g" $DNSMASQ_LOG_CONF
else
echo "$replace" >> $DNSMASQ_LOG_CONF
fi
fi
done
local orig_size=`ls -al $DNSMASQ_LOG_CONF_BACK | awk '{print $5}'`
local res_size=`ls -al $DNSMASQ_LOG_CONF | awk '{print $5}'`
if [ $orig_size -ne $res_size ]; then
re_start=1
fi
rm $DNSMASQ_LOG_CONF_BACK
echo $re_start
}
reload()
{
PID=$(pgrep dnsmasq)
if [ "$PID" == "" ] ; then
echo 'dnsmasq not running'
else
kill -HUP "$PID"
fi
}
start()
{
/bin/mkdir -p /var/dnsmasq/
/bin/mkdir -p /var/dnsmasq/conf.d
ln -sf $EXEC_CONF /var/dnsmasq/dnsmasq.conf
local re=$(logchk)
$EXEC_PATH/$EXEC_NAME -u $USER -q --conf-file=$EXEC_CONF
}
stop()
{
killall -9 $EXEC_NAME
}
case "$1" in
start)
PID=$(pgrep dnsmasq)
if [ "$PID" == "" ] ; then
start
else
echo 'dnsmasq is already running !!!'
fi
exit 0
;;
stop)
stop
exit 0
;;
restart)
stop
start
exit 0
;;
reload)
reload
exit 0
;;
log)
re=$(logchk $@)
if [ $re -eq 1 ]; then
stop
start
fi
exit 0
;;
*)
echo "$0: unrecognized option $1"
exit 1
;;
esac