X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?p=squirrelmail-change-pass-cn.git;a=blobdiff_plain;f=debian%2Fpostinst;h=ce0b232f0b2c9abf2403d142eae1def275bcbf0f;hp=72de9fbafc27a22aec43e3d7e046a5bdc2dcf739;hb=e30e701e1239703070ae351212c71aa1a56075c4;hpb=0b467981e222732a353b5ebe299f5c6b206a99de diff --git a/debian/postinst b/debian/postinst index 72de9fb..ce0b232 100644 --- a/debian/postinst +++ b/debian/postinst @@ -6,50 +6,191 @@ set -e [ $DEBIAN_SCRIPT_DEBUG ] && set -vx -PKG="squirrelmail-change-pass-cn" -SQCONF=/etc/squirrelmail/config.php +# Load debconf +. /usr/share/debconf/confmodule # 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 +temp_files= + +set_min_pass_length () { + + 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 # 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 + + +# 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 - 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 +# 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 -# Enable change_pass plugin in SquirrelMail config.php. +# 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 + + # Configuration file does not exist. + cp_echo "CN: Generating new file $SQCPCONF" + cat > "$SQCPCONF" < "$SQCONFTMP" - cp_mv "$SQCONFTMP" "$SQCONF" - echo "." - fi + if egrep -q "$cn_tag_re" "$SQCPCONF"; 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" "$SQCPCONF" + else + + if 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:]]*\( /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" + exit 0