[ "$1" = "configure" ] || exit 0
[ $DEBIAN_SCRIPT_DEBUG ] && set -vx
-
-PKG="squirrelmail-change-pass-cn"
-SQCONF=/etc/squirrelmail/config.php
-
# Include CARNet functions
. /usr/share/carnet-tools/functions.sh
+PKG="squirrelmail-change-pass-cn"
+VERSION="3.0.2"
+SQCONFDIR="/etc/squirrelmail"
+SQCONF="$SQCONFDIR/config.php"
+SQCPCONF="$SQCONFDIR/config_change_pass.php"
+CPCONF="/usr/share/squirrelmail/plugins/change_pass/config.php"
+need_restart=0
+min_pass_changed=0
+
# Configure poppassd to refuse connection from all hosts
# but localhost (127.0.0.1).
#
-if [ -e /etc/hosts.deny -a -e /etc/hosts.allow ]; then
+if [ ! -f /etc/hosts.deny ]; then
+ touch /etc/hosts.deny
+fi
+if ! egrep -q '^poppassd:' /etc/hosts.deny; then
+ echo "poppassd: ALL" | cp-update "$PKG" /etc/hosts.deny
+fi
+if [ ! -f /etc/hosts.allow ]; then
+ touch /etc/hosts.allow
+fi
+if ! egrep -q '^poppassd:' /etc/hosts.allow; then
+ echo "poppassd: 127.0.0.1" | cp-update "$PKG" /etc/hosts.allow
+fi
- if ! egrep -q '^poppassd:' /etc/hosts.deny; then
- echo "poppassd: ALL" | cp-update "$PKG" /etc/hosts.deny
- fi
- if ! egrep -q '^poppassd:' /etc/hosts.allow; then
- echo "poppassd: 127.0.0.1" | cp-update "$PKG" /etc/hosts.allow
- fi
+# First of all, do the backup.
+#
+done_backup=0
+for cpconf_file in $SQCPCONF $CPCONF; do
+ if [ -f "$cpconf_file" ] && [ ! -L "$cpconf_file" ]; then
+ cp_echo "CN: Doing backup for $cpconf_file"
+ cp_backup_conffile -d "/var/backups/$PKG" -p $cpconf_file
+ done_backup=1
+ fi
+done
+if [ $done_backup -eq 1 ]; then
+ cp_echo "CN: Backup is located in directory: /var/backups/$PKG/"
fi
-# Enable change_pass plugin in SquirrelMail config.php.
+# Remove change_pass configuration files if earlier version is
+# older than 3.0-1.
+#
+if [ "$2" ] && dpkg --compare-versions $2 lt 3.0-1; then
+
+ cp_echo "CN: This version of change_pass plugin contains major changes."
+ for cpconf_file in $SQCPCONF $CPCONF; do
+ if [ -f "$cpconf_file" ] || [ -L "$cpconf_file" ]; then
+ rm -f $cpconf_file
+ cp_echo "CN: Removed old $cpconf_file"
+ fi
+ done
+fi
+
+
+# Check for change_pass configuration files and notify user about
+# minimum password length configuration.
#
-if ! egrep '^\$plugins\[[0-9]+\][\ ]*=[\ ]*'\''change_pass'\' "$SQCONF"; then
+if egrep -q '^\$plugins\[[0-9]+\][\ ]*=[\ ]*'\''change_pass'\' "$SQCONF"; then
+ /usr/sbin/squirrelmail-configure --remove-plugin change_pass
+fi
+
+if [ ! -f "$SQCPCONF" ]; then
+
+ if [ -f "$CPCONF" ]; then
+ cp -f "$CPCONF" "$SQCPCONF"
+ cp_echo "CN: $CPCONF copied to $SQCPCONF"
+ else
- sq_last_plugin=`egrep '^\\$plugins\[[0-9]+\][\ ]*=[\ ]*'\' "$SQCONF" | sed 's/^.*\[//;s/\].*//' | sort -n | tail -n1` || true
-
- if [ -n "$sq_last_plugin" ]; then
+ # Configuration file does not exist.
+ cp_echo "CN: Generating new file $SQCPCONF"
+ cat > "$SQCPCONF" <<EOF
+<?php
+ // The default server is the configured IMAP server
+ #\$poppass_server = 'localhost';
+
+ // The default port is 106
+ #\$poppass_port = 106;
+
+ \$min_pass_length = 8;
+ \$max_pass_length = 9999999;
+EOF
+ min_pass_changed=1
+ fi
+fi
- # Backup SquirrelMail configuration file.
- cp_check_and_backup "$SQCONF"
+# Just to be sure.
+ln -sf "$SQCPCONF" "$CPCONF"
- change_pass_num=$sq_last_plugin
- let change_pass_num++
-
- SQCONFTMP=`mktemp $SQCONF.tmp.XXXXXX`
+if [ $min_pass_changed -eq 1 ]; then
+ cp_echo "CN: Minimum password length has been set to 8 characters."
+fi
- echo -n "CN: Enabling SquirrelMail change_pass plugin in $SQCONF"
- sed '/^$plugins\[.*'${sq_last_plugin}'\]/a $plugins['${change_pass_num}'] = '\''change_pass'\'';' "$SQCONF" > "$SQCONFTMP"
- cp_mv "$SQCONFTMP" "$SQCONF"
- echo "."
- fi
+# Enable change_pass plugin in SquirrelMail config.php.
+#
+if ! egrep -q '^\$plugins\[[0-9]+\][\ ]*=[\ ]*'\''change_pass'\' "$SQCONF"; then
+ /usr/sbin/squirrelmail-configure --install-plugin change_pass
fi
#
if [ -x /etc/init.d/xinetd -a -d /etc/xinetd.d -a -x /usr/sbin/itox ]; then
- if egrep -q '^poppassd' /etc/inetd.conf && \
- [ ! -e /etc/xinetd.d/poppassd ]; then
+ if egrep -q '^poppassd' /etc/inetd.conf && \
+ [ ! -f /etc/xinetd.d/poppassd ]; then
- echo -n "CN: Enabling poppassd in /etc/xinetd.d/poppassd"
+ cp_echo "CN: Enabling poppassd in /etc/xinetd.d/poppassd"
- touch /etc/xinetd.d/poppassd.$$
- grep "^poppassd" /etc/inetd.conf | \
- itox -daemon_dir /usr/sbin | cp-update "$PKG" /etc/xinetd.d/poppassd.$$
- cp_mv /etc/xinetd.d/poppassd.$$ /etc/xinetd.d/poppassd
+ touch /etc/xinetd.d/poppassd.$$
+ grep "^poppassd" /etc/inetd.conf | \
+ itox -daemon_dir /usr/sbin | cp-update "$PKG" /etc/xinetd.d/poppassd.$$
+ cp_mv /etc/xinetd.d/poppassd.$$ /etc/xinetd.d/poppassd
- changed_config=1
- echo "."
- fi
+ need_restart=1
+ fi
fi
# Restart xinetd if needed.
#
-[ "$changed_config" ] && do=reload
-pgrep -u root -f /usr/sbin/xinetd > /dev/null || do=start
-
-if [ "$do" ]; then
-
- if [ -x "/etc/init.d/xinetd" ]; then
- if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
- invoke-rc.d xinetd "$do" || exit $?
- else
- /etc/init.d/xinetd "$do" || exit $?
- fi
- fi
+if [ $need_restart -eq 1 ]; then
+
+ if [ -x "/etc/init.d/xinetd" ]; then
+ if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
+ invoke-rc.d xinetd restart || exit $?
+ else
+ /etc/init.d/xinetd restart || exit $?
+ fi
+ fi
fi
+
+# Mail root
+#
+cp_mail "$PKG"
+
+#DEBHELPER#
+
exit 0