mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-14 11:48:26 +00:00
Merge pull request #179 from klightspeed/1.4-dev#rootupgrade
Allow upgrade / uninstall when running as root
This commit is contained in:
commit
2ebb9ed6a9
170
tools/arkmanager
170
tools/arkmanager
@ -6,10 +6,112 @@
|
||||
# Maintainer: FezVrasta
|
||||
# Contributors: Sispheor, Atriusftw, klightspeed, lexat, puseidr
|
||||
|
||||
# Script version
|
||||
arkstVersion="1.3"
|
||||
arkstCommit=''
|
||||
|
||||
doUpgradeTools() {
|
||||
local sudo=sudo
|
||||
if [ "$UID" == 0 -o "$steamcmd_user" == "--me" ]; then
|
||||
sudo=
|
||||
fi
|
||||
echo "arkmanager v${arkstVersion}: Checking for updates..."
|
||||
arkstLatestVersion=`curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/.version`
|
||||
arkstLatestCommit=`curl -s https://api.github.com/repos/FezVrasta/ark-server-tools/git/refs/heads/${arkstChannel} | sed -n 's/^ *"sha": "\(.*\)",.*/\1/p'`
|
||||
reinstall_args=()
|
||||
if [ -n "$install_bindir" ]; then
|
||||
reinstall_args=( "${reinstall_args[@]}" "--bindir" "$install_bindir" )
|
||||
fi
|
||||
if [ -n "$install_libexecdir" ]; then
|
||||
reinstall_args=( "${reinstall_args[@]}" "--libexecdir" "$install_libexecdir" )
|
||||
fi
|
||||
if [ -n "$install_datadir" ]; then
|
||||
reinstall_args=( "${reinstall_args[@]}" "--datadir" "$install_datadir" )
|
||||
fi
|
||||
if [[ $arkstLatestVersion > $arkstVersion ]]; then
|
||||
read -p "A new version was found! Do you want to upgrade ARK Server Tools to v${arkstLatestVersion}?" -n 1 -r
|
||||
echo -en "\n"
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/netinstall.sh | $sudo bash -s -- ${steamcmd_user} ${arkstChannel} "${reinstall_args[@]}"
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
elif [[ "$arkstLatestCommit" != "$arkstCommit" ]]; then
|
||||
read -p "A hotfix is available for v${arkstLatestVersion}. Do you wish to install it?" -n 1 -r
|
||||
echo -en "\n"
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/netinstall.sh | $sudo bash -s -- ${steamcmd_user} ${arkstChannel} "${reinstall_args[@]}"
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "Your ARK server tools are already up to date"
|
||||
fi
|
||||
}
|
||||
|
||||
doUninstallTools() {
|
||||
local sudo=sudo
|
||||
if [ "$UID" == 0 -o "$steamcmd_user" == "--me" ]; then
|
||||
sudo=
|
||||
fi
|
||||
|
||||
read -p "Are you sure you want to uninstall the ARK Server Tools?" -n 1 -r
|
||||
|
||||
if [[ "$REPLY" =~ ^[Yy]$ ]]; then
|
||||
if [ -n "${install_datadir}" -a -x "${install_datadir}/arkmanager-uninstall.sh" ]; then
|
||||
$sudo "${install_datadir}/arkmanager-uninstall.sh"
|
||||
exit 0
|
||||
elif [ -n "${install_libexecdir}" -a -x "${install_libexecdir}/arkmanager-uninstall.sh" ]; then
|
||||
$sudo "${install_libexecdir}/arkmanager-uninstall.sh"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
runAsRoot(){
|
||||
getConfigVar(){
|
||||
val="$(echo -ne "$(sed -n "/^$1=/{s|^[^=]*||;s|^\"\\(.*\\)\"\$|\\1|;s|^'\\(.*\\)\$|\\1|;p}" <"/etc/arkmanager/arkmanager.cfg" | tail -n1)")"
|
||||
if [ -n "$val" ]; then
|
||||
echo "$val"
|
||||
else
|
||||
echo "$2"
|
||||
fi
|
||||
}
|
||||
|
||||
arkstChannel="$(getConfigVar arkstChannel "master")"
|
||||
install_bindir="$(getConfigVar install_bindir "${0%/*}")"
|
||||
install_libexecdir="$(getConfigVar install_libexecdir "${install_bindir%/*}/libexec/arkmanager")"
|
||||
install_datadir="$(getConfigVar install_datadir "${install_bindir%/*}/share/arkmanager")"
|
||||
steamcmd_user="$(getConfigVar steamcmd_user "steam")"
|
||||
|
||||
if ! getent passwd "$steamcmd_user" >/dev/null 2>&1; then
|
||||
echo "Invalid steamcmd_user in config file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" == "upgrade-tools" ]; then
|
||||
doUpgrade
|
||||
elif [ "$1" == "uninstall-tools" ]; then
|
||||
doUninstallTools
|
||||
else
|
||||
echo -n "arkmanager v${arkstVersion}: "
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "no command specified"
|
||||
else
|
||||
echo "unknown command '$1' specified"
|
||||
fi
|
||||
echo -e "Usage: arkmanager [OPTION]\n"
|
||||
echo "Option Description"
|
||||
echo "upgrade-tools Check for a new ARK Server Tools version and upgrades it if needed"
|
||||
echo "uninstall-tools Uninstall the ARK Server Tools"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Check the user is not currently running this script as root
|
||||
if [ "$(id -u)" == "0" ]; then
|
||||
echo "This script must NOT be run as root" 1>&2
|
||||
exit 1
|
||||
runAsRoot "$@"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#---------------------
|
||||
@ -54,10 +156,6 @@ else
|
||||
install_datadir="${install_datadir:-${install_bindir%/*}/share/arkmanager}"
|
||||
fi
|
||||
|
||||
# Script version
|
||||
arkstVersion="1.3"
|
||||
arkstCommit=''
|
||||
|
||||
#---------------------
|
||||
# functions
|
||||
#---------------------
|
||||
@ -986,64 +1084,6 @@ printStatus(){
|
||||
echo -e "$NORMAL" "Server version: " "$GREEN" $instver "$NORMAL"
|
||||
}
|
||||
|
||||
doUpgrade() {
|
||||
local sudo=sudo
|
||||
if [ "$steamcmd_user" == "--me" ]; then
|
||||
sudo=
|
||||
fi
|
||||
echo "arkmanager v${arkstVersion}: Checking for updates..."
|
||||
arkstLatestVersion=`curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/.version`
|
||||
arkstLatestCommit=`curl -s https://api.github.com/repos/FezVrasta/ark-server-tools/git/refs/heads/${arkstChannel} | sed -n 's/^ *"sha": "\(.*\)",.*/\1/p'`
|
||||
reinstall_args=()
|
||||
if [ -n "$install_bindir" ]; then
|
||||
reinstall_args=( "${reinstall_args[@]}" "--bindir" "$install_bindir" )
|
||||
fi
|
||||
if [ -n "$install_libexecdir" ]; then
|
||||
reinstall_args=( "${reinstall_args[@]}" "--libexecdir" "$install_libexecdir" )
|
||||
fi
|
||||
if [ -n "$install_datadir" ]; then
|
||||
reinstall_args=( "${reinstall_args[@]}" "--datadir" "$install_datadir" )
|
||||
fi
|
||||
if [[ $arkstLatestVersion > $arkstVersion ]]; then
|
||||
read -p "A new version was found! Do you want to upgrade ARK Server Tools to v${arkstLatestVersion}?" -n 1 -r
|
||||
echo -en "\n"
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/netinstall.sh | $sudo bash -s -- ${steamcmd_user} ${arkstChannel} "${reinstall_args[@]}"
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
elif [[ "$arkstLatestCommit" != "$arkstCommit" ]]; then
|
||||
read -p "A hotfix is available for v${arkstLatestVersion}. Do you wish to install it?" -n 1 -r
|
||||
echo -en "\n"
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/${arkstChannel}/netinstall.sh | $sudo bash -s -- ${steamcmd_user} ${arkstChannel} "${reinstall_args[@]}"
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "Your ARK server tools are already up to date"
|
||||
fi
|
||||
}
|
||||
|
||||
doUninstallTools() {
|
||||
local sudo=sudo
|
||||
if [ "$steamcmd_user" == "--me" ]; then
|
||||
sudo=
|
||||
fi
|
||||
|
||||
read -p "Are you sure you want to uninstall the ARK Server Tools?" -n 1 -r
|
||||
|
||||
if [[ "$REPLY" =~ ^[Yy]$ ]]; then
|
||||
if [ -n "${install_datadir}" -a -x "${install_datadir}/arkmanager-uninstall.sh" ]; then
|
||||
$sudo "${install_datadir}/arkmanager-uninstall.sh"
|
||||
exit 0
|
||||
elif [ -n "${install_libexecdir}" -a -x "${install_libexecdir}/arkmanager-uninstall.sh" ]; then
|
||||
$sudo "${install_libexecdir}/arkmanager-uninstall.sh"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
useConfig() {
|
||||
for varname in "${!configfile_@}"; do
|
||||
if [ "configfile_$1" == "$varname" ]; then
|
||||
@ -1134,7 +1174,7 @@ while true; do
|
||||
printStatus
|
||||
;;
|
||||
upgrade-tools)
|
||||
doUpgrade
|
||||
doUpgradeTools
|
||||
;;
|
||||
uninstall-tools)
|
||||
doUninstallTools
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user