Package: privoxy
Version: 3.0.23-3
Severity: wishlist
Tags: patch

Dear Maintainer,

Please consider adding debconf support to privoxy, specifically for
setting the listen-address. This change is needed for FreedomBox to
offer smooth upgrades to our users.

The attached patch does this as follows:
1. The config shipped with privoxy is installed under /usr/share/privoxy
instead of /etc/privoxy.
2. Debconf can ask for listen-address, with localhost:8118 as the
default. The question priority is medium, so it won't be shown to those
with the default debconf settings.
3. ucf is used to merge config updates during upgrades.

Some more background on why this is needed:
FreedomBox (through its user interface, plinth) can install privoxy and
configure it to be available to client devices on the LAN (by setting
listen-address). But currently, our changes to /etc/privoxy/config  make
it difficult to upgrade privoxy, because it will ask which config file
to keep. If plinth can configure privoxy solely through debconf, then
upgrades can be done without prompting (via unattended-upgrades), and
our users can also receive any updates that are made to the packaged config.

--
James
diff --git a/debian/config b/debian/config
new file mode 100755
index 0000000..bfda17a
--- /dev/null
+++ b/debian/config
@@ -0,0 +1,16 @@
+#!/bin/sh
+CONFIG=/etc/privoxy/config
+set -e
+. /usr/share/debconf/confmodule
+
+# Load config file, if it exists.
+if [ -e $CONFIG ]; then
+    LISTENADDRESS=$(awk '/^listen-address/ {print $2}' $CONFIG)
+
+    # Store values from config file into debconf db.
+    db_set privoxy/listen-address "$LISTENADDRESS"
+fi
+
+# Ask questions.
+db_input medium privoxy/listen-address || true
+db_go || true
diff --git a/debian/control b/debian/control
index d1d478d..c74c1ba 100644
--- a/debian/control
+++ b/debian/control
@@ -4,14 +4,14 @@ Priority: optional
 Maintainer: Roland Rosenfeld <rol...@debian.org>
 Build-Depends: debhelper (>= 9), autoconf, autotools-dev, libpcre3-dev,
  jade, docbook-dsssl, docbook, w3m, sp, sgmlspl, groff, man2html, zlib1g-dev,
- dh-systemd (>= 1.4)
+ dh-systemd (>= 1.4), po-debconf
 Standards-Version: 3.9.6
 Homepage: http://www.privoxy.org/
 
 Package: privoxy
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, logrotate,
- adduser, lsb-base (>= 3.2-13), initscripts (>= 2.87dsf-8)
+ adduser, lsb-base (>= 3.2-13), initscripts (>= 2.87dsf-8), debconf, ucf
 Recommends: doc-base
 Description: Privacy enhancing HTTP Proxy
  Privoxy is a web proxy with advanced filtering capabilities for
diff --git a/debian/install b/debian/install
new file mode 100644
index 0000000..a1729f0
--- /dev/null
+++ b/debian/install
@@ -0,0 +1 @@
+config usr/share/privoxy
diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in
new file mode 100644
index 0000000..98e8416
--- /dev/null
+++ b/debian/po/POTFILES.in
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates
\ No newline at end of file
diff --git a/debian/po/templates.pot b/debian/po/templates.pot
new file mode 100644
index 0000000..c8a2543
--- /dev/null
+++ b/debian/po/templates.pot
@@ -0,0 +1,24 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: privoxy\n"
+"Report-Msgid-Bugs-To: priv...@packages.debian.org\n"
+"POT-Creation-Date: 2015-09-05 19:17-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <l...@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: string
+#. Description
+#: ../templates:1001
+msgid "Address and TCP port on which Privoxy will listen for client requests:"
+msgstr ""
diff --git a/debian/postinst b/debian/postinst
index f55b3c8..5467504 100644
--- a/debian/postinst
+++ b/debian/postinst
@@ -25,6 +25,9 @@ set -e
 
 CONFDIR=/etc/privoxy
 CONFIG=$CONFDIR/config
+EXAMPLE_CONFIG=/usr/share/privoxy/config
+
+. /usr/share/debconf/confmodule
 
 case "$1" in
     configure)
@@ -36,6 +39,13 @@ case "$1" in
 	[ -f $CONFDIR/match-all.action ] \
 	    && chown privoxy $CONFDIR/match-all.action
 
+	cp -a -f $EXAMPLE_CONFIG $CONFIG.ucftmp
+	db_get privoxy/listen-address || true
+	sed -i "s/^listen-address.*/listen-address  $RET/" $CONFIG.ucftmp
+	ucf --three-way --debconf-ok $CONFIG.ucftmp $CONFIG
+	ucfr privoxy $CONFIG
+	rm -f $CONFIG.ucftmp
+
 	if [ "x$2" != "x" ] && dpkg --compare-versions "$2" lt "3.0.4"
 	then
 	    # Upgrading from a 3.0.3* version
diff --git a/debian/postrm b/debian/postrm
index 3b761d0..afd3038 100644
--- a/debian/postrm
+++ b/debian/postrm
@@ -21,7 +21,17 @@ set -e
 case "$1" in
     purge)
         # deluser --quiet privoxy
+        if [ -x "$(which ucf 2>/dev/null)" ]; then
+            ucf --purge /etc/privoxy/config
+        fi
+        if [ -x "$(which ucfr 2>/dev/null)" ]; then
+            ucfr --purge privoxy /etc/privoxy/config
+        fi
         rm -rf /var/log/privoxy /etc/privoxy
+        if [ -e /usr/share/debconf/confmodule ]; then
+            . /usr/share/debconf/confmodule
+            db_purge
+        fi
         ;;
 
     remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
diff --git a/debian/rules b/debian/rules
index 286a79c..dfd6bed 100755
--- a/debian/rules
+++ b/debian/rules
@@ -51,7 +51,6 @@ override_dh_auto_clean:
 
 override_dh_auto_install:
 	install -m 0755 privoxy $(DEBDIR)/usr/sbin/privoxy
-	install -m 644 config $(DEBDIR)/etc/privoxy/config
 	install -m 0644 default.action $(DEBDIR)/etc/privoxy/default.action
 	install -m 0644 match-all.action $(DEBDIR)/etc/privoxy/match-all.action
 	install -m 0644 user.action $(DEBDIR)/etc/privoxy/user.action
diff --git a/debian/templates b/debian/templates
new file mode 100644
index 0000000..b42052b
--- /dev/null
+++ b/debian/templates
@@ -0,0 +1,4 @@
+Template: privoxy/listen-address
+Type: string
+Default: localhost:8118
+_Description: Address and TCP port on which Privoxy will listen for client requests:

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to