X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=src%2Finitscripts%2Finit.d%2Fdnsmasq;h=34eee0c26e8fbb2aa2bab5fe9b098c03d66ba8bd;hp=11859214b9e050b0d428cf23294f00b1a6095985;hb=2b1ff41196a0b9ac6794904427416eb05506f13d;hpb=8642d602745a91ec741d8386743aa47ee543ba27 diff --git a/src/initscripts/init.d/dnsmasq b/src/initscripts/init.d/dnsmasq index 11859214b..34eee0c26 100644 --- a/src/initscripts/init.d/dnsmasq +++ b/src/initscripts/init.d/dnsmasq @@ -22,13 +22,36 @@ fi SHOW_SRV=1 +function dns_forward_args() { + local file="${1}" + + # Do nothing if file is empty. + [ -s "${file}" ] || return + + local cmdline + + local enabled zone server remark + while IFS="," read -r enabled zone server remark; do + # Line must be enabled. + [ "${enabled}" = "on" ] || continue + + cmdline="${cmdline} --server=/${zone}/${server}" + done < ${file} + + echo "${cmdline}" +} + + case "${1}" in start) + # kill already running copy of dnsmasq... + killproc /usr/sbin/dnsmasq 2>&1 > /dev/null + boot_mesg "Starting Domain Name Service Proxy..." eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings) - ARGS= - [ "$DOMAIN_NAME_GREEN" != "" ] && ARGS="-s $DOMAIN_NAME_GREEN" + ARGS="$CUSTOM_ARGS" + [ "$DOMAIN_NAME_GREEN" != "" ] && ARGS="$ARGS -s $DOMAIN_NAME_GREEN" echo > /var/ipfire/red/resolv.conf # Clear it if [ -e "/var/ipfire/red/dns1" ]; then @@ -44,9 +67,11 @@ case "${1}" in fi fi [ -e "/var/ipfire/red/active" ] && ARGS="$ARGS -r /var/ipfire/red/resolv.conf" - + ARGS="$ARGS --domain=`cat /var/ipfire/main/settings |grep DOMAIN |cut -d = -f 2`" - ARGS="$ARGS $CUSTOM_ARGS" + + # Add custom forward dns zones. + ARGS="${ARGS} $(dns_forward_args /var/ipfire/dnsforward/config)" loadproc /usr/sbin/dnsmasq -l /var/state/dhcp/dhcpd.leases $ARGS