#!/bin/sh # --------------------------------------------------------------------------- # makeuser - tilde.club new user creation # Usage: makeuser [-h|--help] "" # --------------------------------------------------------------------------- PROGNAME=${0##*/} VERSION="0.2" error_exit() { printf "%s: %s\n" "$PROGNAME" "${1:-"Unknown Error"}" >&2 exit 1 } usage() { printf "usage: %s %s [-h|--help] \"\"\n" "$PROGNAME" "$VERSION" } sub_to_list() { sudo -u "$1" sendmail tildeclub-join@lists.tildeverse.org << MAIL From: $1 Subject: subscribe MAIL } case $1 in -h | --help) usage; exit ;; -* | --*) usage; error_exit "unknown option $1" ;; *) if [ $# -ne 3 ]; then error_exit "not enough args" fi if id "$1" > /dev/null 2>&1; then exit 0 fi printf "adding new user %s\n" "$1" newpw=$(pwgen -1B 20) sudo useradd -m -g 100 -s /bin/bash "$1" \ || error_exit "couldn't add user" printf "%s:%s\n" "$1" "$newpw" | sudo chpasswd printf "sending welcome mail\n" sed -e "s/newusername/$1/g" \ -e "s/newpassword/$newpw/" \ -e "s/newtoemail/$2/" \ /usr/local/bin/welcome-email.tmpl \ | sendmail "$1" "$2" root@tilde.club printf "subscribing to mailing list\n" sub_to_list "$1" printf "adding ssh pubkey\n" printf "%s\n" "$3" | sudo tee "/home/$1/.ssh/authorized_keys" printf "\nannouncing new user on mastodon\n" /usr/local/bin/toot "welcome new user ~$1!" printf "cleanup current signup\n" sudo sed -i"" "/\b$1\b/d" /var/signups_current printf "removing .git from new homedir\n" sudo rm -rf /home/$1/.git printf "removing skel git README.md\n" sudo rm /home/$1/README.md printf "fix sorting in /etc/passwd\n" sudo pwck -s printf "applying disk quota\n" sudo xfs_quota -x -c "limit -u bsoft=1G bhard=3G $1" printf "making znc user\n" /usr/local/bin/znccreate.py "$1" "$newpw" "MaxNetworks=3" printf "Adding user to Helpdesk\n" /usr/local/bin/helpdesk_admin.sh "add" "$1" "$2" esac