Correction : résilience des sauvegardes MySQL et PostgreSQL.
[lhc/ateliers.git] / local / roundcube-chpasswd
1 #!/bin/sh -efu
2
3 test "$(id -n -u)" = php_roundcube
4
5 IFS=: read -r user password
6 IFS=@ read -r user domain <<-EOF
7 $user
8 EOF
9 test "${user:+set"}"
10 test "${domain:+set"}"
11 test "${password:+set"}"
12
13 umask 0077
14 dir_passwd=/etc/dovecot/"$domain"
15 old_passwd="$dir_passwd"/passwd
16 new_passwd=$(TMPDIR= /bin/mktemp --tmpdir="$dir_passwd" -t "passwd.XXXXXXXX.tmp")
17 return=1
18 while IFS=: read <&4 -r passwd_user passwd_password passwd_x
19 do
20 case "$passwd_user" in
21 ("$user")
22 return=0
23 /bin/cat >&3 <<-EOF
24 $user:$(/usr/bin/doveadm pw -s SHA512-CRYPT -p "$password"):$passwd_x
25 EOF
26 ;;
27 ('') : ;;
28 (*)
29 /bin/cat >&3 <<-EOF
30 $passwd_user:$passwd_password:$passwd_x
31 EOF
32 ;;
33 esac
34 done 3>"$new_passwd" 4<<-EOF
35 $(/bin/cat "$old_passwd")
36 EOF
37 /bin/mv -f "$new_passwd" "$old_passwd"
38 exit $return