diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7e4df2d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,73 @@ +FROM multiarch/debian-debootstrap:i386-jessie +MAINTAINER sairuk + +# ENVIRONMENT +ARG SRVUSER=gameserv +ARG SRVUID=1000 +ARG SRVDIR=/tmp/tribes2/ + +# UPDATE IMAGE +RUN apt-get -y update && apt-get -y upgrade + + +# DEPENDENCIES +RUN apt-get -y install \ +# -- access +sudo unzip \ +# -- logging +rsyslog \ +# -- utilities +sed less vim file \ +# -- supervisor +supervisor \ +# --- wine +wine \ +# -- display +xvfb + + +# CLEAN IMAGE +RUN apt-get -y clean && apt-get -y autoremove + + +# ENV +# -- shutup installers +ENV DEBIAN_FRONTEND noninteractive + + +# USER +# -- add the user, expose datastore +RUN useradd -m -s /bin/bash -u ${SRVUID} ${SRVUSER} +# -- temporarily steal ownership +RUN chown -R root: /home/${SRVUSER} + + +# SCRIPT - installer +COPY _scripts/tribesnext-server-installer ${SRVDIR} +RUN chmod +x ${SRVDIR}/tribesnext-server-installer +RUN ${SRVDIR}/tribesnext-server-installer + + +# SCRIPT - server +COPY _scripts/start-server /home/${SRVUSER}/start-server +RUN chmod +x /home/${SRVUSER}/start-server + + +# SCRIPT - custom +COPY _custom/Classic/. /home/${SRVUSER}/.wine/drive_c/Dynamix/Tribes2/GameData/Classic/ +COPY _custom/base/. /home/${SRVUSER}/.wine/drive_c/Dynamix/Tribes2/GameData/base/ + + +# PERMISSIONS +RUN chown -R ${SRVUSER}: /home/${SRVUSER} + + +# PORTS +EXPOSE \ +# -- tribes +666/tcp \ +28000/udp + +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf +CMD ["/usr/bin/supervisord","-c","/etc/supervisor/conf.d/supervisord.conf"] + diff --git a/README.md b/README.md index 8c84edb..4210b4c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,71 @@ -# docker-tribesnext -TribesNext RC2a dedicated server running in docker +# Docker TribesNext + +## Information +TribesNext dedicated server patched and running within Docker under wine. + +*This is TribesNext RC2a with the wine patches included.* + +The image will pull required files and install them at build time (providing the sources are live). + +Docker image is completely self contained when built; it is currently based off Debian Jessie 32bit. This brings in the server at around 1.6GB once built. + +The server runs as the gameserv user + + +## Ports +Exposed ports are `666`, `28000`, the standard TribesNext ports, these can be mapped to whatever you need when you run the container, see the run_container script for an example of how to execute this. + + +## Volumes +No volumes are used + + +## Usage +**Build the image** + +`docker build . -t tribesnext-server` + +**Run a container** + +NB: the `--rm` arg will destroy the container when stopped. +``` +docker run -d --rm \ +-p 27999:666/tcp \ +-p 28000:28000/udp \ +--name tribesnext-server \ +tribesnext-server:latest +``` + +**Stop container** + +`docker stop tribesnext-server` + + +## Server Customization +You can customize the server at build time by dropping the appropriate files at the appropriate locations in `_custom/`, these will be copied into the image in the appropriate places overwriting the default files if present. + +Currently supports +* base +* Classic + +If you want to add a new mod this will require a new `COPY` instruction added to the `Dockerfile` and an image rebuild, or raise an issue/pull request and we can look at updating the main repo. + +You can override the following defaults at build time +``` +ARG SRVUSER=gameserv +ARG SRVUID=1000 +ARG SRVDIR=/tmp/tribes2/ +``` + + +## Notes +You can modify the installer script to update the source locations of the required files. + +`tribesnext-server-installer` may also be used in standalone mode to install TribesNext RC2a on the host system under wine but your mileage may vary. + +Testing has been minimal + +## 2do +* Thinner base OS +* Reduce duplicate data across scripts + diff --git a/_custom/Classic/prefs/dummy b/_custom/Classic/prefs/dummy new file mode 100644 index 0000000..e69de29 diff --git a/_custom/Classic/scripts/autoexec/dummy b/_custom/Classic/scripts/autoexec/dummy new file mode 100644 index 0000000..e69de29 diff --git a/_custom/base/scripts/autoexec/dummy b/_custom/base/scripts/autoexec/dummy new file mode 100644 index 0000000..e69de29 diff --git a/_scripts/start-server b/_scripts/start-server new file mode 100755 index 0000000..22bd8fd --- /dev/null +++ b/_scripts/start-server @@ -0,0 +1,12 @@ +#!/bin/bash + +export WINEPREFIX=/home/gameserv/.wine +BASEDIR=$WINEPREFIX/drive_c/Dynamix/Tribes2/GameData + +find ${BASEDIR} -name \*.dso -execdir /bin/rm {} \; + +cd $WINEPREFIX/drive_c/Dynamix/Tribes2/GameData + +xvfb-run -a -w 5 \ +wine Tribes2.exe -dedicated -mod Classic + diff --git a/_scripts/tribesnext-server-installer b/_scripts/tribesnext-server-installer new file mode 100755 index 0000000..a487ad1 --- /dev/null +++ b/_scripts/tribesnext-server-installer @@ -0,0 +1,255 @@ +#!/bin/bash +# +# -- tribesnext dedicated server installer +# --- pulls together the wine server, as terrible as that is, +# --- patch a linux release d00dz +# -- author: sairuk +# + +SRVUSER=gameserv +INSBASE=/home/$SRVUSER/.wine/drive_c/Dynamix/ +export TMPBASE=/tmp/tribes2 +export WINEPREFIX=/home/$SRVUSER/.wine/ +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 { + if [ ! -f "$TMPBASE/$1" ] + then + /usr/bin/wget --no-check-certificate -q "$2/$1" -O "$TMPBASE/$1" + 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} +fi + + + +# -- download files +get_files tribes2gsi.exe "https://www.the-construct.net/downloads/tribes2/" "$TMPBASE" +get_files TribesNext_rc2a.exe "https://www.tribesnext.com/files/" "$TMPBASE" +get_files TribesNext_RC2_LinuxVersion.zip "https://lutris.net/files/games/tribes-2/" "$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 + + +# -- extract the main installer, the silent installer is a lie! +/usr/bin/wine $TMPBASE/tribes2gsi.exe /x Z:\\tmp\\tribes2\\game + + +# -- 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 +fi + +# -- install tribesnext silently +[ -f $TMPBASE/TribesNext_rc2a.exe ] && /usr/bin/wine $TMPBASE/TribesNext_rc2a.exe /S + + +# -- extract updated linux version and replace the existing installation +[ -f $TMPBASE/TribesNext_RC2_LinuxVersion.zip ] && /usr/bin/unzip -o $TMPBASE/TribesNext_RC2_LinuxVersion.zip -d $INSBASE/Tribes2/GameData 2>&1 > /dev/null + +exit 0 diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 0000000..45f5689 --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,5 @@ +[supervisord] +nodaemon=true + +[program:tribes2-server] +command=/bin/su - gameserv -c /home/gameserv/start-server