Automatsko podesavanje minimalne duzine zaporke (8 znakova)
authorDragan Dosen <bane@nekkar.carnet.hr>
Tue, 9 Feb 2010 22:00:53 +0000 (23:00 +0100)
committerDragan Dosen <bane@nekkar.carnet.hr>
Tue, 9 Feb 2010 22:00:53 +0000 (23:00 +0100)
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.

debian/README.CARNet
debian/changelog
debian/control
debian/examples [new file with mode: 0644]
debian/postinst
debian/prerm
debian/rules
debian/templates [new file with mode: 0644]

index 936e468..e34b51b 100644 (file)
@@ -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
index 54db6b8..8a65e71 100644 (file)
@@ -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.
index 6dbfd20..d65a85d 100644 (file)
@@ -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 (file)
index 0000000..d42df99
--- /dev/null
@@ -0,0 +1 @@
+change_pass/config_example.php
index f56b7ac..f515ad7 100644 (file)
@@ -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.
 #
index 9827786..2f28968 100644 (file)
@@ -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
index 634eafd..b7c199b 100755 (executable)
@@ -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 (file)
index 0000000..bd1f650
--- /dev/null
@@ -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.