From 2c877336d7024b8c31a251171c06fc1e15457b8a Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Wed, 2 Mar 2016 00:47:14 +1000 Subject: [PATCH 01/12] Use serverMapModId to set map name and MapModID option --- tools/arkmanager | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index 52c7633..92a8559 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -593,7 +593,17 @@ doRun() { arkserveropts="$serverMap" if [ -n "$serverMapModId" ]; then - arkserveropts="-MapModID=$serverMapModId" + serverMap="$(perl -e ' + my $data; + { local $/; $data = <>; } + my $mapnamelen = unpack("@0 L<", $data); + my $mapname = substr($data, 4, $mapnamelen - 1); + $mapnamelen += 4; + my $mapfilelen = unpack("@" . ($mapnamelen + 4) . " L<", $data); + my $mapfile = substr($data, $mapnamelen + 8, $mapfilelen - 1); + print $mapfile; + ' <"${arkserverroot}/ShooterGame/Content/Mods/${serverMapModId}/mod.info")" + arkserveropts="${serverMap}?MapModID=${serverMapModId}" fi if [ -z "$arkserveropts" ]; then From 46e468d94112e1d4cd4d50ebf9f9a1a05291510d Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Mon, 7 Mar 2016 15:56:33 +1000 Subject: [PATCH 02/12] Return -1 from numplayers if server unreachable --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index 92a8559..88b30ff 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -577,7 +577,7 @@ function numPlayersConnected(){ my $sockaddr = pack_sockaddr_in($port, inet_aton($ARGV[1])); send($socket, "\xff\xff\xff\xffTSource Engine Query\x00", 0, $sockaddr); my $data = ""; - recv($socket, $data, 1400, 0) or (print "0" and exit(1)); + recv($socket, $data, 1400, 0) or (print "-1" and exit(1)); my ($servername, $mapname, $game, $fullname, $rest) = split(/\x00/, substr($data, 6), 5); my $players = ord(substr($rest, 2, 1)); print "$players\n"; From 1ea02d9f1ff5494e98a29c83c935edf3c3a608cd Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Wed, 9 Mar 2016 19:32:01 +1000 Subject: [PATCH 03/12] Fix a couple of potential issues with player count checking --- tools/arkmanager | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 88b30ff..58b0bde 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -913,7 +913,7 @@ doWarn(){ doBroadcastWithEcho "$warnmsg" for (( min = warnminutes - 1; min >= warninterval; min-- )); do numplayers=$(numPlayersConnected) - if (( numplayers + 0 == 0 )); then + if (( (numplayers + 0) == 0 )); then echo "Nobody is connected. Shutting down immediately" return 0 fi @@ -940,7 +940,7 @@ doWarn(){ doBroadcastWithEcho "$warnmsg" if (( warnseconds >= 20 )); then numplayers=$(numPlayersConnected) - if (( numplayers + 0 == 0 )); then + if (( (numplayers + 0) == 0 )); then echo "Nobody is connected. Shutting down immediately" return 0 fi @@ -1078,7 +1078,7 @@ doUpdate() { fi elif [ "$updatetype" == "ifempty" ]; then numplayers=$(( $(numPlayersConnected) + 0 )) - if (( numplayers == 0 )); then + if (( numplayers != 0 )); then echo "${numplayers} players are still connected" return 1 fi From 9b714824f544fe28bd2d140b8e9460525c67f814 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 17 May 2016 08:11:40 +1000 Subject: [PATCH 04/12] Fix an inconsistency between install.sh and arkmanager.init --- tools/systemd/arkmanager.init | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/systemd/arkmanager.init b/tools/systemd/arkmanager.init index fa760d2..c63be0c 100755 --- a/tools/systemd/arkmanager.init +++ b/tools/systemd/arkmanager.init @@ -1,6 +1,6 @@ #!/bin/bash -DAEMON=/usr/bin/arkmanager +DAEMON="/usr/bin/arkmanager" for service in $(${DAEMON} list-instances --brief); do case "$1" in From 92923df0ebc31a0ae9eddcbdf2502eabb8e90ae0 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 28 May 2016 20:19:06 +1000 Subject: [PATCH 05/12] " \n " added to empty response message Server response when a command returns no response is "Server received, But no response!! \n " --- tools/arkmanager | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/arkmanager b/tools/arkmanager index 58b0bde..4000b47 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -320,10 +320,10 @@ rconcmd() { auth($socket, $password); sendpkt($socket, 2, 2, $command); my ($resid, $restype, $rcvbody) = recvpkt($socket); - if ($rcvbody eq "Server received, But no response!!") { + if ($rcvbody eq "Server received, But no response!! \n ") { print "Command processed\n"; } else { - print $rcvbody, "\n"; + print "\"", $rcvbody, "\"\n"; } ' "$(getRconPort)" "${ark_MultiHome:-127.0.0.1}" "$adminpass" "$1" } From 273879aa23f657d95d8c2e5bc22b471c2aab03e9 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sun, 12 Jun 2016 15:12:18 +1000 Subject: [PATCH 06/12] Fix update --force with arkStagingDir --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index 4000b47..37ffde6 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -1025,7 +1025,7 @@ doUpdate() { cd "$arkserverroot" - if isUpdateNeeded; then + if [ -n "$appupdate" ] || isUpdateNeeded; then appupdate=1 if [ -n "${arkStagingDir}" -a "${arkStagingDir}" != "${arkserverroot}" ]; then From 9382c43b5b941330679e8b19a2e639191430c9de Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Tue, 28 Jun 2016 19:58:26 +1000 Subject: [PATCH 07/12] Fix --stagingdir= parameter --- tools/arkmanager | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/arkmanager b/tools/arkmanager index 37ffde6..812cc10 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -987,7 +987,7 @@ doUpdate() { modupdate=1 elif [ "$arg" == "--backup" ]; then arkBackupPreUpdate=true - elif [[ "$arg" =~ "^--stagingdir=" ]]; then + elif [[ "$arg" =~ ^--stagingdir= ]]; then arkStagingDir="${ark#--stagingdir=}" elif [ "$arg" == "--downloadonly" ]; then downloadonly=1 From 8dda5784f1bdc71f81a3fd15dda3b8dfc73eafc9 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 9 Jul 2016 14:26:43 +1000 Subject: [PATCH 08/12] Change systemd service type to forking --- tools/systemd/arkmanager.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/systemd/arkmanager.service b/tools/systemd/arkmanager.service index c2d4053..97ec6bd 100644 --- a/tools/systemd/arkmanager.service +++ b/tools/systemd/arkmanager.service @@ -5,7 +5,7 @@ After=network.target [Service] ExecStart=/usr/libexec/arkmanager/arkmanager.init start ExecStop=/usr/libexec/arkmanager/arkmanager.init stop -Type=oneshot +Type=forking [Install] WantedBy=multi-user.target From 7fbb47ad5c892f1357db12778442a2c6e57e38a3 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 9 Jul 2016 16:34:43 +1000 Subject: [PATCH 09/12] Add RemainAfterExit=yes to arkmanager.service --- tools/systemd/arkmanager.service | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/systemd/arkmanager.service b/tools/systemd/arkmanager.service index 97ec6bd..55ab37d 100644 --- a/tools/systemd/arkmanager.service +++ b/tools/systemd/arkmanager.service @@ -6,6 +6,7 @@ After=network.target ExecStart=/usr/libexec/arkmanager/arkmanager.init start ExecStop=/usr/libexec/arkmanager/arkmanager.init stop Type=forking +RemainAfterExit=yes [Install] WantedBy=multi-user.target From 7de6c8ed245b2cc699d828ca93b5f42f3817c976 Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sun, 10 Jul 2016 18:44:49 +1000 Subject: [PATCH 10/12] Create the saved arks directory if it doesn't exist --- tools/arkmanager | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/arkmanager b/tools/arkmanager index 812cc10..7d200ea 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -199,6 +199,7 @@ checkConfig() { # SavedArks directory if [ -n "$arkserverroot" ]; then local savedarksdir="${arkserverroot}/ShooterGame/Saved/${ark_AltSaveDirectoryName:-SavedArks}" + mkdir -p "${savedarksdir}" if [ ! -w "${savedarksdir}" ]; then echo -e "[" "$RED" "ERROR" "$NORMAL" "]" "\tThe ARK SavedArks directory is not writable, and saveworld will fail" fi From 30af1a92a13d0ab35f2e7d77153e2db313a10230 Mon Sep 17 00:00:00 2001 From: Andrej Rode Date: Wed, 13 Jul 2016 14:18:15 +0200 Subject: [PATCH 11/12] Default non-privileged instance-config path Default non-privileged instance-config path seems to have changed to ~/.config/ --- README.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.asciidoc b/README.asciidoc index 31abc77..00ed4ac 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -368,7 +368,7 @@ Instance config files Instance config files are stored under `/etc/arkmanager/instances/.cfg`, -`~/.local/config/arkmanager/instances/.cfg` +`~/.config/arkmanager/instances/.cfg` or as specified in the `configfile_` options in the global config. From 89f765eb7b4f8eedeacf227c1840fd757653028f Mon Sep 17 00:00:00 2001 From: Ben Peddell Date: Sat, 30 Jul 2016 03:35:15 +1000 Subject: [PATCH 12/12] Bypass Primitive+ modid --- tools/arkmanager | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/arkmanager b/tools/arkmanager index 7d200ea..84e9b8e 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -1218,6 +1218,10 @@ doDownloadMod(){ # doDownloadAllMods(){ for modid in $(getModIds); do + # Bypass the 111111111 modid used by Primitive+ + if [ "$modid" = "111111111" ]; then + continue + fi doDownloadMod $modid || return 1 done }