145 lines
4 KiB
Bash
Executable file
145 lines
4 KiB
Bash
Executable file
#!/bin/bash
|
|
set -e
|
|
configSource="GameData/Config/dedicated_cfg"
|
|
configFile="GameData/Config/live_config.xml"
|
|
settingsPath="/dedicated"
|
|
authLevelsPath="$settingsPath/authorization_levels/level"
|
|
accountPath="$settingsPath/masterserver_account"
|
|
serverPath="$settingsPath/server_options"
|
|
systemPath="$settingsPath/system_config"
|
|
|
|
TM_SUPERADMIN_PASSWORD="${TM_SUPERADMIN_PASSWORD:-$(openssl rand -base64 33)}"
|
|
TM_ADMIN_PASSWORD="${TM_ADMIN_PASSWORD:-$(openssl rand -base64 33)}"
|
|
|
|
echo "Checking whether the server is present…"
|
|
|
|
levels=(
|
|
TM_SUPERADMIN_PASSWORD 1
|
|
TM_ADMIN_PASSWORD 2
|
|
TM_USER_PASSWORD 3
|
|
)
|
|
|
|
accountOption=(
|
|
TM_SERVER_USER login
|
|
TM_SERVER_PASSWORD password
|
|
TM_SERVER_VALIDATION_KEY validation_key
|
|
)
|
|
|
|
serverOptions=(
|
|
TM_TITLE name
|
|
TM_COMMENT comment
|
|
TM_HIDDEN hide_server
|
|
|
|
TM_MAX_PLAYERS max_players
|
|
TM_PLAYER_PASSWORD password
|
|
|
|
TM_MAX_SPECTATORS max_spectators
|
|
TM_SPECTATOR_PASSWORD password_spectator
|
|
|
|
TM_LADDER_MODE ladder_mode
|
|
TM_LADDER_LIMIT_MIN ladder_serverlimit_min
|
|
TM_LADDER_LIMIT_MAX ladder_serverlimit_max
|
|
|
|
TM_ENABLE_P2P_UPLOAD enable_p2p_upload
|
|
TM_ENABLE_P2P_DOWNLOAD enable_p2p_download
|
|
|
|
TM_CALLVOTE_TIMEOUT callvote_timeout
|
|
TM_CALLVOTE_RATIO callvote_ratio
|
|
|
|
TM_ALLOW_CHALLENGE_DOWNLOAD allow_challenge_download
|
|
TM_AUTOSAVE_REPLAYS autosave_replays
|
|
TM_AUTOSAVE_VALIDATION_REPLAYS autosave_validation_replays
|
|
|
|
TM_REFEREE_PASSWORD referee_password
|
|
TM_REFEREE_VALIDATION_MODE referee_validation_mode
|
|
|
|
TM_USE_CHANGING_VALIDATION_SEED use_changing_validation_seed
|
|
)
|
|
|
|
systemOptions=(
|
|
TM_BIND_IP bind_ip_address
|
|
TM_BIND_PORT server_port
|
|
TM_P2P_PORT server_p2p_port
|
|
TM_CLIENT_PORT client_port
|
|
TM_USE_NAT_UPNP use_nat_upnp
|
|
|
|
TM_XMLRPC_PORT xmlrpc_port
|
|
TM_XMLRPC_ALLOWED_REMOTE xmlrpc_allowremote
|
|
|
|
TM_PACKMASK packmask
|
|
|
|
TM_CONNECTION_UPLOADRATE connection_uploadrate
|
|
TM_CONNECTION_DOWNLOADRATE connection_downloadrate
|
|
|
|
TM_P2P_CACHE_SIZE p2p_cache_size
|
|
|
|
TM_BLACKLIST_URL blacklist_url
|
|
TM_GUESTLIST_FILENAME guestlist_filename
|
|
TM_BLACKLIST_FILENAME blacklist_filename
|
|
|
|
TM_ALLOW_SPECTATOR_RELAYS allow_spectator_relays
|
|
|
|
TM_USE_PROXY use_proxy
|
|
TM_PROXY_LOGIN proxy_login
|
|
TM_PROXY_PASSWORD proxy_password
|
|
)
|
|
|
|
if [[ ! -x "./TrackmaniaServer" ]] || [ ! -f "$configSource".* ]; then
|
|
echo "Server not found!"
|
|
echo "Downloading TrackMania Forever Dedicated Server…"
|
|
file="$(mktemp)"
|
|
dir="$(mktemp -d)"
|
|
wget http://files2.trackmaniaforever.com/TrackmaniaServer_2011-02-21.zip -O "$file" && unzip -o "$file" -d .
|
|
fi
|
|
|
|
if [ -f "$configSource.xml" ]; then
|
|
cp "$configSource.xml" "$configFile"
|
|
elif [ -f "$configSource.txt" ]; then
|
|
cp "$configSource.txt" "$configFile"
|
|
fi
|
|
|
|
for i in $(seq 0 2 $((${#levels[@]} - 1))); do
|
|
var="${levels[$i]}"
|
|
index="${levels[$(($i + 1))]}"
|
|
password="${!var}"
|
|
|
|
if [ -n "$password" ]; then
|
|
xmlstarlet edit --inplace --update "$authLevelsPath[$index]/password" --value "$password" "$configFile"
|
|
fi
|
|
done
|
|
|
|
for i in $(seq 0 2 $((${#accountOption[@]} - 1))); do
|
|
var="${accountOption[$i]}"
|
|
option="${accountOption[$(($i + 1))]}"
|
|
value="${!var}"
|
|
|
|
if [ -n "$value" ]; then
|
|
xmlstarlet edit --inplace --update "$accountPath/$option" --value "$value" "$configFile"
|
|
fi
|
|
done
|
|
|
|
for i in $(seq 0 2 $((${#serverOptions[@]} - 1))); do
|
|
var="${serverOptions[$i]}"
|
|
option="${serverOptions[$(($i + 1))]}"
|
|
value="${!var}"
|
|
|
|
if [ -n "$value" ]; then
|
|
xmlstarlet edit --inplace --update "$serverPath/$option" --value "$value" "$configFile"
|
|
fi
|
|
done
|
|
|
|
for i in $(seq 0 2 $((${#systemOptions[@]} - 1))); do
|
|
var="${systemOptions[$i]}"
|
|
option="${systemOptions[$(($i + 1))]}"
|
|
value="${!var}"
|
|
|
|
if [ -n "$value" ]; then
|
|
xmlstarlet edit --inplace --update "$systemPath/$option" --value "$value" "$configFile"
|
|
fi
|
|
done
|
|
|
|
if [ -z "$TM_LOG_FILES" ]; then
|
|
set -- "$@" /nologs
|
|
fi
|
|
|
|
unbuffer -p ./TrackmaniaServer /dedicated_cfg="$(basename "$configFile")" /nodaemon $@
|