rebase on alpine-s6
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Daniel Wolf 2021-08-24 15:07:50 -04:00
parent 29f13c163f
commit 4e991c662d
Signed by: nephatrine
GPG Key ID: 59D70EC2E4AAB4D0
101 changed files with 222 additions and 324 deletions

View File

@ -24,13 +24,18 @@ steps:
- name: notify - name: notify
image: appleboy/drone-discord image: appleboy/drone-discord
settings: settings:
avatar_url: https://files.nephatrine.net/Images/Buttons/Drone.png avatar_url: https://nephatrine.net/images/buttons/drone-ci.png
message: "Automated build of **{{repo.name}}:{{commit.branch}}** has returned [{{build.status}}]({{build.link}})." message: "Build of **[{{repo.name}}:{{commit.branch}}](<https://code.nephatrine.net/nephatrine/{{repo.name}}/src/branch/{{commit.branch}}>)** returned [{{build.status}}](<{{build.link}}>)."
username: DroneCI username: DroneCI
webhook_id: webhook_id:
from_secret: webhook-id from_secret: wh-quake2-id
webhook_token: webhook_token:
from_secret: webhook-token from_secret: wh-quake2-tok
depends_on: depends_on:
- default - default
---
kind: signature
hmac: 682f4a4c0c5bec6e64d66a2b63a327f467d785821a1c6d4b58ff90019954c970
...

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
fix-perms.sh sign-build.sh
test-build.sh test-build.sh

View File

