Package: pdnsd
Version: 1.2.6-par-1
Severity: normal
Tags: patch

I want to use resolconf with pdnsd and be able to bind to an interface
different than the loopback one, but the current scripts hardcode the
127.0.0.1 address.

Attached you will find a patch that tries to read the server_ip value from the
pdnsd.conf file and uses it when available; if it can't find the value falls
back to use the loopback address.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.22-1-vserver-amd64 (SMP w/2 CPU cores)
Locale: LANG=ca_ES.UTF-8, LC_CTYPE=ca_ES.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages pdnsd depends on:
ii  adduser                       3.105      add and remove users and groups
ii  debconf [debconf-2.0]         1.5.14     Debian configuration management sy
ii  libc6                         2.6.1-5    GNU C Library: Shared libraries

Versions of packages pdnsd recommends:
ii  resolvconf                    1.37       nameserver information handler

-- debconf information excluded

-- 
Sergio Talens-Oliag <[EMAIL PROTECTED]>   <http://people.debian.org/~sto/>
Key fingerprint = 29DF 544F  1BD9 548C  8F15 86EF  6770 052B  B8C1 FA69
diff -ruN pdnsd-1.2.6-par.orig/debian/changelog pdnsd-1.2.6-par/debian/changelog
--- pdnsd-1.2.6-par.orig/debian/changelog	2007-09-24 19:48:15.000000000 +0200
+++ pdnsd-1.2.6-par/debian/changelog	2007-09-24 19:53:13.000000000 +0200
@@ -1,3 +1,11 @@
+pdnsd (1.2.6-par-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Modified init.d and resolvconf scripts to support the use of pdnsd +
+    resolvconf when pdnsd is listening on an IP other than 127.0.0.1
+
+ -- Sergio Talens-Oliag <[EMAIL PROTECTED]>  Mon, 24 Sep 2007 19:51:10 +0200
+
 pdnsd (1.2.6-par-1) unstable; urgency=low
 
   * New upstream release.
diff -ruN pdnsd-1.2.6-par.orig/debian/init.d pdnsd-1.2.6-par/debian/init.d
--- pdnsd-1.2.6-par.orig/debian/init.d	2007-09-24 19:48:15.000000000 +0200
+++ pdnsd-1.2.6-par/debian/init.d	2007-09-24 19:50:34.000000000 +0200
@@ -13,6 +13,7 @@
 
 NAME="pdnsd"
 DESC="proxy DNS server"
+CONFIG_FILE="/etc/pdnsd.conf"
 DAEMON="/usr/sbin/pdnsd"
 PIDFILE="/var/run/pdnsd.pid"
 CACHE="/var/cache/pdnsd/pdnsd.cache"
@@ -25,7 +26,8 @@
 
 if test -n "$AUTO_MODE" && test -f /usr/share/pdnsd/pdnsd-$AUTO_MODE.conf
 then
-    START_OPTIONS="${START_OPTIONS} -c /usr/share/pdnsd/pdnsd-$AUTO_MODE.conf"
+    CONFIG_FILE="/usr/share/pdnsd/pdnsd-$AUTO_MODE.conf"
+    START_OPTIONS="${START_OPTIONS} -c ${CONFIG_FILE}"
 fi
 
 . /lib/lsb/init-functions
@@ -63,7 +65,15 @@
     pdnsd-ctl status >/dev/null 2>&1 || return $?
 
     if [ -x /sbin/resolvconf ] ; then
-        echo "nameserver 127.0.0.1" | /sbin/resolvconf -a "lo.$NAME"
+        if [ -f "${CONFIG_FILE}" ]; then
+            NAMESERVER="$( sed -n -e '/server_ip/ { s/^.*server_ip.*=[^0-9]*\([0-9.]*\).*$/\1/; p; }' ${CONFIG_FILE})"
+            if [ -z "$NAMESERVER" ]; then
+                NAMESERVER="127.0.0.1";
+            fi
+	else
+            NAMESERVER="127.0.0.1";
+        fi
+        echo "nameserver $NAMESERVER" | /sbin/resolvconf -a "lo.$NAME"
     fi
 }
 
diff -ruN pdnsd-1.2.6-par.orig/debian/resolvconf pdnsd-1.2.6-par/debian/resolvconf
--- pdnsd-1.2.6-par.orig/debian/resolvconf	2007-09-24 19:48:15.000000000 +0200
+++ pdnsd-1.2.6-par/debian/resolvconf	2007-09-24 19:50:45.000000000 +0200
@@ -22,6 +22,24 @@
 [ -x /lib/resolvconf/list-records ] || exit 1
 [ -e /var/cache/pdnsd/pdnsd.status ] || exit 0
 
+CONFIG_FILE="/etc/pdnsd.conf"
+if test -r /etc/default/pdnsd; then
+    . "/etc/default/pdnsd"
+fi
+if test -n "$AUTO_MODE" && test -f /usr/share/pdnsd/pdnsd-$AUTO_MODE.conf
+then
+    CONFIG_FILE="/usr/share/pdnsd/pdnsd-$AUTO_MODE.conf"
+fi
+
+if test -r "${CONFIG_FILE}"; then
+    NAMESERVER="$( sed -n -e '/server_ip/ { s/^.*server_ip.*=[^0-9]*\([0-9.]*\).*$/\1/; p; }' ${CONFIG_FILE})"
+    if [ -z "$NAMESERVER" ]; then
+        NAMESERVER="127.0.0.1";
+    fi
+else
+    NAMESERVER="127.0.0.1";
+fi
+
 PATH=/bin:/sbin
 
 uniquify()
@@ -39,7 +57,7 @@
 
 uniquify "`cat $(/lib/resolvconf/list-records) /dev/null            \
             | sed -n -e 's/^[[:space:]]*nameserver[[:space:]]\+//p' \
-            | grep -v '^127.0.0.1$'`"
+            | grep -v "^$NAMESERVER$"`"
 
 if [ -n "$RSLT" ] ; then
 	OUTPUT="$(/usr/sbin/pdnsd-ctl server resolvconf up "$RSLT" || :)"

Reply via email to