X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=debian%2Fpostinst;h=ce0b232f0b2c9abf2403d142eae1def275bcbf0f;hb=e30e701e1239703070ae351212c71aa1a56075c4;hp=f56b7aca18d4a5e444bda3e08bd851bf707062c6;hpb=83f37b8fd3d56064545b37748c3c511545eb9000;p=squirrelmail-change-pass-cn.git diff --git a/debian/postinst b/debian/postinst index f56b7ac..ce0b232 100644 --- a/debian/postinst +++ b/debian/postinst @@ -6,17 +6,51 @@ set -e [ $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 @@ -36,22 +70,117 @@ if ! egrep -q '^poppassd:' /etc/hosts.allow; then fi -# Configure SquirrelMail change_pass plugin - using defaults, -# no configuration files. +# 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 + + +# Remove change_pass 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/." + 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 -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 files and notify user about +# minimum password length configuration. +# +if egrep -q '^\$plugins\[[0-9]+\][\ ]*=[\ ]*'\''change_pass'\' "$SQCONF"; then + /usr/sbin/squirrelmail-configure --remove-plugin change_pass fi -if [ -f "$CPCONF" ]; then - mv -f "$CPCONF" "$CPCONF.cn-old" - cp_echo "CN: Old $CPCONF disabled and renamed to $CPCONF.cn-old." + +if [ ! -f "$SQCPCONF" ]; then + + if [ -f "$CPCONF" ]; then + cp -f "$CPCONF" "$SQCPCONF" + cp_echo "CN: $CPCONF copied to $SQCPCONF" + else + + # Configuration file does not exist. + cp_echo "CN: Generating new file $SQCPCONF" + cat > "$SQCPCONF" </dev/null`" ]; then - invoke-rc.d xinetd restart || exit $? - else - /etc/init.d/xinetd restart || exit $? - fi - fi + 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