|
|
@@ -75,23 +75,76 @@ restart_dnsmasq()
|
|
|
$DNSMASQ_CMD
|
|
|
}
|
|
|
|
|
|
+get_server_ip()
|
|
|
+{
|
|
|
+ IPS="`ifconfig | grep "inet addr" | grep -v ":127" | grep "Bcast" | awk '{print $2}' | awk -F: '{print $2}'`"
|
|
|
+ LOCAL_SERVER_IP=""
|
|
|
+ for IP in $IPS
|
|
|
+ do
|
|
|
+ N=3
|
|
|
+ while [ $N -gt 0 ]
|
|
|
+ do
|
|
|
+ ADDR=`echo $IP | awk -F. "{for(i=1;i<=$N;i++)printf \\$i\".\"}"`
|
|
|
+ grep "dhcp-range=" $DNSMASQ_CONF | grep lan | grep $ADDR >/dev/null 2>&1
|
|
|
+ if [ $? -eq 0 ]; then
|
|
|
+ LOCAL_SERVER_IP="$IP"
|
|
|
+ return 0
|
|
|
+ fi
|
|
|
+ N="`expr $N - 1`"
|
|
|
+ done
|
|
|
+ done
|
|
|
+
|
|
|
+ return 1
|
|
|
+}
|
|
|
+
|
|
|
set_dnsmasq()
|
|
|
{
|
|
|
- grep "^port *=$SMARTDNS_PORT" $DNSMASQ_CONF > /dev/null 2>&1
|
|
|
+ local RESTART_DNSMASQ=0
|
|
|
+ local LOCAL_SERVER_IP=""
|
|
|
+ get_server_ip
|
|
|
+ if [ "$LOCAL_SERVER_IP" ]; then
|
|
|
+ grep "dhcp-option *=" $DNSMASQ_CONF | grep "lan,6,$LOCAL_SERVER_IP" > /dev/null 2>&1
|
|
|
+ if [ $? -ne 0 ]; then
|
|
|
+ sed -i "/^dhcp-option *=lan,6,/d" $DNSMASQ_CONF
|
|
|
+ echo "dhcp-option=lan,6,$LOCAL_SERVER_IP" >> $DNSMASQ_CONF
|
|
|
+ RESTART_DNSMASQ=1
|
|
|
+ fi
|
|
|
+ fi
|
|
|
+
|
|
|
+ grep "^port *=0" $DNSMASQ_CONF > /dev/null 2>&1
|
|
|
if [ $? -ne 0 ]; then
|
|
|
sed -i "/^port *=/d" $DNSMASQ_CONF
|
|
|
- echo "port=$SMARTDNS_PORT" >> $DNSMASQ_CONF
|
|
|
- restart_dnsmasq
|
|
|
+ echo "port=0" >> $DNSMASQ_CONF
|
|
|
+ RESTART_DNSMASQ=1
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ $RESTART_DNSMASQ -ne 0 ]; then
|
|
|
+ restart_dnsmasq
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
clear_dnsmasq()
|
|
|
{
|
|
|
+ local RESTART_DNSMASQ=0
|
|
|
+ local LOCAL_SERVER_IP=""
|
|
|
+ get_server_ip
|
|
|
+ if [ "$LOCAL_SERVER_IP" ]; then
|
|
|
+ grep "dhcp-option *=" $DNSMASQ_CONF | grep "lan,6,$LOCAL_SERVER_IP" > /dev/null 2>&1
|
|
|
+ if [ $? -eq 0 ]; then
|
|
|
+ sed -i "/^dhcp-option *=lan,6,/d" $DNSMASQ_CONF
|
|
|
+ RESTART_DNSMASQ=1
|
|
|
+ fi
|
|
|
+ fi
|
|
|
+
|
|
|
grep "^port *=" $DNSMASQ_CONF > /dev/null 2>&1
|
|
|
if [ $? -eq 0 ]; then
|
|
|
sed -i "/^port *=/d" $DNSMASQ_CONF
|
|
|
- restart_dnsmasq
|
|
|
+ RESTART_DNSMASQ=1
|
|
|
+ fi
|
|
|
+
|
|
|
+ if [ $RESTART_DNSMASQ -ne 0 ]; then
|
|
|
+ restart_dnsmasq
|
|
|
fi
|
|
|
}
|
|
|
|