From 30aea93bd6572df640d04951617bbe477571dea7 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Thu, 26 Nov 2015 16:20:06 +1000 Subject: [PATCH] Add defaults for Port, QueryPort, RCONPort and serverMap --- tools/arkmanager | 62 ++++++++++++++++++++++++++++++++++++-------- tools/arkmanager.cfg | 2 +- 2 files changed, 52 insertions(+), 12 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index dd0d082..9677cdf 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -78,7 +78,7 @@ doUninstallTools() { runAsRoot(){ getConfigVar(){ - val="$(echo -ne "$(sed -n "/^$1=/{s|^[^=]*=||;s|[[:space:]]*\(#.*\)*\$||;s|^\"\\(.*\\)\"\$|\\1|;s|^'\\(.*\\)'\$|\\1|;p}" <"/etc/arkmanager/arkmanager.cfg" | tail -n1)")" + val="$(echo -ne "$(sed -n "/^$1=/{s|^[^=]*=||;s|[[:space:]]*\\(#.*\\)*\$||;s|^\"\\(.*\\)\"\$|\\1|;s|^'\\(.*\\)'\$|\\1|;p}" <"/etc/arkmanager/arkmanager.cfg" | tail -n1)")" if [ -n "$val" ]; then echo "$val" else @@ -202,15 +202,51 @@ checkConfig() { fi } +# +# Get setting from config or from ini file +# $1 is the setting name +# $2 is the default +# +getArkServerSetting() { + local varname="ark_$1" + if [ -n "${!varname}" ]; then + echo "${!varname}" + else + local val="$('/^\[ServerSettings\]/,/^\[.*\]/{s/^'"$1"'[[:space:]]*=[[:space:]]*//p;}' "${arkserverroot}/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini")" + if [ -n "$val" ]; then + echo "$val" + else + echo "$2" + fi + fi +} + # # Get server admin password # getAdminPassword() { - if [ -n "${ark_ServerAdminPassword}" ]; then - echo "${ark_ServerAdminPassword}" - else - sed -ne '/^\[ServerSettings\]/,/^\[.*\]/{s/^ServerAdminPassword[[:space:]]*=[[:space:]]*//p;}' "${arkserverroot}/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini" - fi + getArkServerSetting "ServerAdminPassword" "" +} + +# +# Get server RCON Port +# +getRconPort() { + getArkServerSetting "RCONPort" "32330" +} + +# +# Get server Game Port +# +getGamePort() { + echo "${ark_Port:-7778}" +} + +# +# Get server Query Port +# +getQueryPort(){ + echo "${ark_QueryPort:-27015}" } # @@ -393,7 +429,7 @@ function isTheServerRunning(){ # # function isTheServerUp(){ - $lsof -i "${ark_MultiHome:+udp@}${ark_MultiHome}:${ark_Port}" > /dev/null + $lsof -i "${ark_MultiHome:+udp@}${ark_MultiHome}:$(getGamePort)" > /dev/null result=$? if [ $result -ne 0 ]; then perl -MSocket -MFcntl -e ' @@ -416,7 +452,7 @@ function isTheServerUp(){ } else { exit(1); } - ' "${ark_QueryPort}" "${ark_MultiHome:-127.0.0.1}" + ' "$(getQueryPort)" "${ark_MultiHome:-127.0.0.1}" result=$? fi # In this case, the result is: @@ -441,7 +477,7 @@ function isTheServerOnline(){ local serverresp if [[ "$publicip" =~ [1-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]* ]]; then - serverresp="$(curl -s "http://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${publicip}:${ark_QueryPort}")" + serverresp="$(curl -s "http://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${publicip}:$(getQueryPort)")" fi # If the Steam server response contains "addr": "$ip:$port", @@ -465,6 +501,10 @@ doRun() { arkserveropts="-MapModID=$serverMapModId" fi + if [ -z "$arkserveropts" ]; then + arkserveropts="TheIsland" + fi + arkextraopts=( ) # bring in ark_... options @@ -1207,11 +1247,11 @@ printStatus(){ my $maxplayers = ord(substr($rest, 3, 1)); print "Server Name: $servername\n"; print "Players: $players / $maxplayers\n"; - ' "${ark_QueryPort}" "${ark_MultiHome:-127.0.0.1}" + ' "$(getQueryPort)" "${ark_MultiHome:-127.0.0.1}" if isTheServerOnline; then echo -e "$NORMAL" "Server online: " "$GREEN" "Yes" "$NORMAL" - echo -e "$NORMAL" "ARKServers link: " "$GREEN" "http://arkservers.net/server/${publicip}:${ark_QueryPort}" "$NORMAL" + echo -e "$NORMAL" "ARKServers link: " "$GREEN" "http://arkservers.net/server/${publicip}:$(getQueryPort)" "$NORMAL" else echo -e "$NORMAL" "Server online: " "$RED" "No" "$NORMAL" fi diff --git a/tools/arkmanager.cfg b/tools/arkmanager.cfg index a5c9f51..6349781 100644 --- a/tools/arkmanager.cfg +++ b/tools/arkmanager.cfg @@ -33,7 +33,7 @@ ark_RCONEnabled="True" # Enable RCO ark_RCONPort="32330" # RCON Port ark_SessionName="ARK Server Tools" # if your session name needs special characters please use the .ini instead ark_Port="7778" # ARK server port (default 7778) -ark_QueryPort="27016" # ARK query port (default 27016) +ark_QueryPort="27015" # ARK query port (default 27015) ark_ServerPassword="" # ARK server password, empty: no password required to login ark_ServerAdminPassword="keyboardcat" # ARK server admin password, KEEP IT SAFE! ark_MaxPlayers="70"