#!/bin/bash # --------------------------------------------------------------------------- # makeuser - tilde new user creation # Usage: makeuser [-h|--help] "" # --------------------------------------------------------------------------- # # Forked from tilde.team's make user script ( PROGNAME=${0##*/} VERSION="0.4" LIST_NAME="thunix-join@lists.tildeverse.org" EMAIL_TEMPLATE="tmpl/email.tmpl" YAML_FILE="$1.yml" GEN_TDP="./gen_tdp" TILDE_JSON="/var/www/thunix.cf/tilde.json" CONFIG=./setenv . $CONFIG error_exit() { echo -e "${PROGNAME}: ${1:-"Unknown Error"}" >&2 exit 1 } usage() { echo -e "usage: $PROGNAME [-h|--help] \"\"" } sub_to_list() { echo " From: $1 Subject: subscribe " | sudo -u $1 mail $LIST_NAME } [[ $(id -u) == 0 ]] && error_exit "Do not run this script as root." case $1 in -h | --help) usage; exit ;; -* | --*) usage; error_exit "unknown option $1" ;; *) [[ $# -ne 3 ]] && error_exit "not enough args" echo "adding new user $1" newpw=`pwgen -1B 10` pwcrypt=$(perl -e "print crypt('${newpw}', 'sa');") sudo useradd -m -g 1000 -p $pwcrypt -s /bin/bash $1 || exit 1 # This is the welcome for team. # sed -e "s/newusername/$1/g" -e "s/newpassword/$newpw/" $EMAIL_TEMPLATE | sudo mail $1 $2 $ADMIN_EMAIL # This is the welcome email for thunix sed -e "s/newusername/$1/g" -e "s/newpassword/$newpw/g" tmpl/email.tmpl | sudo mail -s "Welcome to Thunix!" $2 sed -e "s/newusername/$1/g" -e "s/newpassword/$newpw/g" tmpl/email.tmpl | sudo mail -s "Welcome to Thunix!" $ADMIN_EMAIL sub_to_list $1 # We don't need this for thunix, since ansible will do it # echo "$3" | tee /home/$1/.ssh/authorized_keys # If root doesn't have a fediverse account, comment this out # sudo toot "welcome new user ~$1!" #Thunix specific section currdir=`pwd` cd $REPO_LOCATION; git pull; cd $currdir echo "--- - name: Setting up $1 user: name: $1 groups: tilde state: present skeleton: /etc/skel shell: /bin/bash system: no createhome: yes home: /home/$1 - authorized_key: user: $1 state: present key: \"$3\"" > $REPO_LOCATION/roles/shell/tasks/users/$YAML_FILE echo "- include: users/$YAML_FILE" >> $REPO_LOCATION/roles/shell/tasks/users.yml place=`pwd` cd $REPO_LOCATION git add $REPO_LOCATION/roles/shell/tasks/users/$1.yml git commit -am "Adding user $1" git push cd $place $GEN_TDP | sudo tee $TILDE_JSON # End Thunix specific section ;; esac