docker-quake2-yamagi/override/usr/local/bin/quake2-install

191 lines
8.8 KiB
Plaintext
Executable File

#!/command/with-contenv /bin/sh
# SPDX-FileCopyrightText: 2022 - 2023 Daniel Wolf <nephatrine@gmail.com>
#
# SPDX-License-Identifier: ISC
if /usr/bin/pgrep -f quakedock >/dev/null; then
exit 1
fi
if [ -z "${QUAKE2_DATA}" ]; then
if [ -n "${QUAKE2_INSTALL}" ] && [ ! "${QUAKE2_INSTALL}" = "true" ] && [ ! "${QUAKE2_INSTALL}" = "false" ]; then
export QUAKE2_DATA="${QUAKE2_INSTALL}"
else
export QUAKE2_DATA="/mnt/config"
fi
fi
if [ -z "${QUAKE2_INSTALL}" ] && [ "${QUAKE2_DATA}" = "/mnt/config" ]; then
export QUAKE2_INSTALL="${QUAKE2_DATA}"
elif [ "${QUAKE2_INSTALL}" = "true" ]; then
export QUAKE2_INSTALL="${QUAKE2_DATA}"
elif [ "${QUAKE2_INSTALL}" = "false" ]; then
export QUAKE2_INSTALL=
fi
if [ -z "${QUAKE2_DATA_SUBPATH}" ]; then
export QUAKE2_DATA_SUBPATH=/data/quake2
fi
# Copy Mods Locally
if [ -d "${QUAKE2_DATA}${QUAKE2_DATA_SUBPATH}" ]; then
cd "${QUAKE2_DATA}${QUAKE2_DATA_SUBPATH}" || exit 1
/usr/bin/find . -type f -name 'game*.so' -exec /bin/cp --parents {} /opt/quake2/ \;
fi
# Install Quake II
if [ -n "${QUAKE2_INSTALL}" ]; then
while [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}" ]; do
dirn="${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}"
while [ -n "${dirn}" ] && [ ! "${dirn}" = "/" ]; do
basn=$(/usr/bin/basename "${dirn}")
dirn=$(/usr/bin/dirname "${dirn}")
if [ -d "${dirn}" ]; then
/command/s6-setuidgid guardian /bin/mkdir "${dirn}/${basn}" || exit 1
break
fi
done
done
if [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}" ]; then
exit 1
fi
/bin/chown guardian:users "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}"
fi
if [ -n "${QUAKE2_INSTALL}" ] && [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2" ]; then
if [ ! -f /tmp/q2-314-demo-x86.exe ]; then
/usr/bin/wget -qO /tmp/q2-314-demo-x86.exe https://nephatrine.net/backup/quake2/q2-314-demo-x86.exe
fi
if [ ! -f /tmp/q2-3.20-x86-full-ctf.exe ]; then
/usr/bin/wget -qO /tmp/q2-3.20-x86-full-ctf.exe https://nephatrine.net/backup/quake2/q2-3.20-x86-full-ctf.exe
fi
if [ ! -f /tmp/match1.tar.gz ]; then
/usr/bin/wget -qO /tmp/match1.tar.gz https://nephatrine.net/backup/quake2/maps/match1.tar.gz
fi
if [ ! -f /tmp/dm_64.tar.gz ]; then
/usr/bin/wget -qO /tmp/dm_64.tar.gz https://nephatrine.net/backup/quake2/maps/dm_64.tar.gz
fi
if [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2/maps" ]; then
/command/s6-setuidgid guardian /bin/mkdir -p "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2/maps"
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2" ] && [ -f /tmp/q2-314-demo-x86.exe ]; then
/command/s6-setuidgid guardian /usr/bin/unzip -jq -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2/" /tmp/q2-314-demo-x86.exe \
Install/Data/baseq2/pak0.pak Install/Data/DOCS/license.txt
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2" ] && [ -f /tmp/q2-3.20-x86-full-ctf.exe ]; then
/command/s6-setuidgid guardian /usr/bin/unzip -jq -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2/" /tmp/q2-3.20-x86-full-ctf.exe \
baseq2/maps.lst baseq2/pak1.pak baseq2/pak2.pak
/command/s6-setuidgid guardian /bin/mkdir /tmp/q2-3.20-x86-full-ctf
/command/s6-setuidgid guardian /usr/bin/unzip -d /tmp/q2-3.20-x86-full-ctf/ /tmp/q2-3.20-x86-full-ctf.exe
/command/s6-setuidgid guardian /bin/mv /tmp/q2-3.20-x86-full-ctf/baseq2/players "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2/"
/bin/rm -rf /tmp/q2-3.20-x86-full-ctf
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2" ] &&[ -f /tmp/match1.tar.gz ]; then
/command/s6-setuidgid guardian /bin/tar x -C "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2/" -zf /tmp/match1.tar.gz \
pak3.pak
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2/maps" ] && [ -f /tmp/dm_64.tar.gz ]; then
/command/s6-setuidgid guardian /bin/tar x -C "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/baseq2/maps/" -zf /tmp/dm_64.tar.gz \
base64.bsp city64.bsp sewer64.bsp
fi
fi
# Install Capture The Flag
if [ -n "${QUAKE2_INSTALL}" ] && [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf" ]; then
if [ ! -f /tmp/q2-3.20-x86-full-ctf.exe ]; then
/usr/bin/wget -qO /tmp/q2-3.20-x86-full-ctf.exe https://nephatrine.net/backup/quake2/q2-3.20-x86-full-ctf.exe
fi
if [ ! -f /tmp/q2ctf150upgrade.zip ]; then
/usr/bin/wget -qO /tmp/q2ctf150upgrade.zip https://nephatrine.net/backup/quake2/q2ctf150upgrade.zip
fi
if [ ! -f /tmp/q2ctf4a.tar.gz ]; then
/usr/bin/wget -qO /tmp/q2ctf4a.tar.gz https://nephatrine.net/backup/quake2/maps/q2ctf4a.tar.gz
fi
if [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf/maps" ]; then
/command/s6-setuidgid guardian /bin/mkdir -p "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf/maps"
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf" ] && [ -f /tmp/q2-3.20-x86-full-ctf.exe ]; then
/command/s6-setuidgid guardian /usr/bin/unzip -jq -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf/" /tmp/q2-3.20-x86-full-ctf.exe \
ctf/pak0.pak ctf/server.cfg
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf" ] && [ -f /tmp/q2ctf150upgrade.zip ]; then
/command/s6-setuidgid guardian /usr/bin/unzip -jq -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf/" /tmp/q2ctf150upgrade.zip \
pak1.pak
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf/maps" ] && [ -f /tmp/q2ctf4a.tar.gz ]; then
/command/s6-setuidgid guardian /bin/tar x -C "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/ctf/maps/" -zf /tmp/q2ctf4a.tar.gz \
q2ctf4a.bsp
fi
fi
# Install Zaero Missionpack
if [ -n "${QUAKE2_INSTALL}" ] && [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero" ]; then
if [ ! -f /tmp/zaerodemo.zip ]; then
/usr/bin/wget -qO /tmp/zaerodemo.zip https://nephatrine.net/backup/teamevolve/zaerodemo.zip
fi
if [ ! -f /tmp/zaerodm.zip ]; then
/usr/bin/wget -qO /tmp/zaerodm.zip https://nephatrine.net/backup/teamevolve/zaerodm.zip
fi
if [ ! -f /tmp/zaero-1.1.zip ]; then
/usr/bin/wget -qO /tmp/zaero-1.1.zip https://nephatrine.net/backup/teamevolve/zaero-1.1.zip
fi
if [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero" ]; then
/command/s6-setuidgid guardian /bin/mkdir -p "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero"
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero" ] && [ -f /tmp/zaerodemo.zip ]; then
/command/s6-setuidgid guardian /usr/bin/unzip -jq -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero/" /tmp/zaerodemo.zip \
zdemo/config.cfg zdemo/pak0.pak
/command/s6-setuidgid guardian /bin/mkdir /tmp/zaerodemo
/command/s6-setuidgid guardian /usr/bin/unzip -d /tmp/zaerodemo/ /tmp/zaerodemo.zip
/command/s6-setuidgid guardian /bin/mv /tmp/zaerodemo/zdemo/sprites "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero/"
/bin/rm -rf /tmp/zaerodemo
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero" ] && [ -f /tmp/zaero-1.1.zip ]; then
/command/s6-setuidgid guardian /usr/bin/unzip -jq -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero/" /tmp/zaero-1.1.zip \
pak1.pak
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero" ] && [ -f /tmp/zaerodm.zip ]; then
/command/s6-setuidgid guardian /usr/bin/unzip -jq -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/zaero/" /tmp/zaerodm.zip \
pak2.pak
fi
fi
# Download Q2Admin
if [ -n "${QUAKE2_INSTALL}" ] && [ "$(/bin/uname -m)" = "x86_64" ]; then
if [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/q2admin" ]; then
/command/s6-setuidgid guardian /bin/mkdir -p "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/q2admin"
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/q2admin" ] && [ ! -f "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/q2admin/game.so" ]; then
/usr/bin/wget -O /tmp/q2admin-nxmod_x86_64-alpine-linux-musl.tar.gz https://nephatrine.net/backup/q2admin/q2admin-nxmod_x86_64-alpine-linux-musl.tar.gz \
&& /command/s6-setuidgid guardian /bin/tar -C "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/q2admin/" -xvzf /tmp/q2admin-nxmod_x86_64-alpine-linux-musl.tar.gz
/usr/bin/wget -O /tmp/q2admin-nxmod_noarch.tar.gz https://nephatrine.net/backup/q2admin/q2admin-nxmod_noarch.tar.gz \
&& /command/s6-setuidgid guardian /bin/tar -C "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/q2admin/" -xvzf /tmp/q2admin-nxmod_noarch.tar.gz
fi
fi
# Copy Mod Data
if [ -n "${QUAKE2_INSTALL}" ]; then
cd /opt/quake2-data || exit 1
for dir in */; do
if [ -f "/opt/quake2-data/${dir}.filelist" ] || [ -f "/opt/quake2-data/${dir}.noclient" ]; then
if [ ! -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/${dir}" ]; then
/command/s6-setuidgid guardian /bin/mkdir -p "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/${dir}"
fi
fi
if [ -d "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/${dir}" ] && [ -d "/opt/quake2-data/${dir}" ]; then
/command/s6-setuidgid guardian /bin/cp -Rn "/opt/quake2-data/${dir}." "${QUAKE2_INSTALL}${QUAKE2_DATA_SUBPATH}/${dir}"
fi
done
fi
# Regenerate HTTP Mirror
if [ -n "${QUAKE2_MIRROR}" ]; then
/usr/local/bin/quake2-mirror
fi