[ $DEBIAN_SCRIPT_DEBUG ] && set -vx
+# Load debconf
+. /usr/share/debconf/confmodule
+
+# Include CARNet functions
+. /usr/share/carnet-tools/functions.sh
+
PKG="squirrelmail-change-pass-cn"
-VERSION="3.0-1"
+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
+temp_files=
+set_min_pass_length () {
-# Include CARNet functions
-. /usr/share/carnet-tools/functions.sh
+ local sed_re conf_file
+ conf_re="$1"
+ conf_file="$2"
+ temp_files="$temp_files $conf_file.dpkg-tmp"
+
+ sed "$conf_re" "$conf_file" > "$conf_file.dpkg-tmp"
+
+ if ! cmp -s "$conf_file" "$conf_file.dpkg-tmp" 2>&1 >/dev/null; then
+ cp_mv "$conf_file.dpkg-tmp" "$conf_file"
+ min_pass_changed=1
+ else
+ rm -f "$conf_file.dpkg-tmp"
+ fi
+}
+
+cleanup () {
+
+ if [ -n "$temp_files" ]; then
+ for temp_item in $temp_files; do
+ if [ -e "$temp_item" ]; then
+ rm -f $temp_item
+ fi
+ done
+ fi
+}
+
+trap cleanup 0 1 2 15
# Configure poppassd to refuse connection from all hosts
# Configure SquirrelMail change_pass plugin - using defaults,
-# no configuration files.
+# no configuration files if earlier version is older than 3.0-1.
#
-if [ "$2" ] && dpkg --compare-versions $2 lt $VERSION; then
+if [ "$2" ] && dpkg --compare-versions $2 lt 3.0-1; then
+
cp_echo "CN: This version of change_pass plugin contains major changes."
cp_echo "CN: For detailed description, see documentation in /usr/share/doc/$PKG/."
+
+ if [ -f "$SQCPCONF" ]; then
+ mv -f "$SQCPCONF" "$SQCPCONF.cn-old"
+ cp_echo "CN: Old $SQCPCONF disabled and renamed to $SQCPCONF.cn-old."
+ fi
+ if [ -f "$CPCONF" ]; then
+ mv -f "$CPCONF" "$CPCONF.cn-old"
+ cp_echo "CN: Old $CPCONF disabled and renamed to $CPCONF.cn-old."
+ fi
fi
-if [ -f "$SQCPCONF" ]; then
- mv -f "$SQCPCONF" "$SQCPCONF.cn-old"
- cp_echo "CN: Old $SQCPCONF disabled and renamed to $SQCPCONF.cn-old."
+
+
+# Check for change_pass configuration file and notify user about
+# minimum password length configuration.
+#
+if [ ! -f "$SQCPCONF" ] && [ ! -f "$CPCONF" ]; then
+
+ # Configuration file does not exist.
+ cp_echo "CN: Generating new file $CPCONF"
+ cat > "$CPCONF" <<EOF
+<?php
+//// Begin - Generated by CARNet package $PKG
+//
+// REMOVE this whole block if you DON'T WANT $PKG
+// to edit your configuration file.
+//
+//// End - Generated by CARNet package $PKG
+ \$min_pass_length = 8;
+
+ // The default server is the configured IMAP server
+ #\$poppass_server = 'localhost';
+
+ // The default port is 106
+ #\$poppass_port = 106;
+
+ \$max_pass_length = 9999999;
+EOF
+ min_pass_changed=1
+else
+
+ # Checking for configuration file/s and minimum password length.
+ echo "CN: Checking for minimum password length configuration."
+ cn_tag_re="^\/\/\/\/ Begin - Generated by CARNet package $PKG$"
+
+ for cpconf_file in $SQCPCONF $CPCONF; do
+
+ min_pass_changed=0
+ if [ -f "$cpconf_file" ]; then
+
+ seddef="/^[[:space:]]*\\\$min_pass_length[[:space:]]*=[^;]*;[[:space:]]*$/d;
+ s/\\\$min_pass_length[[:space:]]*=[^;]*;//g;"
+
+ if egrep -q "$cn_tag_re" "$cpconf_file"; then
+
+ # Configuration file is tagged by CARNet.
+ seddef="$seddef /^\/\/\/\/ End - Generated by CARNet package $PKG$/s/\(.*\)/\1\n"
+ seddef="$seddef \\\$min_pass_length = 8;/"
+
+ set_min_pass_length "$seddef" "$cpconf_file"
+ else
+
+ if [ "$2" ] && dpkg --compare-versions $2 lt 3.0-2; then
+
+ # Add CARNet package info lines to config's header and set up $min_pass_length.
+ seddef="$seddef 0,/?>/s/^[[:space:]]*\(<?php\|<?\)\(.*\)/\1\n"
+ seddef="$seddef\/\/\/\/ Begin - Generated by CARNet $PKG\n\/\/\n"
+ seddef="$seddef\/\/ REMOVE this whole block if you DON'T WANT $PKG\n"
+ seddef="$seddef\/\/ to edit your configuration file.\n\/\/\n"
+ seddef="$seddef\/\/\/\/ End - Generated by CARNet package $PKG\n"
+ seddef="$seddef \\\$min_pass_length = 8;\n\2/"
+
+ set_min_pass_length "$seddef" "$cpconf_file"
+ fi
+ fi
+ fi
+ done
fi
-if [ -f "$CPCONF" ]; then
- mv -f "$CPCONF" "$CPCONF.cn-old"
- cp_echo "CN: Old $CPCONF disabled and renamed to $CPCONF.cn-old."
+
+if [ $min_pass_changed -eq 1 ]; then
+ db_fset squirrelmail-change-pass-cn/min_pass_length seen false
+ db_title squirrelmail-change-pass-cn - konfiguracija
+ db_input critical squirrelmail-change-pass-cn/min_pass_length || true
+ db_go || true
+ cp_echo "CN: Minimum password length has been set to 8 characters."
fi
+db_stop || true
+
# Enable change_pass plugin in SquirrelMail config.php.
#
. /usr/share/carnet-tools/functions.sh
PKG="squirrelmail-change-pass-cn"
+ SQCONFDIR="/etc/squirrelmail"
+ SQCONF="$SQCONFDIR/config.php"
+ CPCONF="/usr/share/squirrelmail/plugins/change_pass/config.php"
need_restart=0
# Remove CARNet configuration from /etc/hosts.allow and
# Remove SquirrelMail change_pass plugin from SquirrelMail
# configuration.
#
- SQCONF=/etc/squirrelmail/config.php
-
if egrep -q '^\$plugins\[[0-9]+\][\ ]*=[\ ]*'\''change_pass'\' "$SQCONF"; then
cp_echo "CN: Disabling SquirrelMail change_pass plugin in $SQCONF"
/usr/sbin/squirrelmail-configure --remove-plugin change_pass
fi
+ # Backup change_pass configuration file (if any) and notify user.
+ #
+ if [ -f "$CPCONF" ]; then
+ cp_echo "CN: Doing backup for $CPCONF"
+ cp_backup_conffile -d "/var/backups/$PKG" -p $CPCONF
+ rm -f $CPCONF
+ rm -f $CPCONF.cn-old
+ cp_echo "CN: Backup is located in directory: /var/backups/$PKG/"
+ fi
+
# Remove poppassd service from xinetd.
#
if [ -f /etc/xinetd.d/poppassd ]; then