@ -1,57 +1,36 @@
FROM ubuntu:rolling FROM nephatrine/alpine-s6:latest
LABEL maintainer="Daniel Wolf <nephatrine@gmail.com>" LABEL maintainer="Daniel Wolf <nephatrine@gmail.com>"
ENV DEBIAN_FRONTEND=noninteractive RUN echo "====== COMPILE QUAKE II ======" \
RUN echo "====== INSTALL PACKAGES ======" \ && apk add \
&& apt-get update -q \ screen sdl2 \
&& apt-get -y -qq install apt-utils \ && apk add --virtual .build-quake2 build-base \
&& apt-get -y -q -o Dpkg::Options::="--force-confnew" install \ clang \
quake2-server yamagi-quake2-core \ git \
wget \ linux-headers \
&& apt-get clean \ sdl2-dev \
&& rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/* && git -C /usr/src clone --single-branch --depth=1 https://github.com/yquake2/yquake2.git && cd /usr/src/yquake2 \
&& make server game && mv release /opt/quake2 \
RUN echo "====== BUILD MODULES ======" \ && mkdir -p /opt/quake2/baseq2/maps && cp stuff/mapfixes/baseq2/*.ent /opt/quake2/baseq2/maps/ \
&& rm -rf /usr/share/games/quake2/baseq2/* \ && mkdir -p /opt/quake2/jugfull/maps && cp stuff/mapfixes/juggernaut/*.ent /opt/quake2/jugfull/maps/ \
&& apt-get update -q \ && cp stuff/yq2.cfg /opt/quake2/baseq2 \
&& apt-get -y -q -o Dpkg::Options::="--force-confnew" install cmake g++ git make \ && git -C /usr/src clone --single-branch --depth=1 https://github.com/yquake2/ctf.git && cd /usr/src/ctf \
&& cd /usr/src \ && make && mv release /opt/quake2/ctf \
&& git clone https://github.com/yquake2/ctf.git && cd ctf \ && git -C /usr/src clone --single-branch --depth=1 https://github.com/yquake2/xatrix.git && cd /usr/src/xatrix \
&& mkdir build && cd build \ && make && mv release /opt/quake2/xatrix \
&& cmake -DCMAKE_BUILD_TYPE=Release .. && make \ && mkdir -p /opt/quake2/xatrix/maps && cp stuff/mapfixes/*.ent /opt/quake2/xatrix/maps/ \
&& mkdir -p /usr/lib/yamagi-quake2/ctf && cp Release/game.so /usr/lib/yamagi-quake2/ctf/ \ && git -C /usr/src clone --single-branch --depth=1 https://github.com/yquake2/rogue.git && cd /usr/src/rogue \
&& mkdir /usr/share/games/quake2/ctf \ && make && mv release /opt/quake2/rogue \
&& cd /usr/src \ && mkdir -p /opt/quake2/rogue/maps && cp stuff/mapfixes/*.ent /opt/quake2/rogue/maps/ \
&& git clone https://github.com/yquake2/3zb2.git && cd 3zb2 \ && git -C /usr/src clone --single-branch --depth=1 https://github.com/yquake2/zaero.git && cd /usr/src/zaero \
&& grep -v g_turret.c CMakeLists.txt > CMakeLists2.txt && mv CMakeLists2.txt CMakeLists.txt \ && make && mv release /opt/quake2/zaero \
&& mkdir build && cd build \ && mkdir -p /opt/quake2/zaero/maps && cp stuff/mapfixes/*.ent /opt/quake2/zaero/maps/ \
&& cmake -DCMAKE_BUILD_TYPE=Release .. && make \ && git -C /usr/src clone --single-branch --depth=1 https://github.com/yquake2/slightmechanicaldestruction.git && cd /usr/src/slightmechanicaldestruction \
&& mkdir /usr/lib/yamagi-quake2/3zb2 && cp Release/game.so /usr/lib/yamagi-quake2/3zb2/ \ && make && mv release /opt/quake2/smd \
&& mkdir /usr/share/games/quake2/3zb2 \ && git -C /usr/src clone --single-branch --depth=1 https://github.com/yquake2/pakextract.git && cd /usr/src/pakextract \
&& cd /usr/src \ && make && mv pakextract /usr/local/bin/ \
&& git clone https://github.com/yquake2/xatrix.git && cd xatrix \ && cd /usr/src && rm -rf /usr/src/* \
&& mkdir build && cd build \ && apk del --purge .build-quake2 && rm -rf /var/cache/apk/*
&& cmake -DCMAKE_BUILD_TYPE=Release .. && make \
&& mkdir /usr/lib/yamagi-quake2/xatrix && cp Release/game.so /usr/lib/yamagi-quake2/xatrix/ \
&& mkdir /usr/share/games/quake2/xatrix \
&& cd /usr/src \
&& git clone https://github.com/yquake2/rogue.git && cd rogue \
&& mkdir build && cd build \
&& cmake -DCMAKE_BUILD_TYPE=Release .. && make \
&& mkdir /usr/lib/yamagi-quake2/rogue && cp Release/game.so /usr/lib/yamagi-quake2/rogue/ \
&& mkdir /usr/share/games/quake2/rogue \
&& cd /usr/src \
&& git clone https://github.com/yquake2/zaero.git && cd zaero \
&& mkdir build && cd build \
&& cmake -DCMAKE_BUILD_TYPE=Release .. && make \
&& mkdir /usr/lib/yamagi-quake2/zaero && cp Release/game.so /usr/lib/yamagi-quake2/zaero/ \
&& mkdir /usr/share/games/quake2/zaero \
&& apt-get -y -q purge cmake g++ git make \
&& apt-get -y -q autoremove \
&& cd /usr/src && rm -rf /tmp/* /usr/src/* /var/lib/apt/lists/* /var/tmp/*
COPY override / COPY override /
USER quake2-server
EXPOSE 27910/udp EXPOSE 27910/udp
ENTRYPOINT ["/usr/share/games/quake2/quake2-server"]
CMD ["+exec", "server.cfg"]

View File

@ -1,4 +1,4 @@
Copyright © 2019 Daniel Wolf <<nephatrine@gmail.com>> Copyright © 2021 Daniel Wolf <<nephatrine@gmail.com>>
**Permission to use, copy, modify, and distribute this software for any **Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above purpose with or without fee is hereby granted, provided that the above
@ -10,4 +10,4 @@ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View File

@ -1,19 +1,20 @@
[Git](https://code.nephatrine.net/nephatrine/docker-quake2) | [Git](https://code.nephatrine.net/nephatrine/docker-quake2/src/branch/master) |
[Docker](https://hub.docker.com/r/nephatrine/quake2-server/) | [Docker](https://hub.docker.com/r/nephatrine/quake2-server/) |
[unRAID](https://code.nephatrine.net/nephatrine/unraid-containers) [unRAID](https://code.nephatrine.net/nephatrine/unraid-containers)
[![Build Status](https://ci.nephatrine.net/api/badges/nephatrine/docker-quake2/status.svg?ref=refs/heads/master)](https://ci.nephatrine.net/nephatrine/docker-quake2) [![Build Status](https://ci.nephatrine.net/api/badges/nephatrine/docker-quake2/status.svg?ref=refs/heads/master)](https://ci.nephatrine.net/nephatrine/docker-quake2)
# Docker Registry # Quake II Server
This docker image contains a Docker Registry server to self-host your own This docker image contains a Quake II dedicated server.
docker registry.
**YOU WILL NEED TO USE A SEPARATE REVERSE PROXY SERVER TO SECURE THIS SERVICE. **YOU WILL NEED TO USE A SEPARATE REVERSE PROXY SERVER TO SECURE THIS SERVICE.
SEE THE [DOCUMENTATION](https://docs.docker.com/registry/recipes/nginx/) FOR FOR INSTANCE, AN [NGINX](https://nginx.com/) REVERSE PROXY CONTAINER.**
MORE DETAILS ON HOW TO CONFIGURE SUCH A PROXY.**
- [Docker Registry](https://docs.docker.com/registry/) - [Alpine Linux](https://alpinelinux.org/)
- [Skarnet Software](https://skarnet.org/software/)
- [S6 Overlay](https://github.com/just-containers/s6-overlay)
- [Yamagi Quake II](https://yamagi.org/quake2/)
You can spin up a quick temporary test container like this: You can spin up a quick temporary test container like this:
@ -21,6 +22,18 @@ You can spin up a quick temporary test container like this:
docker run --rm -p 27910:27910 -it nephatrine/quake2-server:latest /bin/bash docker run --rm -p 27910:27910 -it nephatrine/quake2-server:latest /bin/bash
~~~ ~~~
## Configuration Variables
You can set these parameters using the syntax ``-e "VARNAME=VALUE"`` on your
``docker run`` command. Some of these may only be used during initial
configuration and further changes may need to be made in the generated
configuration files.
- ``GAME_START``: Startup Arguments (*"+exec server.cfg"*)
- ``PUID``: Mount Owner UID (*1000*)
- ``PGID``: Mount Owner GID (*100*)
- ``TZ``: System Timezone (*America/New_York*)
## Persistent Mounts ## Persistent Mounts
You can provide a persistent mountpoint using the ``-v /host/path:/container/path`` You can provide a persistent mountpoint using the ``-v /host/path:/container/path``
@ -28,18 +41,22 @@ syntax. These mountpoints are intended to house important configuration files,
logs, and application state (e.g. databases) so they are not lost on image logs, and application state (e.g. databases) so they are not lost on image
update. update.
- ``/usr/share/games/quake2/baseq2``: Quake II Game Data. - ``/mnt/config``: Persistent Data.
- ``/usr/share/games/quake2/ctf``: CTF Game Data.
- ``/usr/share/games/quake2/xatrix``: The Reckoning Game Data.
- ``/usr/share/games/quake2/rogue``: Ground Zero Game Data.
- ``/usr/share/games/quake2/zaero``: Zaero Game Data.
- ``/usr/share/games/quake2/3zb2``: 3rd Zigock Bot Game Data.
There is no game data included in the image - not even the shareware demo. Do not share ``/mnt/config`` volumes between multiple containers as they may
Please populate this yourself with a legal copy of Quake II. interfere with the operation of one another.
On startup, the game will execute the ``server.cfg`` found in the ``baseq2`` You can perform some basic configuration of the container using the files and
folder and so you can configure settings there. directories listed below.
- ``/mnt/config/data/quake2/``: Game Data. [*]
- ``/mnt/config/data/quake2/baseq2/server.cfg``: Default Quake II Configuration. [*]
- ``/mnt/config/etc/crontabs/<user>``: User Crontabs. [*]
- ``/mnt/config/etc/logrotate.conf``: Logrotate Global Configuration.
- ``/mnt/config/etc/logrotate.d/``: Logrotate Additional Configuration.
**[*] Changes to some configuration files may require service restart to take
immediate effect.**
## Network Services ## Network Services

View File

@ -1,229 +0,0 @@
[MessDeathMatch] V printable limit
<*>**************************<*>
* 3rd-Zigock II 0.97 *
* Quake2 Multiplayer *
* Deathmatch Simulator *
<*>**************************<*>
.
[MessChainDM]
3rd-Zigock II 0.96
Chaining mode
.
[MessCTF]
<*>**************************<*>
* 3rd-Zigock II 0.97 *
* Quake2 Multiplayer *
* Capture The Flag Simulator *
<*>**************************<*>
.
[MessChainCTF]
3rd-Zigock II 0.96
CTF Chaining mode
.
[BotList]
#Format is
#
#\\Netname \Model \Skin \Params0-8 \team \ASpawn
#
#Params
#0 walking flag (0 - 1) 1-walk 0-always run
#1 aiming skill level (0 - 9) high-hard aiming
#2 frq. of pickup items (0 - 9) high-mania
#3 character type (0 - 9) high-offensive low-defensive
#4 combat skill (0 - 9) high-professional
#5 rocket jump flag (0 - 1) 1-on 0-off
#6 reaction skill (0 - 9) high-high reaction skill
#7 vertical view range (10 - 180) degree(abs)
#8 horizontal view range (10 - 180) degree(abs)
#9 primary weapon (0 - 13) 0-none
#10 secondary weapon (0 - 13) 0-none
#1 Blaster - 2 ShotGun - 3 SuperShotgun - 4 MachineGun - 5 ChainGun - 6 Hand Grenade
#7 Grenade Launcher - 8 Rocket Launcher - 9 Hyper Blaster - 10 Rail Gun - 11 BFG10K
#12 Plasma Gun - 13 Ion Ripper
#11 dodge(depend on combat skill) (0 - 1) 1-On 0-Off
#12 estimate(need to activate param 13) (0 - 1) 1-On 0-Off
#13 enemy's noise check (0 - 1) 1-On 0-Off
#14 can't see through water (0 - 1) 1-On 0-Off
#15 teamworking
#.......................................#0#1#2#3#4#5#6 #7 #8 #9 #10 #11#12#13#14#15
# Description botlist name
# #------------------------#-------------------#
# | Default Free For All | default |
# | Dueling bots | 1v1sk1 to 1v1sk10 |
# | 1human + 1bot v 2bots | 2v2sk1 to 2v2sk10 |
# | 1human + 3bots v 3bots | 4v4sk1 to 4v4sk10 |
# #------------------------#-------------------#
#
#
#Default Bots
\\Evil Zeep \cyborg \ps9000 \0\7\5\5\9\1\9 \090\090\08\05 \1\1\1\1\0 \R\0
\\Claw Finger \male \psycho \0\7\5\5\4\1\9 \090\090\0\0 \1\1\1\1\0 \B\0
\\Biohazard \crakhor\crakhorb \0\4\5\5\8\0\9 \045\090\10\0 \1\1\1\1\0 \R\0
\\Carcass \male \cipher \0\6\6\5\5\0\5 \045\090\0\0 \1\1\1\1\0 \B\0
\\Prong \male \psycho \0\8\7\6\8\1\7 \090\090\10\05 \0\1\1\1\0 \R\0
\\Sodom \cyborg \oni911 \0\9\8\5\5\1\7 \090\090\0\0 \0\0\1\1\0 \B\0
\\Korn \female \cobalt \0\5\6\5\7\1\8 \090\090\08\08 \0\0\0\1\0 \R\0
\\Sepultura \male \flak \1\6\5\5\9\1\5 \090\090\05\05 \0\0\0\0\0 \B\0
\\Soul fly \female \brianna \0\9\5\5\0\0\5 \090\090\11\08 \0\0\0\0\0 \R\0
\\Flotsam&Jetsam\cyborg \ps9000 \0\9\5\5\0\0\5 \090\090\11\08 \0\0\0\0\0 \B\0
\\Overkill \male \claymore \0\4\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \R\0
\\Urge \female \lotus \0\0\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \B\0
\\Napalm Death \cyborg \tyr574 \0\1\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \R\0
\\Cathedral \male \howitzer \0\1\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \B\0
\\Entombed \female \ensign \0\1\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \R\0
\\Helmet \male \rampage \0\1\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \B\0
\\Brutal Truth \male \recon \0\1\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \R\0
\\Ultra head \female \jungle \0\1\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \R\0
\\Exodus \male \viper \0\1\5\5\0\0\5 \090\180\11\08 \0\0\0\0\0 \B\0
# Dueling Bots Skill 1-10
[1v1sk1]
\\Prong \cyborg \oni911 \1\2\3\1\3\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
[1v1sk2]
\\Prong \cyborg \oni911 \0\3\3\2\4\0\3 \065\065\03\0 \0\0\1\1\2 \R\1
[1v1sk3]
\\Prong \cyborg \oni911 \0\3\3\2\6\0\5 \075\075\08\0 \1\0\1\1\4 \R\1
[1v1sk4]
\\Prong \cyborg \oni911 \0\5\4\4\7\1\5 \075\075\08\05 \1\0\1\1\5 \R\1
[1v1sk5]
\\Prong \cyborg \oni911 \0\7\4\5\8\1\6 \080\080\08\05 \1\0\1\1\8 \R\1
[1v1sk6]
\\Prong \cyborg \oni911 \0\8\4\6\9\1\7 \090\090\05\05 \1\1\1\1\8 \R\1
[1v1sk7]
\\Prong \cyborg \oni911 \0\8\4\8\9\1\7 \100\095\10\05 \1\1\1\1\9 \R\1
[1v1sk8]
\\Prong \cyborg \oni911 \0\9\6\8\9\1\7 \105\105\10\05 \1\1\1\1\9 \R\1
[1v1sk9]
\\Prong \cyborg \oni911 \0\9\6\8\9\1\7 \110\110\10\05 \1\1\1\1\9 \R\1
[1v1sk10]
\\Prong \cyborg \oni911 \0\9\6\8\9\1\8 \115\115\10\05 \1\1\1\1\9 \R\1
# 2v2 (1Human+1Bot v's 2Bots) Skill 1-10
[2v2sk1]
\\Evil Zeep \male \claymore \1\2\3\1\3\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
\\Prong \cyborg \oni911 \1\2\3\1\3\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
\\Sodom \cyborg \oni911 \1\2\3\2\2\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
[2v2sk2]
\\Evil Zeep \male \claymore \0\3\3\2\4\0\3 \065\065\08\0 \0\0\1\1\2 \R\1
\\Prong \cyborg \oni911 \0\3\3\2\4\0\3 \065\065\08\0 \0\0\1\1\2 \R\1
\\Sodom \cyborg \oni911 \0\3\3\3\2\0\4 \065\065\05\0 \0\0\0\1\2 \R\1
[2v2sk3]
\\Evil Zeep \male \claymore \0\3\3\2\6\0\4 \075\075\08\0 \1\0\1\1\4 \R\1
\\Prong \cyborg \oni911 \0\3\3\2\6\0\5 \075\075\08\0 \1\0\1\1\4 \R\1
\\Sodom \cyborg \oni911 \0\3\3\3\5\0\4 \070\070\05\0 \1\1\1\1\4 \R\1
[2v2sk4]
\\Evil Zeep \male \claymore \0\5\4\4\7\1\4 \075\075\08\05 \1\0\1\1\5 \R\1
\\Prong \cyborg \oni911 \0\5\4\4\7\1\5 \075\075\08\05 \1\0\1\1\5 \R\1
\\Sodom \cyborg \oni911 \0\4\3\3\5\0\4 \075\075\08\0 \1\1\1\1\5 \R\1
[2v2sk5]
\\Evil Zeep \male \claymore \0\7\4\5\8\1\5 \080\080\08\05 \1\0\1\1\8 \R\1
\\Prong \cyborg \oni911 \0\7\4\5\8\1\6 \080\080\08\05 \1\0\1\1\8 \R\1
\\Sodom \cyborg \oni911 \0\5\3\4\6\0\5 \080\080\08\0 \1\1\1\1\6 \R\1
[2v2sk6]
\\Evil Zeep \male \claymore \0\8\4\6\9\1\7 \090\090\05\05 \1\1\1\1\8 \R\1
\\Prong \cyborg \oni911 \0\8\4\6\9\1\7 \090\090\05\05 \1\1\1\1\8 \R\1
\\Sodom \cyborg \oni911 \0\6\3\5\8\1\8 \090\080\08\0 \1\1\1\1\7 \R\1
[2v2sk7]
\\Evil Zeep \male \claymore \0\8\4\8\9\1\7 \100\090\10\05 \1\1\1\1\9 \R\1
\\Prong \cyborg \oni911 \0\8\4\8\9\1\7 \100\095\10\05 \1\1\1\1\9 \R\1
\\Sodom \cyborg \oni911 \0\6\3\6\8\1\8 \095\090\08\05 \1\1\1\1\8 \R\1
[2v2sk8]
\\Evil Zeep \male \claymore \0\8\6\8\9\1\7 \105\105\10\05 \1\1\1\1\9 \R\1
\\Prong \cyborg \oni911 \0\8\6\8\9\1\7 \105\105\10\05 \1\1\1\1\9 \R\1
\\Sodom \cyborg \oni911 \0\7\5\6\8\1\8 \105\100\08\05 \1\1\1\1\8 \R\1
[2v2sk9]
\\Evil Zeep \male \claymore \0\8\6\8\9\1\7 \110\105\10\05 \1\1\1\1\9 \R\1
\\Prong \cyborg \oni911 \0\8\6\8\9\1\7 \110\105\10\05 \1\1\1\1\9 \R\1
\\Sodom \cyborg \oni911 \0\7\5\6\8\1\8 \105\105\08\05 \1\1\1\1\8 \R\1
[2v2sk10]
\\Evil Zeep \male \claymore \0\8\6\8\9\1\7 \110\110\10\05 \1\1\1\1\9 \R\1
\\Prong \cyborg \oni911 \0\8\6\8\9\1\7 \110\110\10\05 \1\1\1\1\9 \R\1
\\Sodom \cyborg \oni911 \0\7\5\6\8\1\8 \110\110\08\05 \1\1\1\1\8 \R\1
# 4v4 (1Human+3Bots v's 4Bots) Skill 1-10
[4v4sk1]
\\Evil Zeep \male \claymore \1\2\3\1\3\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
\\Claw Finger \male \claymore \1\2\3\2\2\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
\\Biohazard \male \claymore \1\1\4\3\1\1\3 \060\060\0\0 \0\0\0\1\0 \R\1
\\Prong \cyborg \oni911 \1\2\3\1\3\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
\\Sodom \cyborg \oni911 \1\2\3\2\2\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
\\Korn \cyborg \oni911 \1\1\4\3\1\1\3 \060\060\0\0 \0\0\0\1\0 \R\1
\\Sepultura \cyborg \oni911 \1\2\3\2\2\0\3 \060\060\0\0 \0\0\0\1\0 \R\1
[4v4sk2]
\\Evil Zeep \male \claymore \0\3\3\2\4\0\3 \065\065\08\0 \0\0\1\1\2 \R\1
\\Claw Finger \male \claymore \0\3\3\3\2\0\4 \065\065\05\0 \0\0\0\1\2 \R\1
\\Biohazard \male \claymore \1\2\4\4\1\1\3 \065\065\03\0 \0\0\0\1\0 \R\1
\\Prong \cyborg \oni911 \0\3\3\2\4\0\3 \065\065\08\0 \0\0\1\1\2 \R\1
\\Sodom \cyborg \oni911 \0\3\3\3\2\0\4 \065\065\05\0 \0\0\0\1\2 \R\1
\\Korn \cyborg \oni911 \0\2\4\4\1\1\3 \065\065\03\0 \0\0\1\1\0 \R\1
\\Sepultura \cyborg \oni911 \1\3\3\3\2\0\4 \065\065\0\0 \0\0\0\1\0 \R\1
[4v4sk3]
\\Evil Zeep \male \claymore \0\3\3\2\6\0\4 \075\075\08\0 \1\0\1\1\4 \R\1
\\Claw Finger \male \claymore \0\3\3\3\5\0\5 \070\070\05\0 \1\1\1\1\4 \R\1
\\Biohazard \male \claymore \1\2\4\4\4\1\4 \070\070\03\0 \0\0\0\1\2 \R\1
\\Prong \cyborg \oni911 \0\3\3\2\6\0\5 \075\075\08\0 \1\0\1\1\4 \R\1
\\Sodom \cyborg \oni911 \0\3\3\3\5\0\4 \070\070\05\0 \1\1\1\1\4 \R\1
\\Korn \cyborg \oni911 \0\2\4\4\4\1\5 \070\070\03\0 \0\0\1\1\2 \R\1
\\Sepultura \cyborg \oni911 \1\3\3\3\3\0\4 \070\070\0\0 \0\0\0\1\0 \R\1
[4v4sk4]
\\Evil Zeep \male \claymore \0\5\4\4\7\1\4 \075\075\08\05 \1\0\1\1\5 \R\1
\\Claw Finger \male \claymore \0\4\3\3\5\0\5 \075\075\08\0 \1\1\1\1\5 \R\1
\\Biohazard \male \claymore \0\3\4\5\4\1\4 \075\075\05\0 \0\0\1\1\3 \R\1
\\Prong \cyborg \oni911 \0\5\4\4\7\1\5 \075\075\08\05 \1\0\1\1\5 \R\1
\\Sodom \cyborg \oni911 \0\4\3\3\5\0\4 \075\075\08\0 \1\1\1\1\5 \R\1
\\Korn \cyborg \oni911 \0\3\4\5\4\1\5 \075\075\05\0 \0\0\1\1\3 \R\1
\\Sepultura \cyborg \oni911 \0\3\3\3\3\0\4 \075\075\0\0 \0\0\1\1\2 \R\1
[4v4sk5]
\\Evil Zeep \male \claymore \0\7\4\5\8\1\5 \080\080\05\05 \1\0\1\1\8 \R\1
\\Claw Finger \male \claymore \0\5\3\4\6\0\6 \080\080\08\0 \1\1\1\1\6 \R\1
\\Biohazard \male \claymore \0\4\4\6\4\1\5 \080\075\05\05 \0\1\1\1\5 \R\1
\\Prong \cyborg \oni911 \0\7\4\5\8\1\6 \080\080\05\05 \1\0\1\1\8 \R\1
\\Sodom \cyborg \oni911 \0\5\3\4\6\0\5 \080\080\08\0 \1\1\1\1\6 \R\1
\\Korn \cyborg \oni911 \0\4\4\6\4\1\6 \080\075\05\05 \0\0\1\1\5 \R\1
\\Sepultura \cyborg \oni911 \0\4\3\4\3\0\5 \075\075\0\0 \1\1\1\1\3 \R\1
[4v4sk6]
\\Evil Zeep \male \claymore \0\8\4\6\9\1\7 \090\090\05\05 \1\1\1\1\8 \R\1
\\Claw Finger \male \claymore \0\6\3\5\8\1\8 \090\080\08\05 \1\1\1\1\7 \R\1
\\Biohazard \male \claymore \0\5\4\7\7\1\5 \080\075\05\05 \1\1\1\1\5 \R\1
\\Prong \cyborg \oni911 \0\8\4\6\9\1\7 \090\090\05\05 \1\1\1\1\8 \R\1
\\Sodom \cyborg \oni911 \0\6\3\5\8\1\8 \090\080\08\05 \1\1\1\1\7 \R\1
\\Korn \cyborg \oni911 \0\5\4\7\7\1\6 \085\085\05\05 \1\1\1\1\5 \R\1
\\Sepultura \cyborg \oni911 \0\5\3\5\6\1\5 \085\085\0\0 \1\1\1\1\4 \R\1
[4v4sk7]
\\Evil Zeep \male \claymore \0\8\4\8\9\1\7 \100\090\10\05 \1\1\1\1\9 \R\1
\\Claw Finger \male \claymore \0\6\3\6\8\1\8 \095\095\08\05 \1\1\1\1\8 \R\1
\\Biohazard \male \claymore \0\5\4\8\7\1\5 \095\085\05\05 \1\1\1\1\6 \R\1
\\Prong \cyborg \oni911 \0\8\4\8\9\1\7 \100\095\10\05 \1\1\1\1\9 \R\1
\\Sodom \cyborg \oni911 \0\6\3\6\8\1\8 \095\090\08\05 \1\1\1\1\8 \R\1
\\Korn \cyborg \oni911 \0\5\4\8\7\1\6 \095\085\05\05 \1\1\1\1\6 \R\1
\\Sepultura \cyborg \oni911 \0\5\3\6\6\1\5 \095\085\0\0 \1\1\1\1\5 \R\1
[4v4sk8]
\\Evil Zeep \male \claymore \0\9\6\8\9\1\7 \105\105\10\05 \1\1\1\1\9 \R\1
\\Claw Finger \male \claymore \0\7\5\6\8\1\8 \105\100\08\05 \1\1\1\1\8 \R\1
\\Biohazard \male \claymore \0\6\5\8\7\1\5 \095\095\05\05 \1\1\1\1\6 \R\1
\\Prong \cyborg \oni911 \0\9\6\8\9\1\7 \105\105\10\05 \1\1\1\1\9 \R\1
\\Sodom \cyborg \oni911 \0\7\5\6\8\1\8 \105\100\08\05 \1\1\1\1\8 \R\1
\\Korn \cyborg \oni911 \0\6\6\8\7\1\6 \100\095\05\05 \1\1\1\1\6 \R\1
\\Sepultura \cyborg \oni911 \0\5\5\6\6\1\5 \095\085\0\0 \1\1\1\1\5 \R\1
[4v4sk9]
\\Evil Zeep \male \claymore \0\9\6\8\9\1\7 \105\105\10\05 \1\1\1\1\9 \R\1
\\Claw Finger \male \claymore \0\7\5\6\8\1\8 \105\105\08\05 \1\1\1\1\8 \R\1
\\Biohazard \male \claymore \0\6\5\8\7\1\5 \100\095\05\05 \1\1\1\1\7 \R\1
\\Prong \cyborg \oni911 \0\9\6\8\9\1\7 \105\105\10\05 \1\1\1\1\9 \R\1
\\Sodom \cyborg \oni911 \0\7\5\6\8\1\8 \105\105\08\05 \1\1\1\1\8 \R\1
\\Korn \cyborg \oni911 \0\6\6\8\7\1\6 \100\095\05\05 \1\1\1\1\7 \R\1
\\Sepultura \cyborg \oni911 \0\5\5\6\6\1\5 \095\085\0\0 \1\1\1\1\5 \R\1
[4v4sk10]
\\Evil Zeep \male \claymore \0\9\6\8\9\1\7 \110\105\10\05 \1\1\1\1\9 \R\1
\\Claw Finger \male \claymore \0\8\5\6\8\1\8 \110\105\08\05 \1\1\1\1\9 \R\1
\\Biohazard \male \claymore \0\7\5\8\7\1\5 \105\100\05\05 \1\1\1\1\8 \R\1
\\Prong \cyborg \oni911 \0\9\6\8\9\1\7 \110\105\10\05 \1\1\1\1\9 \R\1
\\Sodom \cyborg \oni911 \0\8\5\6\8\1\8 \110\105\08\05 \1\1\1\1\9 \R\1
\\Korn \cyborg \oni911 \0\7\6\8\7\1\6 \105\100\05\05 \1\1\1\1\8 \R\1
\\Sepultura \cyborg \oni911 \0\6\5\6\6\1\5 \095\095\0\0 \1\1\1\1\6 \R\1

View File

@ -1,18 +0,0 @@
[base]
base1 "Outer Base"
base2 "Installation"
base3 "Comm Center"
[q2dmx]
q2dm1 "The Edge"
q2dm2 "Tokay's Towers"
q2dm3 "The Frag Pipe"
q2dm4 "Lost Hallways"
q2dm5 "The Pits"
q2dm6 "Lava Tomb"
q2dm7 "The Slimy Place"
q2dm8 "WareHouse"
[ware]
ware1 "Supply Station"
ware2 "Warehouse"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,12 @@
#!/usr/bin/with-contenv bash
if pgrep -f quakedock >/dev/null; then
s6-setuidgid guardian screen -S quakedock -X stuff "`echo -ne \"say QUAKE II SERVER SHUTTING DOWN!\r\"`"
s6-setuidgid guardian screen -S quakedock -X stuff "`echo -ne \"say 3\r\"`"
sleep 2
s6-setuidgid guardian screen -S quakedock -X stuff "`echo -ne \"say 2\r\"`"
sleep 2
s6-setuidgid guardian screen -S quakedock -X stuff "`echo -ne \"say 1\r\"`"
sleep 2
s6-setuidgid guardian screen -S quakedock -X stuff "`echo -ne \"quit\r\"`"
sleep 2
fi

View File

@ -0,0 +1,94 @@
#!/usr/bin/with-contenv bash
if [[ ! -d /mnt/config/data/quake2/baseq2 ]]; then
s6-setuidgid guardian mkdir -p /mnt/config/data/quake2/baseq2/maps
s6-setuidgid guardian cp -n /opt/quake2/baseq2/*.cfg /mnt/config/data/quake2/baseq2/
cd /usr/src
if [[ ! -e /tmp/q2-314-demo-x86.exe ]]; then
wget -qO /tmp/q2-314-demo-x86.exe https://files.nephatrine.net/Q2/idstuff/q2-314-demo-x86.exe
fi
if [[ ! -e /tmp/q2-3.20-x86-full-ctf.exe ]]; then
wget -qO /tmp/q2-3.20-x86-full-ctf.exe https://files.nephatrine.net/Q2/idstuff/q2-3.20-x86-full-ctf.exe
fi
if [[ ! -e /tmp/match1.tar.gz ]]; then
wget -qO /tmp/match1.tar.gz https://files.nephatrine.net/Q2/idstuff/match1.tar.gz
fi
if [[ ! -e /tmp/dm_64.tar.gz ]]; then
wget -qO /tmp/dm_64.tar.gz https://files.nephatrine.net/Q2/idstuff/dm_64.tar.gz
fi
unzip -jq -d /mnt/config/data/quake2/baseq2/ /tmp/q2-314-demo-x86.exe \
Install/Data/baseq2/pak0.pak \
Install/Data/DOCS/license.txt
unzip -jq -d /mnt/config/data/quake2/baseq2/ /tmp/q2-3.20-x86-full-ctf.exe \
baseq2/maps.lst \
baseq2/pak1.pak \
baseq2/pak2.pak
tar x -C /mnt/config/data/quake2/baseq2/ -zf /tmp/match1.tar.gz \
pak3.pak
tar x -C /mnt/config/data/quake2/baseq2/maps/ -zf /tmp/dm_64.tar.gz \
base64.bsp \
city64.bsp \
sewer64.bsp
fi
if [[ ! -d /mnt/config/data/quake2/ctf ]]; then
s6-setuidgid guardian mkdir -p /mnt/config/data/quake2/ctf/maps
cd /usr/src
if [[ ! -e /tmp/q2-3.20-x86-full-ctf.exe ]]; then
wget -qO /tmp/q2-3.20-x86-full-ctf.exe https://files.nephatrine.net/Q2/idstuff/q2-3.20-x86-full-ctf.exe
fi
if [[ ! -e /tmp/q2ctf150upgrade.zip ]]; then
wget -qO /tmp/q2ctf150upgrade.zip https://files.nephatrine.net/Q2/q2ctf/q2ctf150upgrade.zip
fi
if [[ ! -e /tmp/q2ctf4a.tar.gz ]]; then
wget -qO /tmp/q2ctf4a.tar.gz https://files.nephatrine.net/Q2/q2ctf/q2ctf4a.tar.gz
fi
unzip -jq -d /mnt/config/data/quake2/ctf/ /tmp/q2-3.20-x86-full-ctf.exe \
ctf/pak0.pak \
ctf/server.cfg
unzip -jq -d /mnt/config/data/quake2/ctf/ /tmp/q2ctf150upgrade.zip \
pak1.pak
tar x -C /mnt/config/data/quake2/ctf/maps/ -zf /tmp/q2ctf4a.tar.gz \
q2ctf4a.bsp
fi
if [[ -d /mnt/config/data/quake2/baseq2 ]]; then
if [[ ! -d /mnt/config/data/quake2/baseq2/maps ]]; then
s6-setuidgid guardian mkdir -p /mnt/config/data/quake2/baseq2/maps
fi
s6-setuidgid guardian cp -n /opt/quake2/baseq2/maps/*.ent /mnt/config/data/quake2/baseq2/maps/
fi
if [[ -d /mnt/config/data/quake2/jugfull ]]; then
if [[ ! -d /mnt/config/data/quake2/jugfull/maps ]]; then
s6-setuidgid guardian mkdir -p /mnt/config/data/quake2/jugfull/maps
fi
s6-setuidgid guardian cp -n /opt/quake2/jugfull/maps/*.ent /mnt/config/data/quake2/jugfull/maps/
fi
if [[ -d /mnt/config/data/quake2/xatrix ]]; then
if [[ ! -d /mnt/config/data/quake2/xatrix/maps ]]; then
s6-setuidgid guardian mkdir -p /mnt/config/data/quake2/xatrix/maps
fi
s6-setuidgid guardian cp -n /opt/quake2/xatrix/maps/*.ent /mnt/config/data/quake2/xatrix/maps/
fi
if [[ -d /mnt/config/data/quake2/rogue ]]; then
if [[ ! -d /mnt/config/data/quake2/rogue/maps ]]; then
s6-setuidgid guardian mkdir -p /mnt/config/data/quake2/rogue/maps
fi
s6-setuidgid guardian cp -n /opt/quake2/rogue/maps/*.ent /mnt/config/data/quake2/rogue/maps/
fi
if [[ -d /mnt/config/data/quake2/zaero ]]; then
if [[ ! -d /mnt/config/data/quake2/zaero/maps ]]; then
s6-setuidgid guardian mkdir -p /mnt/config/data/quake2/zaero/maps
fi
s6-setuidgid guardian cp -n /opt/quake2/zaero/maps/*.ent /mnt/config/data/quake2/zaero/maps/
fi
GAME_LIBS=`find /mnt/config/data/quake2 -type f -name game.so | wc -l`
if [[ ${GAME_LIBS} -gt 0 ]]; then
cd /mnt/config/data/quake2
cp --parents -R */game.so /opt/quake2/
fi

View File

@ -0,0 +1 @@
/mnt/config/data/quake2 true guardian:users,1000:100 0644 0755

View File

@ -0,0 +1,12 @@
#!/usr/bin/with-contenv bash
GAME_START=${GAME_START:-"+exec server.cfg"}
if ! pgrep -f quakedock >/dev/null; then
cd /opt/quake2
HOME=/mnt/config/home s6-setuidgid guardian screen -dmS quakedock ./q2ded -datadir /mnt/config/data/quake2 ${GAME_START};
fi
sleep 10
while pgrep -f quakedock >/dev/null; do
sleep 30
done

Some files were not shown because too many files have changed in this diff Show More