4c09ea840c
* move ex (+25 squashed commit) Squashed commit: [e5e9c57] verb [16b023f] exp [e0299d9] easier [67fcf93] no message [404687f] different [bd82e7c] test [14b91d9] mod [f2bb227] test again [a9d5ad0] again [0dcb106] with bash [7324c15] more [8ec72d5] another test [0933fdc] again [a5247df] test more [ee61137] temp test [c90aa90] add some more tests [9f8e47a] make executable [ac84788] rename part 2 [890c3ca] rename part 1 [f17e571] test create [9bd8ecd] typo aqgain [eb865a7] test2 [fb57e28] typo [595d9e9] make executable [5d1ae75] first steps * test5 (+22 squashed commit) Squashed commit: [f059ada] tweaks [5c325de] again [9f59aa6] ip4 [9990a77] Standardised creation [0a6fa7f] whoops [620d07c] no message [2a98559] error [62e9c39] hmmm [9f8e4df] no message [d1e9025] puzzle [73aa99b] substitution try 1 [117e75e] other sub [7c080b0] more flexible [a0778f4] testzoveel [739a3bf] fix [f881425] no message [1962b83] oops [994692c] no message [b6dd2a2] test [6713186] echo [6d8d95a] test [f8c3740] quote processing * small update fix (+18 squashed commit) Squashed commit: [8f0c2aa] Basic update [c44eae5] simplification [b1e9314] define basic pkgs [1a55a85] define global pkgs [6829d30] dirtest [5d2a215] checking for install script existance [d936df3] 1 [fcc7403] hmm [08e7e07] exit 0 [380da4d] jail interfaces [634f12e] make all executable [0f2728c] add first test jail [8320d77] restructure individual install scripts [752b375] Standardise [cbab837] itterate through jails [37ecc1d] if array is without elements [0a9e899] moving it to arrays [cc356ee] mockup jailman * moving docs,fixing test thingy (+27 squashed commit) Squashed commit: [76e856b] rc.d pathing [4e1b178] fixing some pathing bugs [e9e9648] quotes [7c5aa9e] test10 fixes [e8858cc] sonarr first steps [0cb1efe] exit on invalid option [e3451da] exit on unknown option [60a1f9c] exit [0536c11] test idea [81d3465] hmm [cb3b935] work on h [1311fea] enable help [aa8d55a] space? [5ef67e0] add comment to global [61be2fa] Add commenting and in-script help [aac8557] Testing broken config [ecc1142] oops [e0059be] condition fix [9628297] Add check for missing network settings [44be2bc] Creating DHCP option, working on default example config. [b0fe910] Adding documentation, setting up Jackett [0045b2b] strucutre [fbe3d20] includes first [a1b032d] gitupdate space [1b503b5] update fix [512f597] add update feature [e9b8359] add initial upgrade script * Create LICENSE (#1) * to 30 * move back kms includes readme, add config.yml to gitignore, add kms to config.yml.example (+24 squashed commit) Squashed commit: [095aa36] added py ks to readme [28526d8] Setup KMS [82f7bfa] Exeuction fix [89de700] finish organizr and setup first steps of kms [0624952] Add dummy cert generation [2583e39] slight nginx mod [3b3da6a] fixed again [7f5807b] Readme and fix for wrong copy [6cab6ca] Make tautulli permanent and prepare organizr [6801447] Tautulli setup, plex to permanent [6198469] also fix update if [49cff5d] if fix 2 [4c436c4] fixing plex if [1adf56f] Add first go at plex support [446dff6] fixing some linking and dataset creation [6dee179] forgot to set yaml files [4e767de] settings file is not needed at all [8ff9d73] setup lidarr, begin setup for transmission [8f8d9ee] Fixing wrong echo's, adding *arr to readme [7aab5f0] lidarr test setup, making radarr final, yaml restructure [3113f71] some dataset creation tweaks [286437b] movies, much [181cf3e] test setup [6477b74] Sonarr done, radarr next * set to master and make executable
171 lines
5.1 KiB
Bash
Executable File
171 lines
5.1 KiB
Bash
Executable File
#!/usr/local/bin/bash
|
|
|
|
# Important defines:
|
|
export SCRIPT_NAME=$(basename $(test -L "${BASH_SOURCE[0]}" && readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}"));
|
|
export SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd);
|
|
echo "Working directory for jailman.sh is: ${SCRIPT_DIR}"
|
|
|
|
#Includes
|
|
source ${SCRIPT_DIR}/global.sh
|
|
|
|
# Check for root privileges
|
|
if ! [ $(id -u) = 0 ]; then
|
|
echo "This script must be run with root privileges"
|
|
exit 1
|
|
fi
|
|
|
|
# Auto Update
|
|
BRANCH="master"
|
|
gitupdate ${BRANCH}
|
|
|
|
# If no option is given, point to the help menu
|
|
if [ $# -eq 0 ]
|
|
then
|
|
echo "Missing options!"
|
|
echo "(run $0 -h for help)"
|
|
echo ""
|
|
exit 0
|
|
fi
|
|
|
|
# Go through the options and put the jails requested in an array
|
|
unset -v sub
|
|
while getopts ":i:r:u:d:g:h" opt
|
|
do
|
|
case $opt in
|
|
i ) installjails=("$OPTARG")
|
|
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
|
|
installjails+=($(eval "echo \${$OPTIND}"))
|
|
OPTIND=$((OPTIND + 1))
|
|
done
|
|
;;
|
|
r ) redojails=("$OPTARG")
|
|
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
|
|
redojails+=($(eval "echo \${$OPTIND}"))
|
|
OPTIND=$((OPTIND + 1))
|
|
done
|
|
;;
|
|
u ) updatejails=("$OPTARG")
|
|
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
|
|
updateljails+=($(eval "echo \${$OPTIND}"))
|
|
OPTIND=$((OPTIND + 1))
|
|
done
|
|
;;
|
|
d ) destroyjails=("$OPTARG")
|
|
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
|
|
deletejails+=($(eval "echo \${$OPTIND}"))
|
|
OPTIND=$((OPTIND + 1))
|
|
done
|
|
;;
|
|
g ) upgradejails=("$OPTARG")
|
|
until [[ $(eval "echo \${$OPTIND}") =~ ^-.* ]] || [ -z $(eval "echo \${$OPTIND}") ]; do
|
|
upgradejails+=($(eval "echo \${$OPTIND}"))
|
|
OPTIND=$((OPTIND + 1))
|
|
done
|
|
;;
|
|
h )
|
|
echo "Usage:"
|
|
echo "$0 -i "
|
|
echo "$0 -r "
|
|
echo "$0 -u "
|
|
echo "$0 -d "
|
|
echo "$0 -g "
|
|
echo ""
|
|
echo " -i to install jails, listed by name, space seperated like this: jackett plex sonarr"
|
|
echo " -r to reinstall jails, listed by name, space seperated like this: jackett plex sonarr"
|
|
echo " -u to update jails, listed by name, space seperated like this: jackett plex sonarr"
|
|
echo " -d to destroy jails, listed by name, space seperated like this: jackett plex sonarrt"
|
|
echo " -g to upgrade jails, listed by name, space seperated like this: jackett plex sonarr"
|
|
echo " -h help (this output)"
|
|
exit 0
|
|
;;
|
|
? ) echo "Error: Invalid option was specified -$OPTARG"
|
|
exit 0
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Parse the Config YAML
|
|
eval $(parse_yaml config.yml)
|
|
|
|
# Check and Execute requested jail destructions
|
|
if [ ${#destroyjails[@]} -eq 0 ]; then
|
|
echo "No jails to destroy"
|
|
else
|
|
echo "jails to destroy ${destroyjails[@]}"
|
|
for jail in "${destroyjails[@]}"
|
|
do
|
|
echo "destroying $jail"
|
|
iocage destroy -f $jail
|
|
done
|
|
|
|
fi
|
|
|
|
# Check and Execute requested jail Installs
|
|
if [ ${#installjails[@]} -eq 0 ]; then
|
|
echo "No jails to install"
|
|
else
|
|
echo "jails to install ${installjails[@]}"
|
|
for jail in "${installjails[@]}"
|
|
do
|
|
if [ -f "${SCRIPT_DIR}/jails/$jail/install.sh" ]
|
|
then
|
|
echo "Installing $jail"
|
|
${SCRIPT_DIR}/jailcreate.sh $jail && ${SCRIPT_DIR}/jails/$jail/install.sh
|
|
else
|
|
echo "Missing install script for $jail in ${SCRIPT_DIR}/jails/$jail/install.sh"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Check and Execute requested jail Reinstalls
|
|
if [ ${#redojails[@]} -eq 0 ]; then
|
|
echo "No jails to ReInstall"
|
|
else
|
|
echo "jails to reinstall ${redojails[@]}"
|
|
for jail in "${redojails[@]}"
|
|
do
|
|
if [ -f "${SCRIPT_DIR}/jails/$jail/install.sh" ]
|
|
then
|
|
echo "Reinstalling $jail"
|
|
iocage destroy -f $jail && ${SCRIPT_DIR}/jailcreate.sh $jail && ${SCRIPT_DIR}/jails/$jail/install.sh
|
|
else
|
|
echo "Missing install script for $jail in ${SCRIPT_DIR}/jails/$jail/update.sh"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
|
|
# Check and Execute requested jail Updates
|
|
if [ ${#updatejails[@]} -eq 0 ]; then
|
|
echo "No jails to Update"
|
|
else
|
|
echo "jails to update ${updatejails[@]}"
|
|
for jail in "${updatejails[@]}"
|
|
do
|
|
if [ -f "${SCRIPT_DIR}/jails/$jail/update.sh" ]
|
|
then
|
|
echo "Updating $jail"
|
|
iocage update $jail && iocage exec $jail "pkg update && pkg upgrade -y" && ${SCRIPT_DIR}/jails/$jail/update.sh
|
|
iocage restart $jail
|
|
else
|
|
echo "Missing update script for $jail in ${SCRIPT_DIR}/jails/$jail/update.sh"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Check and Execute requested jail Upgrades
|
|
if [ ${#upgradejails[@]} -eq 0 ]; then
|
|
echo "No jails to Upgrade"
|
|
else
|
|
echo "jails to update ${upgradejails[@]}"
|
|
for jail in "${upgradejails[@]}"
|
|
do
|
|
if [ -f "${SCRIPT_DIR}/jails/$jail/update.sh" ]
|
|
then
|
|
echo "Currently Upgrading is not yet included in this script."
|
|
else
|
|
echo "Missing update script for $jail in ${SCRIPT_DIR}/jails/$jail/update.sh"
|
|
fi
|
|
done
|
|
fi
|