diff debian/postinst @ 425:c2fd00030991 noffle

[svn] added preliminary ucf support
author godisch
date Fri, 20 Jun 2003 17:48:28 +0100
parents e5bd838e0c27
children 011e51924b23
line wrap: on
line diff
--- a/debian/postinst	Fri Jun 20 16:58:53 2003 +0100
+++ b/debian/postinst	Fri Jun 20 17:48:28 2003 +0100
@@ -1,108 +1,90 @@
 #!/bin/sh
-# $Id: postinst 562 2003-06-20 06:05:22Z godisch $
+# $Id: postinst 568 2003-06-20 16:48:28Z godisch $
 
 set -e
 
 [ "$1" = configure ] || exit 0
 
-server_config=/etc/news/noffle.conf
-debian_config=/etc/default/noffle
-
 maxfetch_default=300
 defexpire_default=14
 
 if dpkg --compare-versions "$2" lt-nl 1.1.2-1; then
 	echo
-	echo "/etc/noffle/conf moved to $server_config, /etc/noffle/conf.debian"
-	echo "moved to $debian_config. /etc/noffle and /var/log/noffle are not"
+	echo "/etc/noffle/conf moved to /etc/news/noffle.conf, /etc/noffle/conf.debian"
+	echo "moved to /etc/default/noffle. /etc/noffle and /var/log/noffle are not"
 	echo "used any longer, you may remove them. noffle expiration logs are"
 	echo "still available through syslog."
 	echo
 	sleep 2
-	mv -f /etc/noffle/conf $server_config || :
-	mv -f /etc/noffle/conf.debian $debian_config || :
-	mv -f /etc/noffle/conf.old $server_config.old 2> /dev/null || :
-	mv -f /etc/noffle/conf.debian.old $debian_config.old 2> /dev/null || :
+	mv -f /etc/noffle/conf /etc/news/noffle.conf || :
+	mv -f /etc/noffle/conf.debian /etc/default/noffle || :
+	mv -f /etc/noffle/conf.old /etc/news/noffle.conf.old 2> /dev/null || :
+	mv -f /etc/noffle/conf.debian.old /etc/default/noffle.old 2> /dev/null || :
 	rmdir --ignore-fail-on-non-empty /etc/noffle
 fi
 
 if dpkg --compare-versions "$2" eq 1.1.2-1; then
 	# 1.1.2-1 was in unstable only, don't notify
-	mv -f /etc/noffle.conf $server_config || :
-	mv -f /etc/noffle.conf.old $server_config.old 2> /dev/null || :
+	mv -f /etc/noffle.conf /etc/news/noffle.conf || :
+	mv -f /etc/noffle.conf.old /etc/news/noffle.conf.old 2> /dev/null || :
 fi
 
 if [ -e /usr/share/debconf/confmodule ]; then
 	. /usr/share/debconf/confmodule
 	db_version 2.0
