You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

134 lines
3.6 KiB

#!/bin/sh
# Load debconf variables
. /usr/share/debconf/confmodule
conffile=/etc/popularity-contest.conf
set -e
if [ -e $conffile ] ; then
# Fetch current values.
. $conffile
fi
# Get this setting from debconf. It was set based on the content of
# /etc/popularity-contest.conf in the 'config' script, so it should be
# safe to ignore the value fetched by loading the file above. This
# should allow for using debconf to reconfigure the package.
db_get popularity-contest/participate || true
if [ "$RET" = "yes" ] || [ "$RET" = "YES" ] || [ "$RET" = "true" ]; then
PARTICIPATE="yes"
else
PARTICIPATE="no"
fi
# The md5 sum of an empty file
EMPTYID="d41d8cd98f00b204e9800998ecf8427e"
generate_id() {
if [ -x /usr/bin/uuidgen ] ; then
MY_HOSTID=`uuidgen | tr -d -`
else
MY_HOSTID=`dd if=/dev/urandom bs=1k count=1 2>/dev/null | md5sum | sed 's/ -//'''`
fi
}
# Select a random day to submit on, to spread the load over time, unless it is already set.
select_random_day() {
DAY=`bash -c 'echo $(($RANDOM % 7))'`
}
generate_conffile() {
generate_id
select_random_day
cat <<-EOF >$conffile
# Config file for Debian's popularity-contest package.
#
# To change this file, use:
# dpkg-reconfigure popularity-contest
#
# You can also edit it by hand, if you so choose.
#
# See /usr/share/popularity-contest/default.conf for more info
# on the options.
MY_HOSTID="$MY_HOSTID"
PARTICIPATE="$PARTICIPATE"
USEHTTP="yes"
DAY="$DAY"
EOF
# preseeding is only allowed on first time install
db_get popularity-contest/submiturls || true
if [ -n "$RET" ] ; then
echo "SUBMITURLS=\"$RET\"" >> $conffile
fi
# Make sure user nobody can read the file.
chmod a+r $conffile
}
case "$1" in
configure)
if [ ! -e $conffile ]; then
generate_conffile
else
# If MY_HOSTID is not set, add it. This is useful when disk images are prepared
if [ -z "$MY_HOSTID" ] ; then
generate_id
echo "MY_HOSTID=\"$MY_HOSTID\"" >> $conffile
fi
OLDHOSTID="$MY_HOSTID";
case "$MY_HOSTID" in
# Workaround for bug #237874 triggered on hurd. The
# problem was fixed in version 1.15, 2004-03-20.
$EMPTYID) generate_id;;
# Workaround for bug #240603 triggered by md5sums change
# of behaviour with stdin. version 1.17, 2004-04-12.
*-) MY_HOSTID="${MY_HOSTID% -}";;
esac;
# If DAY is not set, add it.
if [ -z "$DAY" ] ; then
select_random_day
echo "DAY=\"$DAY\"" >> $conffile
fi
# Replace only if the content changed, to avoid changing the
# config file date when no change was done.
# Commenting out the obsolete addresses, to use the
# default config from /usr/share/ on hosts where
# the old default was unchanged. Replace the "empty" id.
sedopts=" \
s/^PARTICIPATE=.*$/PARTICIPATE=\"$PARTICIPATE\"/; \
s/^\(MAILTO=\"erich-survey@debian.org\"\)$/#\1/; \
s/^\(MAILTO=\"apenwarr-survey@debian.org\"\)$/#\1/; \
s/^\(MAILTO=\"survey@popcon.debian.org\"\)$/#\1/; \
s/^\(MAILTO=\"survey@popcon.devuan.org\"\)$/#\1/; \
"
if [ "$OLDHOSTID" != "$MY_HOSTID" ]; then
sedopts="$sedopts \
s/^MY_HOSTID=\"\\?$OLDHOSTID\"\\?/MY_HOSTID=\"$MY_HOSTID\"/; \
"
fi
if sed "$sedopts" < $conffile > $conffile.new &&
! cmp $conffile $conffile.new > /dev/null; then
mv $conffile.new $conffile
# Make sure user nobody can read the file.
chmod a+r $conffile
else
rm $conffile.new
fi
fi
;;
*)
;;
esac
#DEBHELPER#