#!/bin/bash # # vhost-stack # https://git.stack-source.com/msb/vhost-stack # Copyright (c) 2022 Matthew Saunders Brown # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # CURRENTLY IN DEBUG MODE. ECHOS COMMANDS, DOES NOT RUN ANYTHING # load include file source $(dirname $0)/vhost.sh help() { thisfilename=$(basename -- "$0") echo "Rebuild jail for specified user." echo "" echo "usage: $thisfilename -u [-h]" echo "" echo " -h Print this help." echo " -u System username to reset jail for." exit } vhost:getoptions "$@" # check for username if [ -z "$username" ]; then echo "username not set" exit 1 fi if ! grep -q "^$username:" /etc/passwd; then echo "$username is not installed on this server" exit 1 fi if [[ ! -d /home/$username ]]; then echo "/home/$username does not exists" exit 1 fi if [[ ! -d "/usr/jails/$username" ]]; then echo "/usr/jails/$username does not exists" exit 1 fi if ! grep -q ":/usr/jails/$username/./home/$username:" /etc/passwd; then echo "$username does not have jail home dir set" exit 1 fi # check if any virtualhosts exist if [ "$(ls -A /usr/jails/$username/srv/www)" ]; then # set virtualhosts array cd /usr/jails/$username/srv/www/ virtualhosts=(*) # unmount virtualhost dir(s) for virtualhost in "${!virtualhosts[@]}" do virtualhost=${virtualhosts[$virtualhost]} echo umount /usr/jails/$username/srv/www/$virtualhost done fi # unmount jail home dir echo umount /usr/jails/$username/home/$username # del jail dir echo rm -r /usr/jails/$username # (re)create jail echo jk_init -k -j /usr/jails/$username shellstack echo mkdir -p /usr/jails/$username/opt /usr/jails/$username/usr/sbin /usr/jails/$username/tmp /usr/jails/$username/srv/www echo ln -s /usr/local/sbin/mini_sendmail /usr/jails/$username/usr/sbin/sendmail echo chmod a+rwx /usr/jails/$username/tmp echo install -d -o $username -g $username -m 755 /usr/jails/$username/home/$username echo jk_jailuser -n -j /usr/jails/$username -s /bin/bash $username # remount dirs echo mount --fstab /etc/fstab.jails /usr/jails/$username/home/$username virtualhostcount=${#virtualhosts[@]} if [ "$virtualhostcount" -gt 0 ]; then for virtualhost in "${!virtualhosts[@]}" do virtualhost=${virtualhosts[$virtualhost]} echo install -d -o $username -g $username -m 755 /usr/jails/$username/srv/www/$virtualhost echo mount --fstab /etc/fstab.jails /usr/jails/$username/srv/www/$virtualhost done fi