-	db_get noffle/debconf
-	if [ "$RET" = true ]; then
-		db_get noffle/port
-		port="$RET"
-		if [ -z "$port" -o "$port" = 119 ]; then
-			port=nntp
-		fi
-		# maybe disabled only, e.g. dpkg -r noffle
-		update-inetd --remove "/usr/bin/noffle -r" || :
-		update-inetd --group MAIL --add "$port\tstream\ttcp\tnowait\tnews\t/usr/sbin/tcpd /usr/bin/noffle -r"
-		db_get noffle/server
-		server="$RET"
-		[ "$server" ] || server=news
-		db_get noffle/username
-		username="$RET"
-		db_get noffle/password
-		password="$RET"
-		db_get noffle/fetchmode
-		fetchmode="$RET"
-		[ "$fetchmode" ] || if [ -x /usr/sbin/pppd ]; then
-			fetchmode=ppp
-		else
-			fetchmode=cron
-		fi
-		db_get noffle/maxfetch
-		maxfetch="$RET"
-		[ "$maxfetch" ] || maxfetch="$maxfetch_default"
-		db_get noffle/default-expire
-		defexpire="$RET"
-		[ "$defexpire" ] || defexpire="$defexpire_default"
-		# try to be idempotent
-		if [ ! -e $server_config.new -a ! -e $debian_config.new ]; then
-			# make some backup files
-			cmp -s $server_config $server_config.old || \
-				cp -pf $server_config $server_config.old 2> /dev/null || :
-			cmp -s $debian_config $debian_config.old || \
-				cp -pf $debian_config $debian_config.old 2> /dev/null || :
-		fi
-		# $server_config may contain sensitive information for NNTP authentication
-		umask 027
-		# we need to use sed instead of Perl to avoid another package dependency
-		cat /usr/share/noffle/noffle.conf | \
-			sed "s/^server[[:space:]].*/server $server $username $password/" | \
-			sed "s/^max-fetch[[:space:]].*/max-fetch $maxfetch/" | \
-			sed "s/^default-expire[[:space:]].*/default-expire $defexpire/" \
-			> $server_config.new
-		chgrp news $server_config.new
-		umask 022
-		cat /usr/share/noffle/conf.debian | \
-			sed "s/^NOFFLE_FETCHMODE=.*/NOFFLE_FETCHMODE=$fetchmode/" \
-			> $debian_config.new
-		mv -f $server_config.new $server_config
-		mv -f $debian_config.new $debian_config
+
+	db_get noffle/port
+	port="$RET"
+	if [ -z "$port" -o "$port" = 119 ]; then
+		port=nntp
+	fi
+	update-inetd --remove "/usr/bin/noffle -r" || :
+	update-inetd --group MAIL --add "$port\tstream\ttcp\tnowait\tnews\t/usr/sbin/tcpd /usr/bin/noffle -r"
+
+	db_get noffle/server
+	server="$RET"
+	[ "$server" ] || server=news
+	db_get noffle/username
+	username="$RET"
+	db_get noffle/password
+	password="$RET"
+	db_get noffle/fetchmode
+	fetchmode="$RET"
+	[ "$fetchmode" ] || if [ -x /usr/sbin/pppd ]; then
+		fetchmode=ppp
+	else
+		fetchmode=cron
 	fi
+	db_get noffle/maxfetch
+	maxfetch="$RET"
+	[ "$maxfetch" ] || maxfetch="$maxfetch_default"
+	db_get noffle/default-expire
+	defexpire="$RET"
+	[ "$defexpire" ] || defexpire="$defexpire_default"
+
+	# /etc/news/noffle.conf may contain sensitive information for NNTP authentication
+	umask 027
+	cat /usr/share/noffle/noffle.conf | \
+		sed "s/^server[[:space:]].*/server $server $username $password/" | \
+		sed "s/^max-fetch[[:space:]].*/max-fetch $maxfetch/" | \
+		sed "s/^default-expire[[:space:]].*/default-expire $defexpire/" \
+		> /etc/news/noffle.conf.new
+	chgrp news /etc/news/noffle.conf.new
+	ucf --three-way /etc/news/noffle.conf.new /etc/news/noffle.conf < /dev/tty
+	rm -f /etc/news/noffle.conf.new
+
+	umask 022
+	cat /usr/share/noffle/conf.debian | \
+		sed "s/^NOFFLE_FETCHMODE=.*/NOFFLE_FETCHMODE=$fetchmode/" \
+		> /etc/default/noffle.new
+	ucf --three-way /etc/default/noffle.new /etc/default/noffle < /dev/tty
+	rm -f /etc/default/noffle.new
+
 	db_stop
 else
 	# no debconf available
-	if [ ! -e $server_config ]; then
-		umask 027
-		cp -f /usr/share/noffle/noffle.conf $server_config.new
-		chgrp news $server_config.new
-		mv -fb $server_config.new $server_config
-	fi
-	if [ ! -e $debian_config ]; then
-		umask 022
-		cp -f /usr/share/noffle/conf.debian $debian_config.new
-		mv -fb $debian_config.new $debian_config
-	fi
+	ucf --three-way /usr/share/noffle/noffle.conf /etc/news/noffle.conf < /dev/tty
+	ucf --three-way /usr/share/noffle/conf.debian /etc/default/noffle < /dev/tty
 	if ! grep -q "/usr/bin/noffle -r" /etc/inetd.conf; then
 		# just an example, the user needs to activate it himself
 		# update-inetd will silently fail if nntp is already occupied
@@ -110,6 +92,10 @@
 		if grep -q "^nntp.*/usr/bin/noffle -r"; then
 			update-inetd --disable nntp
 		fi
+		echo
+		echo "You need to active noffle manually in /etc/inetd.conf."
+		echo
+		sleep 2
 	fi
 fi