mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-17 14:37:02 +00:00
This patch updates the shell scripts with some of the common best practices, which should make them more resilient to unusual failures and unexpected environments (in particular, directories with spaces). Most of these were identified by shellcheck.
45 lines
986 B
Bash
Executable File
45 lines
986 B
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Creates a user. If it exists, updates the password.
|
|
#
|
|
# Note this is not robust, it's only for convenience on extremely simple
|
|
# setups.
|
|
|
|
set -e
|
|
|
|
read -r -p "Email (full user@domain format): " EMAIL
|
|
|
|
if ! echo "${EMAIL}" | grep -q @; then
|
|
echo "Error: email should have '@'."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
read -r -p "Password: " -s PASSWORD
|
|
echo
|
|
|
|
DOMAIN=$(echo echo "${EMAIL}" | cut -d '@' -f 2)
|
|
|
|
|
|
# If the domain doesn't exist in chasquid's config, create it.
|
|
mkdir -p "/data/chasquid/domains/${DOMAIN}/"
|
|
|
|
|
|
# Encrypt password.
|
|
ENCPASS=$(doveadm pw -u "${EMAIL}" -p "${PASSWORD}")
|
|
|
|
# Edit dovecot users: remove user if it exits.
|
|
mkdir -p /data/dovecot
|
|
touch /data/dovecot/users
|
|
if grep -q "^${EMAIL}:" /data/dovecot/users; then
|
|
cp /data/dovecot/users /data/dovecot/users.old
|
|
grep -v "^${EMAIL}:" /data/dovecot/users.old \
|
|
> /data/dovecot/users
|
|
fi
|
|
|
|
# Edit dovecot users: add user.
|
|
echo "${EMAIL}:${ENCPASS}::::" >> /data/dovecot/users
|
|
|
|
echo "${EMAIL} added to /data/dovecot/users"
|
|
|