From: Dragan Dosen <bane@nekkar.carnet.hr> Date: Tue, 9 Feb 2010 22:00:53 +0000 (+0100) Subject: Automatsko podesavanje minimalne duzine zaporke (8 znakova) X-Git-Tag: v3.0-2~5 X-Git-Url: http://ftp.carnet.hr/pub/carnet-debian/scm?a=commitdiff_plain;h=849101efcfa61514aed2280735a17d8551bca5af;p=squirrelmail-change-pass-cn.git Automatsko podesavanje minimalne duzine zaporke (8 znakova) u konfiguraciji change_pass dodatka. (rijeseno: #9565) Izmjene unutar datoteka: debian/postinst, debian/prerm i debian/control. Datoteka config_example.php prebacena je u direktorij /usr/share/doc/squirrelmail-change-pass-cn/examples/. Azurirana datoteka README.CARNet. --- diff --git a/debian/README.CARNet b/debian/README.CARNet index 936e468..e34b51b 100644 --- a/debian/README.CARNet +++ b/debian/README.CARNet @@ -31,6 +31,11 @@ ili /etc/squirrelmail/config_change_pass.php +Paket automatski podesava minimalnu duzinu zaporke na 8 znakova - +duzina zaporke nije odredjena PAM konfiguracijom, vec je definirana +u konfiguracijskoj datoteci za change_pass dodatak (varijabla +$min_pass_length). + Dokumentacija se nalazi unutar direktorija: /usr/share/doc/squirrelmail-change-pass-cn/ @@ -40,4 +45,4 @@ Izvorni odrzavatelj paketa: Zoran Dzelajlija <jelly+paketi@srce.hr>. Trenutno odrzava: Dragan Dosen <ddosen@ffzg.hr>. - -- Dragan Dosen <ddosen@ffzg.hr> Thu, 28 May 2009 12:35:18 +0200 + -- Dragan Dosen <ddosen@ffzg.hr> Mon, 8 Feb 2010 22:29:11 +0100 diff --git a/debian/changelog b/debian/changelog index 54db6b8..8a65e71 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,15 @@ +squirrelmail-change-pass-cn (3.0-2) stable; urgency=low + + * Automatsko podesavanje minimalne duzine zaporke (8 znakova) + u konfiguraciji change_pass dodatka. (rijeseno: #9565) + * Izmjene unutar datoteka: debian/postinst, debian/prerm i + debian/control. + * Datoteka config_example.php prebacena je u direktorij + /usr/share/doc/squirrelmail-change-pass-cn/examples/. + * Azurirana datoteka README.CARNet. + + -- Dragan Dosen <ddosen@ffzg.hr> Mon, 8 Feb 2010 22:29:11 +0100 + squirrelmail-change-pass-cn (3.0-1) stable; urgency=low * Upgrade paketa za Debian lenny. diff --git a/debian/control b/debian/control index 6dbfd20..d65a85d 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,7 @@ Standards-Version: 3.7.2 Package: squirrelmail-change-pass-cn Architecture: all -Depends: squirrelmail-cn (>= 2:1.4.15-2lenny1), squirrelmail-compatibility (>= 2.0.12-1), xinetd-cn (>= 1:2.3.14-3lenny1), poppassd (>= 1.8.5-3.2), carnet-tools-cn (>= 2.8.1) +Depends: squirrelmail-cn (>= 2:1.4.15-2lenny1), squirrelmail-compatibility (>= 2.0.12-1), xinetd-cn (>= 1:2.3.14-3lenny1), poppassd (>= 1.8.5-3.2), carnet-tools-cn (>= 2.8.1), ${misc:Depends} Description: change passwords from SquirrelMail via poppassd change_pass is a SquirrelMail plugin that lets you change your password using poppassd service. This is pretty safe if the diff --git a/debian/examples b/debian/examples new file mode 100644 index 0000000..d42df99 --- /dev/null +++ b/debian/examples @@ -0,0 +1 @@ +change_pass/config_example.php diff --git a/debian/postinst b/debian/postinst index f56b7ac..f515ad7 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 @@ -37,21 +71,100 @@ fi # 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. # diff --git a/debian/prerm b/debian/prerm index 9827786..2f28968 100644 --- a/debian/prerm +++ b/debian/prerm @@ -9,6 +9,9 @@ case "$1" in . /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 @@ -24,13 +27,21 @@ case "$1" in # 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 diff --git a/debian/rules b/debian/rules index 634eafd..b7c199b 100755 --- a/debian/rules +++ b/debian/rules @@ -38,8 +38,8 @@ binary-arch: build install dh_testroot dh_installchangelogs dh_installdocs - dh_install -X.svn -Xchange_pass/doc -# dh_installexamples + dh_install -X.svn -Xchange_pass/doc -Xchange_pass/config_example.php -Xchange_pass/README + dh_installexamples # dh_install # dh_installmenu dh_installdebconf diff --git a/debian/templates b/debian/templates new file mode 100644 index 0000000..bd1f650 --- /dev/null +++ b/debian/templates @@ -0,0 +1,12 @@ +Template: squirrelmail-change-pass-cn/min_pass_length +Type: note +Description: Minimalna duzina zaporke podesena je na 8 znakova. + Duzina zaporke nije odredjena PAM konfiguracijom, vec je definirana u + konfiguracijskoj datoteci za change_pass dodatak (plugin). + . + Dokumentaciju za change_pass dodatak mozete pronaci unutar direktorija: + . + /usr/share/doc/squirrelmail-change-pass-cn/ + + U slucaju da jos niste, za vecu sigurnost zaporki svakako pogledajte + programski paket 'libpam-cracklib' i pripadajucu dokumentaciju.