view debian/config @ 361:dec92f910289 noffle

[svn] improved debconf backup capability
author godisch
date Sat, 29 Mar 2003 07:12:43 +0000
parents a23b37308063
children c036f2b55576
line wrap: on
line source

#!/bin/sh
# $Id: config 500 2003-03-29 07:12:43Z godisch $

set -e
. /usr/share/debconf/confmodule
db_version 2.0
db_capb backup

server_config=/etc/news/noffle.conf
debian_config=/etc/default/noffle

# for backward compatibility = 1.1.2-1, since postinst is not run yet
if [ ! -e $server_config -a -e /etc/noffle.conf ]; then
	server_config=/etc/noffle.conf
fi
# for backward compatibility < 1.1.2-1
if [ ! -e $server_config -a ! -e $debian_config -a -e /etc/noffle/conf ]; then
	server_config=/etc/noffle/conf
	debian_config=/etc/noffle/conf.debian
fi

# are we using debconf?
db_input high noffle/debconf && db_go || :
db_get noffle/debconf
if [ "$RET" = false ]; then
	db_stop
	exit 0
fi

# read server port value from inetd.conf
port="`grep '[[:space:]]/usr/bin/noffle[[:space:]]' /etc/inetd.conf | head -n 1 | sed 's/^#<off># //;s/[[:space:]].*//' 2> /dev/null`" || :
if [ "$port" ]; then
	# read port value from debconf db
	db_get noffle/port
	# for upgrading from < 1.1.2
	[ "$RET" = 119 ] && RET=nntp || :
	# we need confirmation, if they differ
	[ "$port" = "$RET" ] || db_fset noffle/port seen false
	# write current port from inetd.conf into debconf db
	[ "$port" = "${port#\#}" ] && db_set noffle/port "$port" || :
fi

# read server, username, password, maxfetch, default-expire from $server_config
if [ -s "$server_config" ]; then
	db_get noffle/server
	server="`grep '^server' $server_config | head -n 1 | sed 's/^server[[:space:]]*//;s/[[:space:]].*//' 2> /dev/null`" || :
	[ "$server" = "$RET" ] || db_fset noffle/server seen false
	[ "$server" ] && db_set noffle/server "$server" || :

	db_get noffle/username
	server="`grep '^server' $server_config | head -n 1 | sed 's/^server[[:space:]]*//;s/[^[:space:]]*[[:space:]]*//;s/[[:space:]].*//' 2> /dev/null`" || :
	[ "$username" = "$RET" ] || db_fset noffle/username seen false
	[ "$username" ] && db_set noffle/username "$username" || :

	db_get noffle/password
	server="`grep '^server' $server_config | head -n 1 | sed 's/^server[[:space:]]*//;s/[^[:space:]]*[[:space:]]*//;s/[^[:space:]]*[[:space:]]*//;s/[[:space:]].*//' 2> /dev/null`" || :
	[ "$password" = "$RET" ] || db_fset noffle/password seen false
	[ "$password" ] && db_set noffle/password "$password" || :

	db_get noffle/maxfetch
	maxfetch="`grep '^max-fetch' $server_config | head -n 1 | sed 's/^max-fetch[[:space:]]*//' 2> /dev/null`" || :
	[ "$maxfetch" = "$RET" ] || db_fset noffle/maxfetch seen false
	[ "$maxfetch" ] && db_set noffle/maxfetch "$maxfetch" || :

	db_get noffle/default-expire
	defexpire="`grep '^default-expire' $server_config | head -n 1 | sed 's/^default-expire[[:space:]]*//' 2> /dev/null`" || :
	[ "$defexpire" = "$RET" ] || db_fset noffle/defexpire seen false
	[ "$defexpire" ] && db_set noffle/default-expire "$defexpire" || :
fi

# for backward compatibility < 1.1.2-1
if dpkg --compare-versions "$2" lt-nl 1.1.2; then
	db_get noffle/fetchmode
	case "$RET" in
		'via dialup') db_set noffle/fetchmode ppp;;
		'via permanent connection') db_set noffle/fetchmode cron;;
	esac
fi

# read NOFFLE_FETCHMODE from $debian_config
[ -s "$debian_config" ] && . $debian_config || :
[ "$NOFFLE_FETCHMODE" = ppp -o "$NOFFLE_FETCHMODE" = cron ] || \
if [ -x /usr/sbin/pppd ]; then
	NOFFLE_FETCHMODE=ppp
else
	NOFFLE_FETCHMODE=cron
fi
# do we need confirmation?
db_get noffle/fetchmode
[ "$NOFFLE_FETCHMODE" = "$RET" ] || db_fset noffle/fetchmode seen false

# input configuration using backup capability, see debconf-devel(8)
state=2
laststate=8
while [ "$state" -gt 0 -a "$state" -le "$laststate" ]; do
	case "$state" in
	1)
		db_input high noffle/debconf || :
		;;
	2)
		db_input low noffle/port || :
		;;
	3)
		db_input high noffle/server || :
		;;
	4)
		db_input medium noffle/username || :
		;;
	5)
		db_get noffle/username
		if [ "$RET" ]; then
			db_input medium noffle/password || :
		fi
		;;
	6)
		db_input medium noffle/fetchmode || :
		;;
	7)
		db_input medium noffle/maxfetch || :
		;;
	8)
		db_input low noffle/default-expire || :
		;;
	esac
	if db_go; then
		if [ "$state" -eq 1 ]; then
			db_get noffle/debconf
			if [ "$RET" = false ]; then
				break
			fi
		fi
		state=$(($state + 1))
	else
		state=$(($state - 1))
	fi
done

db_stop
exit 0