Files
makeuser/makeuser

70 lines
1.5 KiB
Bash

#!/bin/sh
msg_err() {
printf "\033[0;31m%s\033[0m\n" "$*" >&2
exit 1
}
msg_info() {
printf "\033[0;32m%s\033[0m\n" "$*"
}
msg_warn() {
printf "\033[0;33m%s\033[0m\n" "$*"
}
print_usage() {
msg_warn "Usage: $(basename $0) [-h|--help] <username> <email> \"<pubkey>\""
}
case $1 in
-h | --help)
print_usage; exit
;;
-* | --*)
print_usage; exit 1
;;
*)
if [ $# -ne 3 ]; then
print_usage
msg_err "Not enough arguments"
fi
if id "$1" > /dev/null 2>&1; then
exit 0
fi
hostname="$(hostname)"
newpw="$(pwgen -s 20 1)"
newpw_hash="$(pwhash $newpw)"
msg_info "Adding new user: %s" "$1"
useradd -m -g users -G cvsadmin -s "${newpw_hash}" /bin/sh "$1" || msg_err "Unable to create user"
sed -e "s/newuser/$1/g" \
-e "s/newpassword/$newpw/" \
-e "s/newemail/$2/" \
-e "s/hostname/$hostname/" \
/usr/local/share/laidback/email.tmpl | sendmail "$1" "$2"
printf "%s\n" "$3" | doas tee "/home/$1/.ssh/authorized_keys"
doas -u ejabberd /usr/pkg/sbin/ejabberdctl register "$1" "${hostname}" "$newpw"
case $BOUNCER in
suika)
echo "${newpw}" | doas /usr/pkg/bin/suikadb -config /usr/pkg/etc/suika/config create-user "$1"
;;
znc)
doas /usr/local/sbin/znc-adduser "$1" "${newpw_hash}"
;;
*)
msg_warn "Variable unset. Assuming ZNC"
doas /usr/local/sbin/znc-adduser "$1" "${newpw_hash}"
;;
esac
msg_info "Creating symbolic links..."
ln -s /home/$1/public_gopher /var/gopher/~$1
ln -s /home/$1/public_gemini /var/gemini/~$1
ln -s /home/$1/public_hg /srv/hg/$1
;;
esac