From 2d305755be2b552a2b2f3ef1ee4b4300c1d64ebe Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 19 Sep 2015 08:25:28 +1000 Subject: [PATCH 1/5] Rename doUpgrade to doUpgradeTools --- tools/arkmanager | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 414493b..5d0d844 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -985,7 +985,7 @@ printStatus(){ echo -e "$NORMAL" "Server version: " "$GREEN" $instver "$NORMAL" } -doUpgrade() { +doUpgradeTools() { local sudo=sudo if [ "$steamcmd_user" == "--me" ]; then sudo= @@ -1133,7 +1133,7 @@ while true; do printStatus ;; upgrade-tools) - doUpgrade + doUpgradeTools ;; uninstall-tools) doUninstallTools From 54872744fa7f16ec4c4ca03e217c42169279d1f4 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 19 Sep 2015 08:26:32 +1000 Subject: [PATCH 2/5] Move doUpgradeTools and doUninstallTools above root check --- tools/arkmanager | 116 +++++++++++++++++++++++------------------------ 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 5d0d844..a8afe80 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -6,6 +6,64 @@ # Maintainer: FezVrasta # Contributors: Sispheor, Atriusftw, klightspeed, lexat, puseidr +doUpgradeTools() { + 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 +} + # 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 @@ -985,64 +1043,6 @@ printStatus(){ echo -e "$NORMAL" "Server version: " "$GREEN" $instver "$NORMAL" } -doUpgradeTools() { - 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 From 4b23b0846f99e1f025dbd807be127805e984aa26 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 19 Sep 2015 08:28:24 +1000 Subject: [PATCH 3/5] Don't use sudo if uid is 0 --- tools/arkmanager | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index a8afe80..a98d0b9 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -8,7 +8,7 @@ doUpgradeTools() { local sudo=sudo - if [ "$steamcmd_user" == "--me" ]; then + if [ "$UID" == 0 -o "$steamcmd_user" == "--me" ]; then sudo= fi echo "arkmanager v${arkstVersion}: Checking for updates..." @@ -47,7 +47,7 @@ doUpgradeTools() { doUninstallTools() { local sudo=sudo - if [ "$steamcmd_user" == "--me" ]; then + if [ "$UID" == 0 -o "$steamcmd_user" == "--me" ]; then sudo= fi From 938c031c7364f4e081581a8b637b4f056c65f877 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 19 Sep 2015 08:29:23 +1000 Subject: [PATCH 4/5] Move script version above root check --- tools/arkmanager | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index a98d0b9..e709c94 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -6,6 +6,10 @@ # 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 @@ -112,10 +116,6 @@ else install_datadir="${install_datadir:-${install_bindir%/*}/share/arkmanager}" fi -# Script version -arkstVersion="1.3" -arkstCommit='' - #--------------------- # functions #--------------------- From 235ee824cc509834803de3ee913b25df69cc6666 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 19 Sep 2015 08:31:32 +1000 Subject: [PATCH 5/5] Allow upgrade-tools and uninstall-tools when running as root --- tools/arkmanager | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index e709c94..aa8333e 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -68,10 +68,50 @@ doUninstallTools() { 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 #---------------------