#!/bin/bash
#
# vhost-stack
# https://git.stack-source.com/msb/vhost-stack
# Copyright (c) 2022 Matthew Saunders Brown <matthewsaundersbrown@gmail.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

# load include file
source $(dirname $0)/vhost.sh

help()
{
  thisfilename=$(basename -- "$0")
  echo "Add file or directory to all existing jails."
  echo ""
  echo "usage: $thisfilename <path_to_file_or_directory>"
  echo ""
  echo "  -h            Print this help."
  exit
}

# check for and set file to be copied in to jails
if [ -n "$1" ]; then
  if [ $1 == "-h" ]; then
    help
  else
    cpfile=$1
  fi
else
  echo "file or directory to copy in to jails not set"
  exit 1
fi

# make sure file exists
if [[ ! -f $cpfile ]] && [[ ! -d $cpfile ]]; then
  echo "invalid file or directory for copying in to jails"
  exit 1
fi

# make sure jails dir exists
if [[ ! -e /usr/jails/ ]]; then
  echo "/usr/jails does not exist"
  exit 1
fi

# check for /usr/sbin/jk_cp
if [[ ! -x "/usr/sbin/jk_cp" ]]; then
  echo "/usr/sbin/jk_cp does not exist or is not executable"
  exit 1
fi

# get list of jails
cd /usr/jails/
jails=(*)

for jail in "${!jails[@]}"
do
  jail=${jails[$jail]}
  echo "adding $cpfile to $jail"
  jk_cp -k -j /usr/jails/$jail $cpfile
done