Ajout : roundcube.
[lhc/ateliers.git] / local / roundcube-chpasswd
diff --git a/local/roundcube-chpasswd b/local/roundcube-chpasswd
new file mode 100755 (executable)
index 0000000..92cf455
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh -efu
+
+test "$(id -n -u)" = php5_roundcube
+
+IFS=: read -r user password
+IFS=@ read -r user domain <<-EOF
+       $user
+       EOF
+test "${user:+set"}"
+test "${domain:+set"}"
+test "${password:+set"}"
+
+umask 0077
+dir_passwd=/etc/dovecot/"$domain"
+old_passwd="$dir_passwd"/passwd
+new_passwd=$(TMPDIR= /bin/mktemp --tmpdir="$dir_passwd" -t "passwd.XXXXXXXX.tmp")
+return=1
+while IFS=: read <&4 -r passwd_user passwd_password passwd_x
+ do
+       case "$passwd_user" in
+        ("$user")
+               return=0
+               /bin/cat >&3 <<-EOF
+                       $user:$(/usr/bin/doveadm pw -s SHA512-CRYPT -p "$password"):$passwd_x
+                       EOF
+               ;;
+        ('') : ;;
+        (*)
+               /bin/cat >&3 <<-EOF
+                       $passwd_user:$passwd_password:$passwd_x
+                       EOF
+               ;;
+        esac
+ done 3>"$new_passwd" 4<<-EOF
+       $(/bin/cat "$old_passwd")
+       EOF
+/bin/mv -f "$new_passwd" "$old_passwd"
+exit $return