X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2Finitscripts%2Finit.d%2Fdnsmasq;h=a02097e4109febedae15ee1dd3b0604001b4dd67;hb=3e862ce4f99059002b60994addc87a013d298b38;hp=29a59d3eabab4210661b78b919e3fec306e58ecc;hpb=d1e90efcaaed4ba1b39a92db863afeb35eb15344;p=people%2Fteissler%2Fipfire-2.x.git diff --git a/src/initscripts/init.d/dnsmasq b/src/initscripts/init.d/dnsmasq index 29a59d3ea..a02097e41 100644 --- a/src/initscripts/init.d/dnsmasq +++ b/src/initscripts/init.d/dnsmasq @@ -15,16 +15,72 @@ . /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= - [ "$DOMAIN_NAME_GREEN" == "" ] && ARGS="-s $DOMAIN_NAME_GREEN " - [ -e "/var/ipfire/red/active" ] && ARGS+="-r /var/ipfire/red/resolv.conf" + [ "$DOMAIN_NAME_GREEN" != "" ] && ARGS="-s $DOMAIN_NAME_GREEN" + echo > /var/ipfire/red/resolv.conf # Clear it + if [ -e "/var/ipfire/red/dns1" ]; then + DNS1=$(cat /var/ipfire/red/dns1 2>/dev/null) + if [ ! -z ${DNS1} ]; then + echo "nameserver ${DNS1}" >> /var/ipfire/red/resolv.conf + fi + fi + if [ -e "/var/ipfire/red/dns2" ]; then + DNS2=$(cat /var/ipfire/red/dns2 2>/dev/null) + if [ ! -z ${DNS2} ]; then + echo "nameserver ${DNS2}" >> /var/ipfire/red/resolv.conf + 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)" + + ARGS="$ARGS $CUSTOM_ARGS" + loadproc /usr/sbin/dnsmasq -l /var/state/dhcp/dhcpd.leases $ARGS + + if [ "${SHOW_SRV}" -eq 1 ] && [ "${DNS1}" != "" -o "${DNS2}" != "" ]; then + boot_mesg "Using DNS server(s): ${DNS1} ${DNS2}" + boot_mesg_flush + fi ;; stop)