summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Cooper2015-08-13 23:21:02 -0700
committerMike Cooper2015-08-13 23:21:02 -0700
commitf852c1e211906109bdd59ce2e51659bd87d0b9e3 (patch)
treeccfe7bc34d7a1a32ff86dbc261d087d57e316fe5
downloadaur-f852c1e211906109bdd59ce2e51659bd87d0b9e3.tar.gz
Initial commit.
-rw-r--r--.SRCINFO20
-rw-r--r--.gitignore4
-rw-r--r--PKGBUILD42
-rwxr-xr-xterraria-server5
-rw-r--r--terraria-server.install24
-rw-r--r--terraria-server@.service14
6 files changed, 109 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..b9de9a7b3db7
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,20 @@
+pkgbase = terraria-server
+ pkgdesc = Official dedicated server for Terraria
+ pkgver = 1.3.0.8
+ pkgrel = 1
+ url = https://terraria.org/
+ install = terraria-server.install
+ arch = x86_64
+ arch = x86
+ license = unknown
+ depends = mono
+ depends = screen
+ source = http://terraria.org/server/terraria-server-linux-1308.tar.gz
+ source = terraria-server
+ source = terraria-server@.service
+ sha256sums = 0ab1ee17d78ae1ec039363519840cb1651c6aa22f5a76f014d9cfdca4fb7a333
+ sha256sums = 8a7e23efe3f72d8c88024cf32e53daa4b293bb2b17070dbf80e86876af1e22f9
+ sha256sums = 47b5b370da9f29a3d95bda3770c7bad3c2b3122361d17860fa7d7824051ae2a6
+
+pkgname = terraria-server
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..08e0b6321bc6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+/pkg/
+/src/
+/terraria-server-*.pkg.tar.xz
+/terraria-server-linux-*.tar.gz
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..f140eead6301
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,42 @@
+# Maintainer: Mike Cooper <mythmon@elem.us>
+
+pkgname=terraria-server
+pkgver=1.3.0.8
+pkgrel=1
+pkgdesc="Official dedicated server for Terraria"
+arch=('x86_64' 'x86')
+license=('unknown')
+url="https://terraria.org/"
+depends=('mono' 'screen')
+install='terraria-server.install'
+
+_pkgver=$(echo $pkgver | sed 's/\.//g')
+
+source=("http://terraria.org/server/${pkgname}-linux-${_pkgver}.tar.gz"
+ 'terraria-server'
+ 'terraria-server@.service')
+
+sha256sums=('0ab1ee17d78ae1ec039363519840cb1651c6aa22f5a76f014d9cfdca4fb7a333'
+ '8a7e23efe3f72d8c88024cf32e53daa4b293bb2b17070dbf80e86876af1e22f9'
+ '47b5b370da9f29a3d95bda3770c7bad3c2b3122361d17860fa7d7824051ae2a6')
+
+package() {
+ cd "${srcdir}/${pkgname}-linux-${_pkgver}/"
+ dest="${pkgdir}/opt/terraria-server"
+ install -o 197 -g 197 -d "${dest}"
+ install -m644 FNA.dll "${dest}/"
+ install -m644 FNA.dll.config "${dest}/"
+ install -m644 Ionic.Zip.CF.dll "${dest}/"
+ install -m644 Newtonsoft.Json.dll "${dest}/"
+ install -m644 TerrariaServer.exe "${dest}/"
+ install -m755 TerrariaServer.bin.${CARCH} "${dest}/"
+
+ cd "${srcdir}"
+ install -d "${pkgdir}/usr/bin/"
+ install -m755 terraria-server "${pkgdir}/usr/bin/"
+ install -d "${pkgdir}/usr/lib/systemd/system/"
+ install -m755 terraria-server@.service "${pkgdir}/usr/lib/systemd/system/"
+
+ install -o 197 -g 196 -d "${pkgdir}/etc/terraria-server/"
+ install -o 197 -g 197 -d "${pkgdir}/var/lib/terraria-server/"
+}
diff --git a/terraria-server b/terraria-server
new file mode 100755
index 000000000000..2697eee5af8a
--- /dev/null
+++ b/terraria-server
@@ -0,0 +1,5 @@
+#!/bin/bash
+cd /opt/terraria-server
+export MONO_IOMAP=all
+arch=$(uname -m)
+./TerrariaServer.bin.${arch} "$@"
diff --git a/terraria-server.install b/terraria-server.install
new file mode 100644
index 000000000000..bc061aef95a4
--- /dev/null
+++ b/terraria-server.install
@@ -0,0 +1,24 @@
+post_install() {
+ if ! getent group terraria &>/dev/null; then
+ groupadd -r -g 197 terraria >/dev/null
+ fi
+
+ if ! getent passwd terraria &>/dev/null; then
+ useradd -r -u 197 -g terraria -d /var/lib/terraria-server/ \
+ -s /bin/bash terraria >/dev/null
+ fi
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ if getent passwd terraria &>/dev/null; then
+ userdel terraria >/dev/null
+ fi
+
+ if getent group terraria &>/dev/null; then
+ groupdel terrara >/dev/null
+ fi
+}
diff --git a/terraria-server@.service b/terraria-server@.service
new file mode 100644
index 000000000000..a5b0f559e49c
--- /dev/null
+++ b/terraria-server@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Terraria server %i
+After=network.target
+
+[Service]
+User=terraria
+ExecStart=/usr/bin/screen -DmS terraria-%i /usr/bin/terraria-server -config /etc/terraria-server/%i.conf
+ExecStop=/usr/bin/screen -p 0 -S terraria-%i -X eval 'stuff "say Server shutting down. Saving world."\\015'
+ExecStop=/usr/bin/screen -p 0 -S terraria-%i -X eval 'stuff "save"\\015'
+ExecStop=/usr/bin/screen -p 0 -S terraria-%i -X eval 'stuff "exit"\\015'
+ExecStop=/usr/bin/sh -c 'while screen -ls | grep 'terraria-test' >/dev/null; do sleep 0.1; done'
+
+[Install]
+WantedBy=multi-user.target