From 9cf759d0ac059a94e5731bfeaa4e2825f6bb770a Mon Sep 17 00:00:00 2001 From: ChocoTaco Date: Thu, 2 Jan 2020 15:10:26 -0500 Subject: [PATCH] Native linux merge --- Dockerfile | 40 +-- _custom/{GameData => }/Classic/prefs/dummy | 0 .../Classic/scripts/autoexec/dummy | 0 _custom/{GameData => }/base/prefs/dummy | 0 .../base/scripts/autoexec/dummy | 0 _scripts/cfg-admin-prefs | 2 +- _scripts/clean-up | 16 +- _scripts/gen_autoexec_index | 19 ++ _scripts/start-server | 20 +- _scripts/tn_heartbeat | 11 + _scripts/tribesnext-server-installer | 257 +++--------------- docker-compose.override.yml | 22 +- docker-compose.yml | 16 +- 13 files changed, 132 insertions(+), 271 deletions(-) rename _custom/{GameData => }/Classic/prefs/dummy (100%) rename _custom/{GameData => }/Classic/scripts/autoexec/dummy (100%) rename _custom/{GameData => }/base/prefs/dummy (100%) rename _custom/{GameData => }/base/scripts/autoexec/dummy (100%) create mode 100644 _scripts/gen_autoexec_index create mode 100644 _scripts/tn_heartbeat diff --git a/Dockerfile b/Dockerfile index 6df7a49..b3b6bb0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,26 +14,19 @@ WORKDIR /tmp RUN git clone --depth 1 "https://github.com/ChocoTaco1/TacoMaps/" && cd ./TacoMaps WORKDIR /tmp - RUN git clone --depth 1 "https://github.com/ChocoTaco1/NoTNscripts/" && cd ./NoTNscripts # Main Game Server Image -FROM ubuntu:18.04 +FROM i386/ubuntu:disco LABEL maintainer="sairuk, battlelore, chocotaco" # ENVIRONMENT ARG SRVUSER=gameserv ARG SRVUID=1000 ARG SRVDIR=/tmp/tribes2/ -ENV INSTDIR=/home/${SRVUSER}/.wine32/drive_c/Dynamix/Tribes2/ +ENV INSTDIR=/home/${SRVUSER}/.loki/tribes2/ -# WINE VERSION: wine = 1.6, wine-development = 1.7.29 for i386-jessie -ENV WINEVER=wine-development -ENV WINEARCH=win32 -ENV WINEPREFIX=/home/${SRVUSER}/.wine32/ - -#WINEARCH=win32 WINEPREFIX=/home/gameserv/.wine32/ wine wineboot # UPDATE IMAGE RUN dpkg --add-architecture i386 @@ -46,17 +39,7 @@ sudo unzip \ # -- logging rsyslog \ # -- utilities -sed less nano vim file wget gnupg2 software-properties-common netcat \ -# --- wine -#${WINEVER} \ -# -- display -xvfb - -RUN wget --no-check-certificate https://dl.winehq.org/wine-builds/winehq.key -RUN apt-key add winehq.key -RUN add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main' -RUN add-apt-repository ppa:cybermax-dexter/sdl2-backport -RUN apt-get -y update && apt-get -y upgrade && apt-get -y install --install-recommends winehq-devel +sed less nano vim file wget curl gnupg2 netcat software-properties-common xdelta3 # CLEAN IMAGE @@ -72,8 +55,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN useradd -m -s /bin/bash -u ${SRVUID} ${SRVUSER} # -- temporarily steal ownership RUN chown -R root: /home/${SRVUSER} -# -- set wine win32 env -RUN WINEARCH=win32 WINEPREFIX=/home/gameserv/.wine32/ wine wineboot + # SCRIPT - installer COPY _scripts/tribesnext-server-installer ${SRVDIR} @@ -86,9 +68,9 @@ COPY _scripts/start-server ${INSTDIR}/start-server RUN chmod +x ${INSTDIR}/start-server # TacoServer - Pull in resources from builder -COPY --from=tacobuilder /tmp/TacoServer/Classic/. ${INSTDIR}GameData/Classic/. -COPY --from=tacobuilder /tmp/TacoMaps/. ${INSTDIR}GameData/Classic/Maps/ -COPY --from=tacobuilder /tmp/NoTNscripts/. ${INSTDIR}GameData/Classic/scripts/autoexec/. +COPY --from=tacobuilder /tmp/TacoServer/Classic/. ${INSTDIR}/Classic/. +COPY --from=tacobuilder /tmp/TacoMaps/. ${INSTDIR}/Classic/Maps/ +COPY --from=tacobuilder /tmp/NoTNscripts/. ${INSTDIR}/Classic/. # CLEAN UP @@ -105,6 +87,14 @@ COPY _custom/. ${INSTDIR} COPY _scripts/cfg-admin-prefs ${SRVDIR} RUN chmod +x ${SRVDIR}/cfg-admin-prefs +# SCRIPT - generate our alphabetized autoexec index +COPY _scripts/gen_autoexec_index ${SRVDIR} +RUN chmod +x ${SRVDIR}/gen_autoexec_index + +# SCRIPT - heartbeat to TribesNext's master server +COPY _scripts/tn_heartbeat ${SRVDIR} +RUN chmod +x ${SRVDIR}/tn_heartbeat + # PERMISSIONS RUN chown -R ${SRVUSER}: /home/${SRVUSER} diff --git a/_custom/GameData/Classic/prefs/dummy b/_custom/Classic/prefs/dummy similarity index 100% rename from _custom/GameData/Classic/prefs/dummy rename to _custom/Classic/prefs/dummy diff --git a/_custom/GameData/Classic/scripts/autoexec/dummy b/_custom/Classic/scripts/autoexec/dummy similarity index 100% rename from _custom/GameData/Classic/scripts/autoexec/dummy rename to _custom/Classic/scripts/autoexec/dummy diff --git a/_custom/GameData/base/prefs/dummy b/_custom/base/prefs/dummy similarity index 100% rename from _custom/GameData/base/prefs/dummy rename to _custom/base/prefs/dummy diff --git a/_custom/GameData/base/scripts/autoexec/dummy b/_custom/base/scripts/autoexec/dummy similarity index 100% rename from _custom/GameData/base/scripts/autoexec/dummy rename to _custom/base/scripts/autoexec/dummy diff --git a/_scripts/cfg-admin-prefs b/_scripts/cfg-admin-prefs index 0ca0454..c642f32 100644 --- a/_scripts/cfg-admin-prefs +++ b/_scripts/cfg-admin-prefs @@ -1,7 +1,7 @@ #!/bin/bash SRVUSER=gameserv -ADMINPREFS_FILE=/home/$SRVUSER/.wine32/drive_c/Dynamix/Tribes2/GameData/Classic/scripts/autoexec/AdminPrefs.cs +ADMINPREFS_FILE=/home/$SRVUSER/.loki/tribes2/Classic/scripts/autoexec/AdminPrefs.cs SECRETS=/run/secrets # -- set Admin Password diff --git a/_scripts/clean-up b/_scripts/clean-up index e05bac6..431ce57 100644 --- a/_scripts/clean-up +++ b/_scripts/clean-up @@ -1,20 +1,18 @@ #!/bin/bash echo "Removing old installers" - -[ -f TribesNext_RC2_LinuxVersion.zip ] && rm TribesNext_RC2_LinuxVersion.zip -[ -f TribesNext_rc2a.exe ] && rm TribesNext_rc2a.exe [ -f classic_v152.zip ] && rm classic_v152.zip -[ -f ruby-1.9.0-2-i386-mswin32.zip ] && rm ruby-1.9.0-2-i386-mswin32.zip -[ -f tribes2gsi.exe ] && rm tribes2gsi.exe - +[ -f t2-linux.zip ] && rm t2-linux.zip +[ -f tribes2-lan-fix-linux.tar.gz ] && rm tribes2-lan-fix-linux.tar.gz echo "Done!" -echo "Removing TacoServer TribesNext Incompatibilities" +echo "Removing TacoServer TribesNext Incompatibilities" # Remove zAdvancedStatsLogless.vl2: causes issues connecting without TN -rm $1/GameData/Classic/zAdvancedStatsLogless.vl2 +rm $1/Classic/zAdvancedStatsLogless.vl2 # Remove checkVer: Wont work anyway without TN -rm $1/GameData/Classic/scripts/autoexec/zCheckVer.cs +rm $1/Classic/scripts/autoexec/zCheckVer.cs +# We're using our own heartbeat to TN +rm $1/Classic/scripts/autoexec/zAltAltHeartbeatDaemon.cs echo "Done!" \ No newline at end of file diff --git a/_scripts/gen_autoexec_index b/_scripts/gen_autoexec_index new file mode 100644 index 0000000..9dcaa17 --- /dev/null +++ b/_scripts/gen_autoexec_index @@ -0,0 +1,19 @@ +#!/bin/bash + +# -- Generate an alphabetized autoexec index file because we can't trust the load order +SCRIPTS_DIR=$1 +INDEX_FILE="$SCRIPTS_DIR"/autoexec/AutoExecIndex.cs + +mkdir -p "$SCRIPTS_DIR"/library +mv -v "$SCRIPTS_DIR"/autoexec/*.cs "$SCRIPTS_DIR"/library/. + +scripts=( + "$SCRIPTS_DIR"/library/*.cs +) + +for i in "${scripts[@]##*/}" +do + echo "exec(\"scripts/library/${i}\");" >> $INDEX_FILE +done + +cat $INDEX_FILE \ No newline at end of file diff --git a/_scripts/start-server b/_scripts/start-server index 7dbc144..4bf7adc 100755 --- a/_scripts/start-server +++ b/_scripts/start-server @@ -1,18 +1,24 @@ #!/bin/bash -export WINEPREFIX=/home/gameserv/.wine32 -export WINEARCH=win32 -BASEDIR=$WINEPREFIX/drive_c/Dynamix/Tribes2/GameData +BASE_DIR=/home/gameserv/.loki/tribes2/ echo "Update Admin & Server Prefs..." /tmp/tribes2/cfg-admin-prefs echo "Finished!" -find ${BASEDIR} -name \*.dso -execdir /bin/rm {} \; +cd ${BASE_DIR} -cd $WINEPREFIX/drive_c/Dynamix/Tribes2/GameData +echo "Generating alphabetized AutoExec script index..." +/tmp/tribes2/gen_autoexec_index "${BASE_DIR}Classic/scripts" +echo "Finished!" -wine --version +echo "Removing .dso files" +find ${BASE_DIR} -name \*.dso -execdir /bin/rm {} \; echo "Running the Tribes 2 server" -xvfb-run -a -w 5 wine Tribes2d.exe -nologin -dedicated -mod Classic +chmod +x ${BASE_DIR}tribes2d-lan.dynamic + +# -- debug -- keep container running and dont launch the server +#tail -f /dev/null + +/tmp/tribes2/tn_heartbeat & taskset -c 0 ./tribes2d-lan.dynamic 28000 -nologin -dedicated -mod Classic \ No newline at end of file diff --git a/_scripts/tn_heartbeat b/_scripts/tn_heartbeat new file mode 100644 index 0000000..322aca4 --- /dev/null +++ b/_scripts/tn_heartbeat @@ -0,0 +1,11 @@ +#!/bin/bash + +# -- Heartbeat to TribesNext's Master Server + +( + while true; do + echo "Sending heartbeat to TribesNext..." + curl http://master.tribesnext.com/add/28000 & + sleep 240 ; + done +) \ No newline at end of file diff --git a/_scripts/tribesnext-server-installer b/_scripts/tribesnext-server-installer index 6937eb1..40e19df 100755 --- a/_scripts/tribesnext-server-installer +++ b/_scripts/tribesnext-server-installer @@ -1,32 +1,10 @@ #!/bin/bash # -# -- tribesnext dedicated server installer -# --- pulls together the wine server, as terrible as that is, -# --- patch a linux release d00dz -# -- author: sairuk -# - +# -- tribes dedicated server installer SRVUSER=gameserv -INSBASE=/home/$SRVUSER/.wine32/drive_c/Dynamix/ +INSBASE=/home/$SRVUSER/.loki/ export TMPBASE=/tmp/tribes2 -export WINEARCH=win32 -export WINEPREFIX=/home/$SRVUSER/.wine32/ -export REQUIREMENTS=(wine Xvfb) -# -- server requirements -function check_requirements { - REQMET=1 # -- pretty optimistic eh? - for REQ in ${REQUIREMENTS[@]} - do - RESULT=$(which $REQ) - if [ $? != "0" ] - then - echo "Executable not found: ${REQ}" - REQMET=0 - fi - done - [ "$REQMET" == "0" ] && echo "Requirements not met, see preceding messages" && exit 1 -} # -- download the required the files function get_files { @@ -36,29 +14,27 @@ function get_files { fi } -check_requirements # -- make directories [ ! -d $TMPBASE ] && mkdir -p $TMPBASE if [ ! -d $INSBASE ] then - mkdir -p $INSBASE/Tribes2/Manual - mkdir -p $INSBASE/Tribes2/GameData/base/{music,lighting,textures,prefs} - mkdir -p $INSBASE/Tribes2/GameData/Classic/scripts/{turrets,weapons,autoexec,packs,vehicles} + mkdir -p $INSBASE/tribes2/Manual + mkdir -p $INSBASE/tribes2/base/{music,lighting,textures,prefs} + mkdir -p $INSBASE/tribes2/Classic/scripts/{turrets,weapons,autoexec,packs,vehicles} + mkdir -p $INSBASE/tribes2/Classic/stats + mkdir -p $INSBASE/tribes2/Classic/serverStats + mkdir -p $INSBASE/tribes2/Classic/logs fi # -- download files -get_files tribes2gsi.exe "https://www.the-construct.net/downloads/tribes2/" "$TMPBASE" -get_files tribes2-lan-fix-win32.zip "http://t2.plugh.us/" "$TMPBASE" +get_files t2-linux.zip "https://www.dropbox.com/s/ejemimzxjdswtvm/" "$TMPBASE" +get_files tribes2-lan-fix-linux.tar.gz "http://t2.plugh.us/" "$TMPBASE" get_files classic_v152.zip "https://tribes2stats.com/files/mods/" "$TMPBASE" -# -- some items require an headerless -export DISPLAY=:99 -[ ! $(pidof Xvfb) ] && Xvfb :99 -screen 0 640x480x8 -nolisten tcp & 2>&1 > /dev/null - # -- gimme a little time sleep 1 @@ -66,188 +42,15 @@ sleep 1 # -- extract the main installer, the silent installer is a lie! echo "Installing T2..." -/usr/bin/wine $TMPBASE/tribes2gsi.exe /x Z:\\tmp\\tribes2\\game - - +# REMEMBER: There is no GameData in the linux version. Everything is up a dir +[ -f $TMPBASE/t2-linux.zip ] && /usr/bin/unzip -o $TMPBASE/t2-linux.zip -d $TMPBASE/install 2>&1 > /dev/null # -- move all extract files into place -if [ -f $TMPBASE/game/Tribes2.exe ] -then - mv $TMPBASE/game/aaBarrelLarge.cs $INSBASE/Tribes2/GameData/Classic/scripts/turrets/aaBarrelLarge.cs - mv $TMPBASE/game/aabarrelPack.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/aabarrelPack.cs - mv $TMPBASE/game/admin.cs $INSBASE/Tribes2/GameData/Classic/scripts/admin.cs - mv $TMPBASE/game/aiPracticeCtf.cs $INSBASE/Tribes2/GameData/Classic/scripts/aiPracticeCtf.cs - mv $TMPBASE/game/AMDW2KCardProfiles.cs $INSBASE/Tribes2/GameData/AMDW2KCardProfiles.cs - mv $TMPBASE/game/AMDW98CardProfiles.cs $INSBASE/Tribes2/GameData/AMDW98CardProfiles.cs - mv $TMPBASE/game/AMDW98SECardProfiles.cs $INSBASE/Tribes2/GameData/AMDW98SECardProfiles.cs - mv $TMPBASE/game/AMDWMECardProfiles.cs $INSBASE/Tribes2/GameData/AMDWMECardProfiles.cs - mv $TMPBASE/game/audio.vl2 $INSBASE/Tribes2/GameData/base/audio.vl2 - mv $TMPBASE/game/badlands.mp3 $INSBASE/Tribes2/GameData/base/music/badlands.mp3 - mv $TMPBASE/game/badlands.vl2 $INSBASE/Tribes2/GameData/base/badlands.vl2 - mv $TMPBASE/game/base.vl2 $INSBASE/Tribes2/GameData/base/base.vl2 - mv $TMPBASE/game/cameraGrenade.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/cameraGrenade.cs - mv $TMPBASE/game/CardProfiles.cs $INSBASE/Tribes2/GameData/CardProfiles.cs - mv $TMPBASE/game/chaingun.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/chaingun.cs - mv $TMPBASE/game/chatMenuHud.cs $INSBASE/Tribes2/GameData/Classic/scripts/chatMenuHud.cs - mv $TMPBASE/game/Classic_dedicated_server.bat $INSBASE/Tribes2/GameData/Classic_dedicated_server.bat - mv $TMPBASE/game/Classic_LAN.bat $INSBASE/Tribes2/GameData/Classic_LAN.bat - mv $TMPBASE/game/Classic_maps_v1.vl2 $INSBASE/Tribes2/GameData/base/Classic_maps_v1.vl2 - mv $TMPBASE/game/Classic_online.bat $INSBASE/Tribes2/GameData/Classic_online.bat - mv $TMPBASE/game/Classic_readme.txt $INSBASE/Tribes2/GameData/Classic/Classic_readme.txt - mv $TMPBASE/game/Classic_technical.txt $INSBASE/Tribes2/GameData/Classic/Classic_technical.txt - mv $TMPBASE/game/cloakingpack.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/cloakingpack.cs - mv $TMPBASE/game/console_start.cs $INSBASE/Tribes2/GameData/console_start.cs - mv $TMPBASE/game/creditsText.cs $INSBASE/Tribes2/GameData/Classic/scripts/creditsText.cs - mv $TMPBASE/game/CTFGame.cs $INSBASE/Tribes2/GameData/Classic/scripts/CTFGame.cs - mv $TMPBASE/game/damageTypes.cs $INSBASE/Tribes2/GameData/Classic/scripts/damageTypes.cs - mv $TMPBASE/game/deathMessages.cs $INSBASE/Tribes2/GameData/Classic/scripts/deathMessages.cs - mv $TMPBASE/game/defaultGame.cs $INSBASE/Tribes2/GameData/Classic/scripts/defaultGame.cs - mv $TMPBASE/game/deployables.cs $INSBASE/Tribes2/GameData/Classic/scripts/deployables.cs - mv $TMPBASE/game/desert.mp3 $INSBASE/Tribes2/GameData/base/music/desert.mp3 - mv $TMPBASE/game/desert.vl2 $INSBASE/Tribes2/GameData/base/desert.vl2 - mv $TMPBASE/game/disc.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/disc.cs - mv $TMPBASE/game/DRI-Matrox.cs $INSBASE/Tribes2/GameData/DRI-Matrox.cs - mv $TMPBASE/game/DRI-Radeon.cs $INSBASE/Tribes2/GameData/DRI-Radeon.cs - mv $TMPBASE/game/DRI-Rage128.cs $INSBASE/Tribes2/GameData/DRI-Rage128.cs - mv $TMPBASE/game/DRI-Voodoo3.cs $INSBASE/Tribes2/GameData/DRI-Voodoo3.cs - mv $TMPBASE/game/DRI-Voodoo5.cs $INSBASE/Tribes2/GameData/DRI-Voodoo5.cs - mv $TMPBASE/game/ELFBarrelLarge.cs $INSBASE/Tribes2/GameData/Classic/scripts/turrets/ELFBarrelLarge.cs - mv $TMPBASE/game/ELFbarrelPack.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/ELFbarrelPack.cs - mv $TMPBASE/game/ELFGun.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/ELFGun.cs - mv $TMPBASE/game/EULA.txt $INSBASE/Tribes2/GameData/base/EULA.txt - mv $TMPBASE/game/flashGrenade.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/flashGrenade.cs - mv $TMPBASE/game/French\ Config.cs $INSBASE/Tribes2/GameData/base/prefs/French\ Config.cs - mv $TMPBASE/game/GameGui.cs $INSBASE/Tribes2/GameData/Classic/scripts/GameGui.cs - mv $TMPBASE/game/GeForce.cs $INSBASE/Tribes2/GameData/GeForce.cs - mv $TMPBASE/game/German\ config.cs $INSBASE/Tribes2/GameData/base/prefs/German\ config.cs - mv $TMPBASE/game/glon32.dr7 $INSBASE/Tribes2/GameData/glon32.dr7 - mv $TMPBASE/game/GLU2D3D.dll $INSBASE/Tribes2/GameData/GLU2D3D.dll - mv $TMPBASE/game/grenadeLauncher.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/grenadeLauncher.cs - mv $TMPBASE/game/HighProfile.cs $INSBASE/Tribes2/GameData/HighProfile.cs - mv $TMPBASE/game/hud.cs $INSBASE/Tribes2/GameData/Classic/scripts/hud.cs - mv $TMPBASE/game/ice.mp3 $INSBASE/Tribes2/GameData/base/music/ice.mp3 - mv $TMPBASE/game/ice.vl2 $INSBASE/Tribes2/GameData/base/ice.vl2 - mv $TMPBASE/game/IFC21.dll $INSBASE/Tribes2/GameData/IFC21.dll - mv $TMPBASE/game/IFC22.dll $INSBASE/Tribes2/GameData/IFC22.dll - mv $TMPBASE/game/indoorDeployableBarrel.cs $INSBASE/Tribes2/GameData/Classic/scripts/turrets/indoorDeployableBarrel.cs - mv $TMPBASE/game/Inside\ Team\ Rabbit\ 2.txt $INSBASE/Tribes2/GameData/Inside\ Team\ Rabbit\ 2.txt - mv $TMPBASE/game/IntelW2KCardProfiles.cs $INSBASE/Tribes2/GameData/IntelW2KCardProfiles.cs - mv $TMPBASE/game/IntelW95CardProfiles.cs $INSBASE/Tribes2/GameData/IntelW95CardProfiles.cs - mv $TMPBASE/game/IntelW98CardProfiles.cs $INSBASE/Tribes2/GameData/IntelW98CardProfiles.cs - mv $TMPBASE/game/IntelW98SECardProfiles.cs $INSBASE/Tribes2/GameData/IntelW98SECardProfiles.cs - mv $TMPBASE/game/IntelWMECardProfiles.cs $INSBASE/Tribes2/GameData/IntelWMECardProfiles.cs - mv $TMPBASE/game/interiors.vl2 $INSBASE/Tribes2/GameData/base/interiors.vl2 - mv $TMPBASE/game/inventory.cs $INSBASE/Tribes2/GameData/Classic/scripts/inventory.cs - mv $TMPBASE/game/inventoryHud.cs $INSBASE/Tribes2/GameData/Classic/scripts/inventoryHud.cs - mv $TMPBASE/game/ispawn.exe $INSBASE/Tribes2/GameData/ispawn.exe - mv $TMPBASE/game/Italian\ Config.cs $INSBASE/Tribes2/GameData/base/prefs/Italian\ Config.cs - mv $TMPBASE/game/item.cs $INSBASE/Tribes2/GameData/Classic/scripts/item.cs - mv $TMPBASE/game/kver.pub $INSBASE/Tribes2/GameData/kver.pub - mv $TMPBASE/game/Kyro.cs $INSBASE/Tribes2/GameData/Kyro.cs - mv $TMPBASE/game/lava.vl2 $INSBASE/Tribes2/GameData/base/lava.vl2 - mv $TMPBASE/game/LinuxCardProfiles.cs $INSBASE/Tribes2/GameData/LinuxCardProfiles.cs - mv $TMPBASE/game/loadingGui.cs $INSBASE/Tribes2/GameData/Classic/scripts/loadingGui.cs - mv $TMPBASE/game/LowProfile.cs $INSBASE/Tribes2/GameData/LowProfile.cs - mv $TMPBASE/game/lush.mp3 $INSBASE/Tribes2/GameData/base/music/lush.mp3 - mv $TMPBASE/game/lush.vl2 $INSBASE/Tribes2/GameData/base/lush.vl2 - mv $TMPBASE/game/Matrox.cs $INSBASE/Tribes2/GameData/Matrox.cs - mv $TMPBASE/game/MediumProfile.cs $INSBASE/Tribes2/GameData/MediumProfile.cs - mv $TMPBASE/game/message.cs $INSBASE/Tribes2/GameData/Classic/scripts/message.cs - mv $TMPBASE/game/mine.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/mine.cs - mv $TMPBASE/game/minivstationx.cs $INSBASE/Tribes2/GameData/Classic/scripts/autoexec/minivstationx.cs - mv $TMPBASE/game/missileBarrelLarge.cs $INSBASE/Tribes2/GameData/Classic/scripts/turrets/missileBarrelLarge.cs - mv $TMPBASE/game/missilebarrelPack.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/missilebarrelPack.cs - mv $TMPBASE/game/missileLauncher.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/missileLauncher.cs - mv $TMPBASE/game/missions.vl2 $INSBASE/Tribes2/GameData/base/missions.vl2 - mv $TMPBASE/game/mortarBarrelLarge.cs $INSBASE/Tribes2/GameData/Classic/scripts/turrets/mortarBarrelLarge.cs - mv $TMPBASE/game/mortarBarrelPack.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/mortarBarrelPack.cs - mv $TMPBASE/game/mortar.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/mortar.cs - mv $TMPBASE/game/Mp3dec.asi $INSBASE/Tribes2/GameData/Mp3dec.asi - mv $TMPBASE/game/mpbTeleporter.cs $INSBASE/Tribes2/GameData/Classic/scripts/mpbTeleporter.cs - mv $TMPBASE/game/Mss32.dll $INSBASE/Tribes2/GameData/Mss32.dll - mv $TMPBASE/game/Mssds3dh.m3d $INSBASE/Tribes2/GameData/Mssds3dh.m3d - mv $TMPBASE/game/Msseax2.m3d $INSBASE/Tribes2/GameData/Msseax2.m3d - mv $TMPBASE/game/Msseax.m3d $INSBASE/Tribes2/GameData/Msseax.m3d - mv $TMPBASE/game/Mssfast.m3d $INSBASE/Tribes2/GameData/Mssfast.m3d - mv $TMPBASE/game/Mssv12.asi $INSBASE/Tribes2/GameData/Mssv12.asi - mv $TMPBASE/game/Mssv24.asi $INSBASE/Tribes2/GameData/Mssv24.asi - mv $TMPBASE/game/Mssv29.asi $INSBASE/Tribes2/GameData/Mssv29.asi - mv $TMPBASE/game/MSVCRT.dll $INSBASE/Tribes2/GameData/MSVCRT.dll - mv $TMPBASE/game/OpenGL2D3D.dll $INSBASE/Tribes2/GameData/OpenGL2D3D.dll - mv $TMPBASE/game/outdoorDeployableBarrel.cs $INSBASE/Tribes2/GameData/Classic/scripts/turrets/outdoorDeployableBarrel.cs - mv $TMPBASE/game/Permedia3.cs $INSBASE/Tribes2/GameData/Permedia3.cs - mv $TMPBASE/game/plasmaBarrelLarge.cs $INSBASE/Tribes2/GameData/Classic/scripts/turrets/plasmaBarrelLarge.cs - mv $TMPBASE/game/plasmabarrelPack.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/plasmabarrelPack.cs - mv $TMPBASE/game/plasma.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/plasma.cs - mv $TMPBASE/game/player.cs $INSBASE/Tribes2/GameData/Classic/scripts/player.cs - mv $TMPBASE/game/practice.cs $INSBASE/Tribes2/GameData/Classic/scripts/practice.cs - mv $TMPBASE/game/PracticeCTFGame.cs $INSBASE/Tribes2/GameData/Classic/scripts/PracticeCTFGame.cs - mv $TMPBASE/game/projectiles.cs $INSBASE/Tribes2/GameData/Classic/scripts/projectiles.cs - mv $TMPBASE/game/Radeon.cs $INSBASE/Tribes2/GameData/Radeon.cs - mv $TMPBASE/game/Rage128.cs $INSBASE/Tribes2/GameData/Rage128.cs - mv $TMPBASE/game/Readme.txt $INSBASE/Tribes2/Readme.txt - mv $TMPBASE/game/repairpack.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/repairpack.cs - mv $TMPBASE/game/Reverb3.flt $INSBASE/Tribes2/GameData/Reverb3.flt - mv $TMPBASE/game/satchelCharge.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/satchelCharge.cs - mv $TMPBASE/game/scripts.vl2 $INSBASE/Tribes2/GameData/base/scripts.vl2 - mv $TMPBASE/game/sensorjammerpack.cs $INSBASE/Tribes2/GameData/Classic/scripts/packs/sensorjammerpack.cs - mv $TMPBASE/game/serverCommanderMap.cs $INSBASE/Tribes2/GameData/Classic/scripts/serverCommanderMap.cs - mv $TMPBASE/game/server.cs $INSBASE/Tribes2/GameData/Classic/scripts/server.cs - mv $TMPBASE/game/serverDefaults.cs $INSBASE/Tribes2/GameData/Classic/scripts/serverDefaults.cs - mv $TMPBASE/game/serverVehicleHud.cs $INSBASE/Tribes2/GameData/Classic/scripts/vehicles/serverVehicleHud.cs - mv $TMPBASE/game/shapes.vl2 $INSBASE/Tribes2/GameData/base/shapes.vl2 - mv $TMPBASE/game/shockLance.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons/shockLance.cs - mv $TMPBASE/game/SiegeGame.cs $INSBASE/Tribes2/GameData/Classic/scripts/SiegeGame.cs - mv $TMPBASE/game/SierraPatch.dll $INSBASE/Tribes2/GameData/SierraPatch.dll - mv $TMPBASE/game/SierraPt.dll $INSBASE/Tribes2/GameData/SierraPt.dll - mv $TMPBASE/game/SierraUp.cfg $INSBASE/Tribes2/GameData/SierraUp.cfg - mv $TMPBASE/game/SierraUp.exe $INSBASE/Tribes2/GameData/SierraUp.exe - mv $TMPBASE/game/skins.vl2 $INSBASE/Tribes2/GameData/base/skins.vl2 - mv $TMPBASE/game/Spanish\ Config.cs $INSBASE/Tribes2/GameData/base/prefs/Spanish\ Config.cs - mv $TMPBASE/game/staticShape.cs $INSBASE/Tribes2/GameData/Classic/scripts/staticShape.cs - mv $TMPBASE/game/station.cs $INSBASE/Tribes2/GameData/Classic/scripts/station.cs - mv $TMPBASE/game/SuDE.dll $INSBASE/Tribes2/GameData/SuDE.dll - mv $TMPBASE/game/SuES.dll $INSBASE/Tribes2/GameData/SuES.dll - mv $TMPBASE/game/SuFR.dll $INSBASE/Tribes2/GameData/SuFR.dll - mv $TMPBASE/game/SuIT.dll $INSBASE/Tribes2/GameData/SuIT.dll - mv $TMPBASE/game/supportClassic.cs $INSBASE/Tribes2/GameData/Classic/scripts/supportClassic.cs - mv $TMPBASE/game/T2IntroC15.avi $INSBASE/Tribes2/GameData/base/textures/T2IntroC15.avi - mv $TMPBASE/game/T2Res.dll $INSBASE/Tribes2/GameData/T2Res.dll - mv $TMPBASE/game/textures.vl2 $INSBASE/Tribes2/GameData/base/textures.vl2 - mv $TMPBASE/game/TNT.cs $INSBASE/Tribes2/GameData/TNT.cs - mv $TMPBASE/game/TR2final093-extras.vl2 $INSBASE/Tribes2/GameData/base/TR2final093-extras.vl2 - mv $TMPBASE/game/TR2final105-client.vl2 $INSBASE/Tribes2/GameData/base/TR2final105-client.vl2 - mv $TMPBASE/game/TR2final105-server.vl2 $INSBASE/Tribes2/GameData/base/TR2final105-server.vl2 - mv $TMPBASE/game/TR2HudPrefs.cs $INSBASE/Tribes2/GameData/base/prefs/TR2HudPrefs.cs - mv $TMPBASE/game/Tribes2.exe $INSBASE/Tribes2/GameData/Tribes2.exe - mv "$TMPBASE/game/Tribes2.exe.local" "$INSBASE/Tribes2/GameData/Tribes2.exe.local" - mv $TMPBASE/game/Tribes2.ico $INSBASE/Tribes2/GameData/base/Tribes2.ico - mv $TMPBASE/game/Tribes\ 2\ Manual.pdf $INSBASE/Tribes2/Manual/Tribes\ 2\ Manual.pdf - mv $TMPBASE/game/TribesLogin.exe $INSBASE/Tribes2/GameData/TribesLogin.exe - mv $TMPBASE/game/turret.cs $INSBASE/Tribes2/GameData/Classic/scripts/turret.cs - mv $TMPBASE/game/UKEULA.txt $INSBASE/Tribes2/GameData/base/UKEULA.txt - mv $TMPBASE/game/Unwise.exe $INSBASE/Tribes2/Unwise.exe - mv $TMPBASE/game/UpdatePatch.txt $INSBASE/Tribes2/GameData/UpdatePatch.txt - mv $TMPBASE/game/V2Profile.cs $INSBASE/Tribes2/GameData/V2Profile.cs - mv $TMPBASE/game/vehicle_bomber.cs $INSBASE/Tribes2/GameData/Classic/scripts/vehicles/vehicle_bomber.cs - mv $TMPBASE/game/vehicle.cs $INSBASE/Tribes2/GameData/Classic/scripts/vehicles/vehicle.cs - mv $TMPBASE/game/vehicle_havoc.cs $INSBASE/Tribes2/GameData/Classic/scripts/vehicles/vehicle_havoc.cs - mv $TMPBASE/game/vehicle_mpb.cs $INSBASE/Tribes2/GameData/Classic/scripts/vehicles/vehicle_mpb.cs - mv $TMPBASE/game/vehicle_shrike.cs $INSBASE/Tribes2/GameData/Classic/scripts/vehicles/vehicle_shrike.cs - mv $TMPBASE/game/vehicle_tank.cs $INSBASE/Tribes2/GameData/Classic/scripts/vehicles/vehicle_tank.cs - mv $TMPBASE/game/vehicle_wildcat.cs $INSBASE/Tribes2/GameData/Classic/scripts/vehicles/vehicle_wildcat.cs - mv $TMPBASE/game/Viper.cs $INSBASE/Tribes2/GameData/Viper.cs - mv $TMPBASE/game/voice.vl2 $INSBASE/Tribes2/GameData/base/voice.vl2 - mv $TMPBASE/game/volcanic.mp3 $INSBASE/Tribes2/GameData/base/music/volcanic.mp3 - mv $TMPBASE/game/Voodoo3.cs $INSBASE/Tribes2/GameData/Voodoo3.cs - mv $TMPBASE/game/Voodoo5.cs $INSBASE/Tribes2/GameData/Voodoo5.cs - mv $TMPBASE/game/WASDConfig.cs $INSBASE/Tribes2/GameData/base/prefs/WASDConfig.cs - mv $TMPBASE/game/weapons.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapons.cs - mv $TMPBASE/game/weapTurretCode.cs $INSBASE/Tribes2/GameData/Classic/scripts/weapTurretCode.cs - mv $TMPBASE/game/zz_Classic_client_v1.vl2 $INSBASE/Tribes2/GameData/base/zz_Classic_client_v1.vl2 - mv $TMPBASE/game/zz.ini $INSBASE/Tribes2/GameData/zz.ini +cp -r $TMPBASE/install/t2-linux/. $INSBASE/tribes2/. +echo "T2 installed!" + +echo "Removing old classic version v1.1 from base install" +rm -rf $INSBASE/tribes2/classic - echo "T2 installed!" -fi echo "Installing Classic Mod v1.5.2" # -- update Classic mod to v1.5.2 @@ -256,19 +59,23 @@ echo "Installing Classic Mod v1.5.2" # -- move all extract files into place if [ -f $TMPBASE/classic/classic_files_v152.zip ] then -# /home/gameserv/.wine32/drive_c/Dynamix/Tribes2/GameData/Classic - mv -f $TMPBASE/classic/base/zz_classic_client_v1.vl2 $INSBASE/Tribes2/GameData/base/zz_Classic_client_v1.vl2 - cp -r $TMPBASE/classic/classic/. $INSBASE/Tribes2/GameData/Classic/. + mv -f $TMPBASE/classic/base/zz_classic_client_v1.vl2 $INSBASE/tribes2/base/zz_Classic_client_v1.vl2 + cp -r $TMPBASE/classic/classic/. $INSBASE/tribes2/Classic/. fi # -- install LAN fix -echo "Installing Tribes2 Lan Fix (Win32)..." -# -- run the bat and output the patched file (Tribes2d.exe) -[ -f $TMPBASE/tribes2-lan-fix-win32.zip ] && /usr/bin/unzip -o $TMPBASE/tribes2-lan-fix-win32.zip -d $INSBASE/Tribes2/GameData 2>&1 > /dev/null -cd $INSBASE/Tribes2/GameData/ && wineconsole xdelta3 decode -s Tribes2.exe tribes2-lan-fix-win32.xdelta Tribes2d.exe +echo "Installing Tribes2 Lan Fix (Linux)..." +# -- run the sh and output the patched file (tribes2d-lan.dynamic) +if [ -f $TMPBASE/tribes2-lan-fix-linux.tar.gz ] +then + mkdir -p $TMPBASE/lan-fix + tar -xzvf $TMPBASE/tribes2-lan-fix-linux.tar.gz -C $TMPBASE/lan-fix 2>&1 > /dev/null + cp -r $TMPBASE/lan-fix/. $INSBASE/tribes2/. + cd $INSBASE/tribes2/ + xdelta3 decode -s tribes2d.dynamic tribes2-lan-fix-linux.xdelta tribes2d-lan.dynamic + chmod 755 tribes2d-lan.dynamic + echo "Finished setting up T2!" +fi - -echo "Finished setting up T2!" - -exit 0 +exit 0 \ No newline at end of file diff --git a/docker-compose.override.yml b/docker-compose.override.yml index a2d6296..f331061 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -2,4 +2,24 @@ version: "3.7" networks: t2-net: - driver: bridge \ No newline at end of file + driver: bridge + +secrets: + t2.superadmin.list: + external: false + file: ./_dev-secrets/t2.superadmin.list.dev + t2.admin.list: + external: false + file: ./_dev-secrets/t2.admin.list.dev + t2.admin.password: + external: false + file: ./_dev-secrets/t2.admin.password.dev + t2.classic.superadmin.password: + external: false + file: ./_dev-secrets/t2.classic.superadmin.password.dev + t2.classic.telnet.password: + external: false + file: ./_dev-secrets/t2.classic.telnet.password.dev + t2.classic.telnet.listen.password: + external: false + file: ./_dev-secrets/t2.classic.telnet.listen.password.dev \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index ad175a5..df6fde3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,7 @@ services: T2_MAX_PLAYERS: 64 T2_DEFAULT_MISSIONTYPE: "Lakrabbit" T2_DEFAULT_MAP: "VaubanLak" - T2_PUGPW_ALWAYSON: 1 + T2_PUGPW_ALWAYSON: 0 T2_PUG_PASSWORD: "pickup" T2_PUGAUTOPW_TOURNY: 1 T2_TimeLimit: 45 @@ -51,7 +51,7 @@ services: T2_LoadScreenLine6: "TacoServer GitHub:" T2_LoadScreenLine6_Msg: "https://github.com/ChocoTaco1/TacoServer" T2_LoadScreenMOTD1: "Have fun!" - T2_LoadScreenMOTD2: " " + T2_LoadScreenMOTD2: "This is a Loki Linux Server!" T2_LoadScreenMOTD3: " " T2_LoadScreenMOTD4: " " secrets: @@ -69,7 +69,12 @@ services: protocol: tcp published: 666 mode: host - + + volumes: + - serverStats:/home/gameserv/.loki/tribes2/Classic/serverStats + - stats:/home/gameserv/.loki/tribes2/Classic/stats + - logs:/home/gameserv/.loki/tribes2/Classic/logs + networks: - t2-net @@ -91,6 +96,11 @@ services: options: max-size: "10m" +volumes: + serverStats: + stats: + logs: + networks: t2-net: driver: overlay