X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=src%2Finitscripts%2Finit.d%2Fdnsmasq;h=15db47c18f7d295e78efa9ec0ee873432bb5370a;hp=0dfb1f4e3b441b0aa77d5f7f96590b2cde91769e;hb=2340d265b1a21f036a04d2ad9649bd7637eeda71;hpb=f077bfc85b3471297971520158b2833911c958aa diff --git a/src/initscripts/init.d/dnsmasq b/src/initscripts/init.d/dnsmasq index 0dfb1f4e3..15db47c18 100644 --- a/src/initscripts/init.d/dnsmasq +++ b/src/initscripts/init.d/dnsmasq @@ -15,14 +15,42 @@ . /etc/sysconfig/rc . ${rc_functions} +# Pull custom configuration file +if [ -e "/etc/sysconfig/dnsmasq" ]; then + . /etc/sysconfig/dnsmasq +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= + ARGS="$CUSTOM_ARGS" [ "$DOMAIN_NAME_GREEN" != "" ] && ARGS="-s $DOMAIN_NAME_GREEN" echo > /var/ipfire/red/resolv.conf # Clear it @@ -39,9 +67,12 @@ 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`" - + + # 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 if [ "${SHOW_SRV}" -eq 1 ] && [ "${DNS1}" != "" -o "${DNS2}" != "" ]; then