1
0
mirror of https://blitiri.com.ar/repos/chasquid synced 2025-12-17 14:37:02 +00:00
Files
go-chasquid-smtp/docker/add-user.sh
Alberto Bertogli 948cee1ce1 Improve bash quoting, and other similar best practices
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.
2022-11-13 11:09:19 +00:00

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"