From e4d42183e33cd7e22cd5f111f03866f8991f9565 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 29 Sep 2015 09:25:46 +1000 Subject: [PATCH 1/5] Default to Windows mod; record mod branch --- tools/arkmanager | 10 +++++++++- tools/arkmanager.cfg | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index acefa2d..218a154 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -837,6 +837,10 @@ isModUpdateNeeded(){ fi done + if [ \( ! -f "$moddestdir/.modbranch" \) ] || [ "$(<"$moddestdir/.modbranch")" != "$modbranch" ]; then + return 0 + fi + if [ -f "$modsrcdir/mod.info" ]; then if [ -f "$modsrcdir/${modbranch}NoEditor/mod.info" ]; then modsrcdir="$modsrcdir/${modbranch}NoEditor" @@ -872,7 +876,7 @@ doExtractMod(){ local modid=$1 local modsrcdir="$steamcmdroot/steamapps/workshop/content/$mod_appid/$modid" local moddestdir="$arkserverroot/ShooterGame/Content/Mods/$modid" - local modbranch="${mod_branch:-Linux}" + local modbranch="${mod_branch:-Windows}" for varname in "${!mod_branch_@}"; do if [ "mod_branch_$modid" == "$varname" ]; then @@ -880,6 +884,10 @@ doExtractMod(){ fi done + if [ \( ! -f "$moddestdir/.modbranch" \) ] || [ "$(<"$moddestdir/.modbranch")" != "$modbranch" ]; then + rm -rf "$moddestdir" + fi + if [ -f "$modsrcdir/mod.info" ]; then echo "Copying files to $moddestdir" diff --git a/tools/arkmanager.cfg b/tools/arkmanager.cfg index 27390b0..7d9b65c 100644 --- a/tools/arkmanager.cfg +++ b/tools/arkmanager.cfg @@ -52,7 +52,7 @@ appid=376030 # Linux serv mod_appid=346110 # App ID for mods # Mod OS Selection -mod_branch=Linux +mod_branch=Windows # Add mod-specific OS selection below: #mod_branch_496735411=Windows From 167781e34f5f179d0e447e017e8a6a90b6cc33ec Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 29 Sep 2015 09:34:58 +1000 Subject: [PATCH 2/5] Allow non-anonymous steamcmd login --- tools/arkmanager | 8 ++++---- tools/arkmanager.cfg | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 218a154..a53c60e 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -354,7 +354,7 @@ function getCurrentVersion(){ # function getAvailableVersion(){ rm -f "$steamcmd_appinfocache" - bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamACF ".depots.branches.public" "buildid"; break; fi; done` + bnumber=`$steamcmdroot/$steamcmdexec +@NoPromptForPassword 1 +login ${steamlogin:-anonymous} +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamACF ".depots.branches.public" "buildid"; break; fi; done` return $bnumber } @@ -605,7 +605,7 @@ doInstall() { cd "$steamcmdroot" # install the server - ./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid validate +quit + ./$steamcmdexec +@NoPromptForPassword 1 +login ${steamlogin:-anonymous} +force_install_dir "$arkserverroot" +app_update $appid validate +quit # the current version should be the last version. We set our version getCurrentVersion } @@ -749,7 +749,7 @@ doUpdate() { if [ -n "$appupdate" ]; then cd "$steamcmdroot" - ./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid $validate +quit + ./$steamcmdexec +@NoPromptForPassword 1 +login ${steamlogin:-anonymous} +force_install_dir "$arkserverroot" +app_update $appid $validate +quit # the current version should be the last version. We set our version getCurrentVersion echo "`timestamp`: update to $instver complete" >> "$logdir/update.log" @@ -797,7 +797,7 @@ doDownloadMod(){ cd "$steamcmdroot" while true; do - ./$steamcmdexec +login anonymous +workshop_download_item $mod_appid $modid +quit + ./$steamcmdexec +@NoPromptForPassword 1 +login ${steamlogin:-anonymous} +workshop_download_item $mod_appid $modid +quit if [ ! -d "$moddldir" ]; then break; fi local newsize="`du -s "$moddldir" | cut -f1`" if [ $newsize -eq $dlsize ]; then break; fi diff --git a/tools/arkmanager.cfg b/tools/arkmanager.cfg index 7d9b65c..955a4c5 100644 --- a/tools/arkmanager.cfg +++ b/tools/arkmanager.cfg @@ -8,6 +8,7 @@ steamcmdroot="/home/steam/steamcmd" # path of yo steamcmdexec="steamcmd.sh" # name of steamcmd executable steamcmd_user="steam" # name of the system user who own steamcmd folder steamcmd_appinfocache="/home/steam/Steam/appcache/appinfo.vdf" # cache of the appinfo command +#steamlogin="anonymous" # Uncomment this to specify steam login instead of using anonymous login # config environment arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK) From 17dd16a8305b05dcd4df05c5b5f3f9b01d7d635b Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 29 Sep 2015 09:42:45 +1000 Subject: [PATCH 3/5] Add support for -opt=val options using arkopt_opt=val --- tools/arkmanager | 9 +++++++++ tools/arkmanager.cfg | 3 +++ 2 files changed, 12 insertions(+) diff --git a/tools/arkmanager b/tools/arkmanager index a53c60e..7697b25 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -434,6 +434,15 @@ doRun() { fi done + # bring in arkopt_... options + for varname in "${!arkopt_@}"; do + name="${varname#arkopt_}" + val="${!varname}" + + if [ -n "$val" ]; then + arkextraopts=( "${arkextraopts[@]}" "-${name}=${val}" ) + fi + done arkserveropts="${arkserveropts}?listen" # run the server in background diff --git a/tools/arkmanager.cfg b/tools/arkmanager.cfg index 955a4c5..a5c9f51 100644 --- a/tools/arkmanager.cfg +++ b/tools/arkmanager.cfg @@ -44,6 +44,9 @@ ark_MaxPlayers="70" #arkflag_OnlyAdminRejoinAsSpectator=true # Uncomment to only allow admins to rejoin as spectator #arkflag_DisableDeathSpectator=true # Uncomment to disable players from becoming spectators when they die +# ARK server options - i.e. for -optname=val, use arkopt_optname=val +#arkopt_StructureDestructionTag=DestroySwampSnowStructures + # config Service servicename="arkserv" # Name of the service (don't change if you don't know what are you doing) logdir="/var/log/arktools" # Logs path (default /var/log/arktools) From d27eff2861a0ab4813e35a2f20d246131fcc18f2 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 29 Sep 2015 11:05:01 +1000 Subject: [PATCH 4/5] Log the command used to launch the server --- tools/arkmanager | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/arkmanager b/tools/arkmanager index 7697b25..e3aa1a7 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -466,6 +466,9 @@ doRun() { # Auto-restart loop while [ $restartserver -ne 0 ]; do + echo -n "`timestamp`: Running" + printf " %q" "$arkserverroot/$arkserverexec" "$arkserveropts" "${arkextraopts[@]}" + echo # Put the server process into the background so we can monitor it "$arkserverroot/$arkserverexec" "$arkserveropts" "${arkextraopts[@]}" & # Grab the server PID From fa7649d92bd309e5681e2c6b058e05170bc8168f Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 29 Sep 2015 23:31:57 +1000 Subject: [PATCH 5/5] Allow user to specify `arkflag_log=""` --- tools/arkmanager | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index e3aa1a7..646a4ce 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -427,11 +427,8 @@ doRun() { # bring in arkflag_... flags for varname in "${!arkflag_@}"; do name="${varname#arkflag_}" - val="${!varname}" - if [ -n "$val" ]; then - arkextraopts=( "${arkextraopts[@]}" "-${name}" ) - fi + arkextraopts=( "${arkextraopts[@]}" "-${name}" ) done # bring in arkopt_... options