From 06ca1edce797bd7705e86a78851eaa113848ba58 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Mon, 12 Jul 2021 17:01:41 -0700 Subject: [PATCH] Added Arma 3 image files These files originate from https://github.com/parkervcp/images/tree/game/arma3 which is currently hosted at quay.io/parkervcp/pterodactyl-images:game_arma3 However, the entire image has been mainly rewritten in this update, which includes the following changes: - Code styling / nomenclature has been normalized across the entire file. - A robust RunSteamCMD function has been added to run SteamCMD with advanced error handling and reporting. Works for both the server and mods, and is configurable with the STEAMCMD_ATTEMPTS environment variable to specify how many times it should retry a download after a recoverable error (like large Workshop mod downloads timing out). - Added support for a MOD_FILE environment variable, to specify an exported Arma 3 modlist HTML file for import into the server (for downloads and runtime). These mods are combined with any mods listed in MODIFICATIONS. - A more robust and automatic way of downloading/updating mods is now included with the UPDATE_SERVER function. All mods to be used during runtime are checked for updates by comparing local file's creation dates against the mod's Workshop page last update. This allows for fast and reliable mod updates compared to the old manual system, and allows users to comfortably leave the update server function on all the time if they'd like. - Added a RemoveDuplicates function to prevent a user from accidentally loading a mod twice. - Checks for missing, trailing semicolons in manual mod lists due to human error. - Mod update information echos are less cryptic and now use the mod's human-readable name, as well as printing the date they last updated. - Made the server binary check error messages less cryptic and provided solution recommendations. - Added a CLEAR_CACHE env. var. function to delete headless client profiles on startup to help with potential issues they cause. - Un-hardcoded the basic.cfg URL and replaced with env. var. - Added HC_HIDE env. var. to prevent headless client console spam. - Added VALIDATE_SERVER env. var. to manually validate, because the new automatic update function skips validation to speed it up. - Added CDLC env. var. for easy download of Creator DLCs incase the user doesn't know how to use SteamCMD beta branches. --- games/arma3/Dockerfile | 29 +++ games/arma3/LICENSE.txt | 21 ++ games/arma3/entrypoint.sh | 321 ++++++++++++++++++++++++++++++ games/arma3/libnss_wrapper.so | Bin 0 -> 55040 bytes games/arma3/libnss_wrapper_x64.so | Bin 0 -> 56048 bytes games/arma3/passwd.template | 26 +++ 6 files changed, 397 insertions(+) create mode 100644 games/arma3/Dockerfile create mode 100644 games/arma3/LICENSE.txt create mode 100644 games/arma3/entrypoint.sh create mode 100644 games/arma3/libnss_wrapper.so create mode 100644 games/arma3/libnss_wrapper_x64.so create mode 100644 games/arma3/passwd.template diff --git a/games/arma3/Dockerfile b/games/arma3/Dockerfile new file mode 100644 index 0000000..922cdb6 --- /dev/null +++ b/games/arma3/Dockerfile @@ -0,0 +1,29 @@ +FROM ubuntu:20.04 + +LABEL author="David Wolfe (Red-Thirten)" maintainer="rehlmgaming@gmail.com" +ENV DEBIAN_FRONTEND noninteractive +ENV USER_NAME container +ENV NSS_WRAPPER_PASSWD /tmp/passwd +ENV NSS_WRAPPER_GROUP /tmp/group + +# Install Dependencies +RUN dpkg --add-architecture i386 \ + && apt-get update \ + && apt-get upgrade -y \ + && apt-get install -y libgcc-10-dev libstdc++-10-dev libtinfo5 lib64z1 libcurl3-gnutls \ + && apt-get install -y libnss-wrapper gettext-base tar curl gcc g++ libc6 libtbb2 lib32z1 lib32gcc1 lib32stdc++6 libsdl2-2.0-0 libsdl2-2.0-0:i386 libtbb2:i386 lib32stdc++6 libtinfo5:i386 libncurses5:i386 libcurl3-gnutls:i386 \ + && useradd -m -d /home/container -s /bin/bash container \ + && touch ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \ + && chgrp 0 ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} \ + && chmod g+rw ${NSS_WRAPPER_PASSWD} ${NSS_WRAPPER_GROUP} + +ADD passwd.template /passwd.template + +USER container +ENV HOME /home/container +WORKDIR /home/container + +COPY ./libnss_wrapper.so /libnss_wrapper.so +COPY ./libnss_wrapper_x64.so /libnss_wrapper_x64.so +COPY ./entrypoint.sh /entrypoint.sh +CMD ["/bin/bash", "/entrypoint.sh"] diff --git a/games/arma3/LICENSE.txt b/games/arma3/LICENSE.txt new file mode 100644 index 0000000..c73e689 --- /dev/null +++ b/games/arma3/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-2021 Pterodactyl Software + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/games/arma3/entrypoint.sh b/games/arma3/entrypoint.sh new file mode 100644 index 0000000..c9b8582 --- /dev/null +++ b/games/arma3/entrypoint.sh @@ -0,0 +1,321 @@ +#!/bin/bash + +## File: Pterodactyl Arma 3 Image - entrypoint.sh +## Author: David Wolfe (Red-Thirten) +## Date: 2021/07/11 +## License: MIT License + +## === CONSTANTS === +STEAMCMD_DIR="./steamcmd" # SteamCMD's directory containing steamcmd.sh +STEAMCMD_LOG="${STEAMCMD_DIR}/steamcmd.log" # Log file for SteamCMD +GAME_ID=107410 # SteamCMD ID for the Arma 3 GAME (not server). Only used for Workshop mod downloads. +EGG_URL='https://github.com/parkervcp/eggs/tree/master/game_eggs/steamcmd_servers/arma/arma3' # URL for Pterodactyl Egg & Info (only used as info to legacy users) + +# Color Codes +CYAN='\033[0;36m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +NC='\033[0m' # No Color + +## === ENVIRONMENT VARS === +# STARTUP, STARTUP_PARAMS, STEAM_USER, STEAM_PASS, SERVER_BINARY, MOD_FILE, MODIFICATIONS, SERVERMODS, UPDATE_SERVER, CLEAR_CACHE, VALIDATE_SERVER, MODS_LOWERCASE, STEAMCMD_EXTRA_FLAGS, CDLC, STEAMCMD_APPID, HC_NUM, SERVER_PASSWORD, HC_HIDE, STEAMCMD_ATTEMPTS, BASIC_URL, DISABLE_MOD_UPDATES + +## === GLOBAL VARS === +# validateServer, extraFlags, updateAttempt, modifiedStartup, allMods, CLIENT_MODS + +## === DEFINE FUNCTIONS === +# +# Runs SteamCMD with specified variables and performs error handling. +function RunSteamCMD { #[Input: int server=0 mod=1; int id] + # Clear previous SteamCMD log + if [[ -f "${STEAMCMD_LOG}" ]]; then + rm -f "${STEAMCMD_LOG:?}" + fi + + updateAttempt=0 + while (( $updateAttempt < $STEAMCMD_ATTEMPTS )); do # Loop for specified number of attempts + # Increment attempt counter + updateAttempt=$((updateAttempt+1)) + + if (( $updateAttempt > 1 )); then # Notify if not first attempt + echo -e "\t${YELLOW}Re-Attempting download/update in 3 seconds...${NC} (Attempt ${CYAN}${updateAttempt}${NC} of ${CYAN}${STEAMCMD_ATTEMPTS}${NC})\n" + sleep 3 + fi + + # Check if updating server or mod + if [[ $1 == 0 ]]; then # Server + ${STEAMCMD_DIR}/steamcmd.sh "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +force_install_dir /home/container +app_update $2 $extraFlags $validateServer +quit | tee -a "${STEAMCMD_LOG}" + else # Mod + ${STEAMCMD_DIR}/steamcmd.sh "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +workshop_download_item $GAME_ID $2 +quit | tee -a "${STEAMCMD_LOG}" + fi + + # Error checking for SteamCMD + steamcmdExitCode=${PIPESTATUS[0]} + if [[ -n $(grep -i "error\|failed" "${STEAMCMD_LOG}" | grep -iv "setlocal\|SDL") ]]; then # Catch errors (ignore setlocale and SDL warnings) + # Soft errors + if [[ -n $(grep -i "Timeout downloading item" "${STEAMCMD_LOG}") ]]; then # Mod download timeout + echo -e "\n${YELLOW}[UPDATE]: ${NC}Timeout downloading Steam Workshop mod: \"${CYAN}${modName}${NC}\" (${CYAN}${2}${NC})" + echo -e "\t(This is expected for particularly large mods)" + elif [[ -n $(grep -i "0x402\|0x6\|0x602" "${STEAMCMD_LOG}") ]]; then # Connection issue with Steam + echo -e "\n${YELLOW}[UPDATE]: ${NC}Connection issue with Steam servers." + echo -e "\t(Steam servers may currently be down, or a connection cannot be made reliably)" + # Hard errors + elif [[ -n $(grep -i "Password check for AppId" "${STEAMCMD_LOG}") ]]; then # Incorrect beta branch password + echo -e "\n${RED}[UPDATE]: ${YELLOW}Incorrect password given for beta branch. ${CYAN}Skipping download...${NC}" + echo -e "\t(Check your \"[ADVANCED] EXTRA FLAGS FOR STEAMCMD\" startup parameter)" + break + # Fatal errors + elif [[ -n $(grep -i "Invalid Password\|two-factor\|No subscription" "${STEAMCMD_LOG}") ]]; then # Wrong username/password, Steam Guard is turned on, or host is using anonymous account + echo -e "\n${RED}[UPDATE]: Cannot login to Steam - Improperly configured account and/or credentials" + echo -e "\t${YELLOW}Please contact your administrator/host and give them the following message:${NC}" + echo -e "\t${CYAN}Your Egg, or your client's server, is not configured with valid Steam credentials.${NC}" + echo -e "\t${CYAN}Either the username/password is wrong, or Steam Guard is not properly configured\n\taccording to this egg's documentation/README.${NC}\n" + exit 1 + elif [[ -n $(grep -i "Download item" "${STEAMCMD_LOG}") ]]; then # Steam account does not own base game for mod downloads, or unknown + echo -e "\n${RED}[UPDATE]: Cannot download mod - Download failed" + echo -e "\t${YELLOW}While unknown, this error is likely due to your host's Steam account not owning the base game.${NC}" + echo -e "\t${YELLOW}(Please contact your administrator/host if this issue persists)${NC}\n" + exit 1 + elif [[ -n $(grep -i "0x202\|0x212" "${STEAMCMD_LOG}") ]]; then # Not enough disk space + echo -e "\n${RED}[UPDATE]: Unable to complete download - Not enough storage" + echo -e "\t${YELLOW}You have run out of your allotted disk space.${NC}" + echo -e "\t${YELLOW}Please contact your administrator/host for potential storage upgrades.${NC}\n" + exit 1 + elif [[ -n $(grep -i "0x606" "${STEAMCMD_LOG}") ]]; then # Disk write failure + echo -e "\n${RED}[UPDATE]: Unable to complete download - Disk write failure" + echo -e "\t${YELLOW}This is normally caused by directory permissions issues,\n\tbut could be a more serious hardware issue.${NC}" + echo -e "\t${YELLOW}(Please contact your administrator/host if this issue persists)${NC}\n" + exit 1 + else # Unknown caught error + echo -e "\n${RED}[UPDATE]: ${YELLOW}An unknown error has occurred with SteamCMD. ${CYAN}Skipping download...${NC}" + echo -e "\t(Please contact your administrator/host if this issue persists)" + break + fi + elif [[ $steamcmdExitCode != 0 ]]; then # Unknown fatal error + echo -e "\n${RED}[UPDATE]: SteamCMD has crashed for an unknown reason!${NC} (Exit code: ${CYAN}${steamcmdExitCode}${NC})" + echo -e "\t${YELLOW}(Please contact your administrator/host for support)${NC}\n" + exit $steamcmdExitCode + else # Success! + if [[ $1 == 0 ]]; then # Server + echo -e "\n${GREEN}[UPDATE]: Game server is up to date!${NC}" + else # Mod + echo -e "\n${GREEN}[UPDATE]: Mod download/update successful!${NC}" + fi + break + fi + if (( $updateAttempt == $STEAMCMD_ATTEMPTS )); then # Notify if failed last attempt + if [[ $1 == 0 ]]; then # Server + echo -e "\t${RED}Final attempt made! ${YELLOW}Unable to complete game server update. ${CYAN}Skipping...${NC}" + echo -e "\t(Please try again at a later time)" + sleep 3 + else # Mod + echo -e "\t${RED}Final attempt made! ${YELLOW}Unable to complete mod download/update. ${CYAN}Skipping...${NC}" + echo -e "\t(You may try again later, or manually upload this mod to your server via SFTP)" + sleep 3 + fi + fi + done +} + +# Takes a directory (string) as input, and recursively makes all files & folders lowercase. +function ModsLowercase { + echo -e "\n${GREEN}[STARTUP]:${NC} Making mod ${CYAN}$1${NC} files/folders lowercase..." + for SRC in `find ./$1 -depth` + do + DST=`dirname "${SRC}"`/`basename "${SRC}" | tr '[A-Z]' '[a-z]'` + if [ "${SRC}" != "${DST}" ] + then + [ ! -e "${DST}" ] && mv -T "${SRC}" "${DST}" + fi + done +} + +# Removes duplicate items from a semicolon delimited string +function RemoveDuplicates { #[Input: str - Output: printf of new str] + echo $1 | sed -e 's/;/\n/g' | sort -u | xargs printf '%s;' +} + +# === ENTRYPOINT START === +cd /home/container +sleep 1 + +# Check for old eggs +if [[ -z ${VALIDATE_SERVER} ]]; then # VALIDATE_SERVER was not in the previous version + echo -e "\n${RED}[STARTUP_ERR]: Please contact your administrator/host for support, and give them the following message:${NC}\n" + echo -e "\t${CYAN}Your Arma 3 Egg is outdated and no longer supported.${NC}" + echo -e "\t${CYAN}Please download the latest version at the following link, and install it in your panel:${NC}" + echo -e "\t${CYAN}${EGG_URL}${NC}\n" + exit 1 +fi + +# Collect and parse all specified mods +if [[ -n ${MODIFICATIONS} ]] && [[ ${MODIFICATIONS} != *\; ]]; then # Add manually specified mods to the client-side mods list, while checking for trailing semicolon + CLIENT_MODS="${MODIFICATIONS};" +else + CLIENT_MODS=${MODIFICATIONS} +fi +if [[ -f ${MOD_FILE} ]] && [[ -n "$(cat ${MOD_FILE} | grep 'Created by Arma 3 Launcher')" ]]; then # If the mod list file exists and is valid, parse and add mods to the client-side mods list + CLIENT_MODS+=$(cat ${MOD_FILE} | grep 'id=' | cut -d'=' -f3 | cut -d'"' -f1 | xargs printf '@%s;') +elif [[ -n "${MOD_FILE}" ]]; then # If MOD_FILE is not null, warn user file is missing or invalid + echo -e "\n${YELLOW}[STARTUP_WARN]: Arma 3 Modlist file \"${CYAN}${MOD_FILE}${YELLOW}\" could not be found, or is invalid!${NC}" + echo -e "\tEnsure your uploaded modlist's file name matches your Startup Parameter." + echo -e "\tOnly files exported from an Arma 3 Launcher are permitted." + if [[ -n "${CLIENT_MODS}" ]]; then + echo -e "\t${CYAN}Reverting to the manual mod list...${NC}" + fi +fi +if [[ -n ${SERVERMODS} ]] && [[ ${SERVERMODS} != *\; ]]; then # Add server mods to the master mods list, while checking for trailing semicolon + allMods="${SERVERMODS};" +else + allMods=${SERVERMODS} +fi +allMods+=$CLIENT_MODS # Add all client-side mods to the master mod list +CLIENT_MODS=$(RemoveDuplicates ${CLIENT_MODS}) # Remove duplicate mods from CLIENT_MODS, if present +allMods=$(RemoveDuplicates ${allMods}) # Remove duplicate mods from allMods, if present +allMods=$(echo $allMods | sed -e 's/;/ /g') # Convert from string to array + +# Update everything (server and mods), if specified +if [[ ${UPDATE_SERVER} == 1 ]]; then + echo -e "\n${GREEN}[STARTUP]: ${CYAN}Starting checks for all updates...${NC}" + echo -e "(It is okay to ignore any \"SDL\" errors during this process)\n" + + ## Update game server + echo -e "${GREEN}[UPDATE]:${NC} Checking for game server updates with App ID: ${CYAN}${STEAMCMD_APPID}${NC}..." + + if [[ ${VALIDATE_SERVER} == 1 ]]; then # Validate will be added as a parameter if specified + echo -e "\t${CYAN}File validation enabled.${NC} (This may take extra time to complete)" + validateServer="validate" + else + validateServer="" + fi + + # Determine what extra flags should be set + if [[ -n ${STEAMCMD_EXTRA_FLAGS} ]]; then + echo -e "\t(${YELLOW}Advanced${NC}) Extra SteamCMD flags specified: ${CYAN}${STEAMCMD_EXTRA_FLAGS}${NC}\n" + extraFlags=${STEAMCMD_EXTRA_FLAGS} + elif [[ ${CDLC} == 1 ]]; then + echo -e "\t${CYAN}Download/Update Creator DLC server files enabled.${NC}\n" + extraFlags="-beta creatordlc" + else + echo -e "" + extraFlags="" + fi + + RunSteamCMD 0 ${STEAMCMD_APPID} + + ## Update mods + if [[ -n $allMods ]] && [[ ${DISABLE_MOD_UPDATES} != 1 ]]; then + echo -e "\n${GREEN}[UPDATE]:${NC} Checking all ${CYAN}Steam Workshop mods${NC} for updates..." + for modID in $(echo $allMods | sed -e 's/@//g') + do + if [[ $modID =~ ^[0-9]+$ ]]; then # Only check mods that are in ID-form + # Get mod's latest update in epoch time from its Steam Workshop changelog page + latestUpdate=$(curl -sL https://steamcommunity.com/sharedfiles/filedetails/changelog/$modID | grep '

$(find @$modID | head -1 | xargs stat -c%Z) ) ]]; then + # Get the mod's name from the Workshop page as well + modName=$(curl -sL https://steamcommunity.com/sharedfiles/filedetails/changelog/$modID | grep 'workshopItemTitle' | cut -d'>' -f2 | cut -d'<' -f1) + if [[ -z $modName ]]; then # Set default name if unavailable + modName="[NAME UNAVAILABLE]" + fi + if [[ ! -d @$modID ]]; then + echo -e "${GREEN}[UPDATE]:${NC} Downloading new Mod: \"${CYAN}${modName}${NC}\" (${CYAN}${modID}${NC})" + else + echo -e "${GREEN}[UPDATE]:${NC} Mod update found for: \"${CYAN}${modName}${NC}\" (${CYAN}${modID}${NC})" + fi + if [[ -n $latestUpdate ]] && [[ $latestUpdate =~ ^[0-9]+$ ]]; then # Notify last update date, if valid + echo -e "\tMod was last updated: ${CYAN}$(date -d @${latestUpdate})${NC}" + fi + echo -e "\tAttempting mod update/download via SteamCMD...\n" + RunSteamCMD 1 $modID + # Move the downloaded mod to the root directory, and replace existing mod if needed + mkdir -p ./@$modID + rm -rf ./@$modID/* + mv -f ./Steam/steamapps/workshop/content/$GAME_ID/$modID/* ./@$modID + rm -d ./Steam/steamapps/workshop/content/$GAME_ID/$modID + # Make the mods contents all lowercase + ModsLowercase @$modID + # Move any .bikey's to the keys directory + echo -e "${GREEN}[UPDATE]:${NC} Moving any mod .bikey files to the ~/keys/ folder...\n" + find ./@$modID -name "*.bikey" -type f -exec cp {} ./keys \; + fi + fi + done + echo -e "${GREEN}[UPDATE]:${NC} Steam Workshop mod update check ${GREEN}complete${NC}!" + fi +fi + +# Check if specified server binary exists. +if [[ ! -f ./${SERVER_BINARY} ]]; then + echo -e "\n${RED}[STARTUP_ERR]: Specified Arma 3 server binary could not be found in the root directory!${NC}" + echo -e "${YELLOW}Please do the following to resolve this issue:${NC}" + echo -e "\t${CYAN}- Double check your \"Server Binary\" Startup Variable is correct.${NC}" + echo -e "\t${CYAN}- Ensure your server has properly installed/updated without errors (reinstalling/updating again may help).${NC}" + echo -e "\t${CYAN}- Use the File Manager to check that your specified server binary file is not missing from the root directory.${NC}\n" + exit 1 +fi + +# Make mods lowercase, if specified +if [[ ${MODS_LOWERCASE} == "1" ]]; then + for modDir in $allMods + do + ModsLowercase $modDir + done +fi + +# Clear HC cache, if specified +if [[ ${CLEAR_CACHE} == "1" ]]; then + echo -e "\n${GREEN}[STARTUP]: ${CYAN}Clearing Headless Client profiles cache...${NC}" + for profileDir in ./serverprofile/home/* + do + [ "$profileDir" = "./serverprofile/home/Player" ] && continue + rm -rf $profileDir + done +fi + +# Check if basic.cfg exists, and download if not (Arma really doesn't like it missing for some reason) +if [[ ! -f ./basic.cfg ]]; then + echo -e "\n${YELLOW}[STARTUP_WARN]: Basic Network Configuration file \"${CYAN}basic.cfg${YELLOW}\" is missing!${NC}" + echo -e "\t${YELLOW}Downloading default file for use instead...${NC}" + curl -sSL ${BASIC_URL} -o ./basic.cfg +fi + +# $NSS_WRAPPER_PASSWD and $NSS_WRAPPER_GROUP have been set by the Dockerfile +export USER_ID=$(id -u) +export GROUP_ID=$(id -g) +envsubst < /passwd.template > ${NSS_WRAPPER_PASSWD} + +if [[ ${SERVER_BINARY} == *"x64"* ]]; then # Check which libnss_wrapper architecture to run, based off the server binary name + export LD_PRELOAD=/libnss_wrapper_x64.so +else + export LD_PRELOAD=/libnss_wrapper.so +fi + +# Replace Startup Variables +modifiedStartup=`eval echo $(echo ${STARTUP} | sed -e 's/{{/${/g' -e 's/}}/}/g')` + +# Start Headless Clients if applicable +if [[ ${HC_NUM} > 0 ]]; then + echo -e "\n${GREEN}[STARTUP]:${NC} Starting ${CYAN}${HC_NUM}${NC} Headless Client(s)." + for i in $(seq ${HC_NUM}) + do + if [[ ${HC_HIDE} == "1" ]]; + then + ./${SERVER_BINARY} -client -connect=127.0.0.1 -port=${SERVER_PORT} -password="${SERVER_PASSWORD}" -profiles=./serverprofile -bepath=./battleye -mod="${CLIENT_MODS}" ${STARTUP_PARAMS} > /dev/null 2>&1 & + else + ./${SERVER_BINARY} -client -connect=127.0.0.1 -port=${SERVER_PORT} -password="${SERVER_PASSWORD}" -profiles=./serverprofile -bepath=./battleye -mod="${CLIENT_MODS}" ${STARTUP_PARAMS} & + fi + echo -e "${GREEN}[STARTUP]:${CYAN} Headless Client $i${NC} launched." + done +fi + +# Start the Server +echo -e "\n${GREEN}[STARTUP]:${NC} Starting server with the following startup command:" +echo -e "${CYAN}${modifiedStartup}${NC}\n" +${modifiedStartup} + +if [ $? -ne 0 ]; then + echo -e "\n${RED}PTDL_CONTAINER_ERR: There was an error while attempting to run the start command.${NC}\n" + exit 1 +fi diff --git a/games/arma3/libnss_wrapper.so b/games/arma3/libnss_wrapper.so new file mode 100644 index 0000000000000000000000000000000000000000..8f32e83e9fc396154656aa81070002345193ead9 GIT binary patch literal 55040 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 U)Pj4bXK0wrHSqpk!>ZHx5AF@Q9smFU literal 0 HcmV?d00001 diff --git a/games/arma3/libnss_wrapper_x64.so b/games/arma3/libnss_wrapper_x64.so new file mode 100644 index 0000000000000000000000000000000000000000..8f7438a19e1d6ef2b8ad673e6324ade5e0a76469 GIT binary patch literal 56048 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