diff --git a/DoConfig.sh b/DoConfig.sh index 06d4ccf..87c21a5 100755 --- a/DoConfig.sh +++ b/DoConfig.sh @@ -1,8 +1,111 @@ #/bin/bash +OUTPUT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +CFG_FILE= +DEFAULT_CFG_FILE=UnrealTournament.ini + +function add_iniKey() { + crudini --set $OUTPUT_DIR/System/$CFG_FILE $1 __$2 $3 + # Warning: ugly hack with sed to allow multiple key instances + to remove space around '=' + sed -i "s/[[:space:]]*__$2[[:space:]]*=[[:space:]]*/$2=/g" $OUTPUT_DIR/System/$CFG_FILE +} + +function update_iniKey() { + crudini --set $OUTPUT_DIR/System/$CFG_FILE $1 $2 $3 + # Warning: ugly hack with sed to remove space around '=' + sed -i "s/[[:space:]]*$2[[:space:]]*=[[:space:]]*/$2=/g" $OUTPUT_DIR/System/$CFG_FILE +} + +# !!Warning!! section is not considered +function del_iniKey() { + sed -i "/[[:space:]]*$2[[:space:]]*=[[:space:]]*$3/d" $OUTPUT_DIR/System/$CFG_FILE +} + +function setPort() { + echo setting Port to $1 + update_iniKey 'URL' 'Port' $1 +} + +function setMap() { + echo setting Map to $1 + update_iniKey 'URL' 'Map' $1 +} + +function setDefaultServerGame() { + echo setting DefaultServerGame to $1 + update_iniKey 'Engine.Engine' 'DefaultServerGame' $1 +} function setHostName() { - echo setting host name to $1 + echo setting HostName to $1 + update_iniKey 'Engine.GameReplicationInfo' 'ServerName' $1 + update_iniKey 'Engine.GameReplicationInfo' 'ShortName' $1 +} + +function setAdminEmail() { + echo setting AdminEmail to $1 + update_iniKey 'Engine.GameReplicationInfo' 'AdminEmail' $1 +} + +function setAdminName() { + echo setting AdminName to $1 + update_iniKey 'Engine.GameReplicationInfo' 'AdminName' $1 + update_iniKey 'UTServerAdmin.UTServerAdmin' 'AdminUsername' $1 +} + +function setMOTD1() { + echo setting MOTD1 to $1 + update_iniKey 'Engine.GameReplicationInfo' 'MOTDLine1' $1 +} + +function setMOTD2() { + echo setting host MOTD2 $1 + update_iniKey 'Engine.GameReplicationInfo' 'MOTDLine2' $1 +} + +function setHTTPDownloadServer() { + echo setting HTTP Download server to $1 + update_iniKey 'IpDrv.HTTPDownload' 'RedirectToURL' $1 + update_iniKey 'IpDrv.HTTPDownload' 'UseCompression' True + del_iniKey 'IpDrv.HTTPDownload' 'ProxyServerHost' + del_iniKey 'IpDrv.HTTPDownload' 'ProxyServerPort' +} + +function setNetServerMaxTickRate() { + echo setting NetServerMaxTickRate $1 + update_iniKey 'IpDrv.TcpNetDriver' 'NetServerMaxTickRate' $1 +} + +function setLanServerMaxTickRate() { + echo setting LanServerMaxTickRate $1 + update_iniKey 'IpDrv.TcpNetDriver' 'LanServerMaxTickRate' $1 +} + +function setAdminPassword() { + echo setting AdminPassword $1 + update_iniKey 'Engine.GameInfo' 'AdminPassword' $1 + update_iniKey 'UTServerAdmin.UTServerAdmin' 'AdminPassword' $1 +} + +function setGamePassword() { + echo setting GamePassword $1 + update_iniKey 'Engine.GameInfo' 'GamePassword' $1 +} + +function setMaxPlayers() { + echo setting MaxPlayers $1 + update_iniKey 'Engine.GameInfo' 'MaxPlayers' $1 +} + +function setServerLogName() { + echo setting ServerLogName $1 + update_iniKey 'Engine.GameInfo' 'ServerLogName' $1 +} + +function enableWebServer() { + echo enabling WebServer on port $1 + update_iniKey 'UWeb.WebServer' 'ListenPort' $1 + update_iniKey 'UWeb.WebServer' 'bEnabled' True } function show_help() { @@ -11,9 +114,87 @@ function show_help() { echo } +function check_cfg_file() { + if [ -z ${CFG_FILE} ] + then + echo "CFG_FILE is unset, setting it to $DEFAULT_CFG_FILE" + CFG_FILE=$DEFAULT_CFG_FILE + else + echo "CFG_FILE is set to '$CFG_FILE'" + fi + + if [ ! -f $OUTPUT_DIR/System/$CFG_FILE ] + then + echo "$OUTPUT_DIR/System/$CFG_FILE does not exist" + show_help + exit 9999 # die with error code 9999 + fi +} case "$1" in + 'enableWebServer') + check_cfg_file + enableWebServer $2 + ;; + 'setGamePassword') + check_cfg_file + setGamePassword $2 + ;; + 'setMaxPlayers') + check_cfg_file + setMaxPlayers $2 + ;; + 'setServerLogName') + check_cfg_file + setServerLogName $2 + ;; + 'setAdminPassword') + check_cfg_file + setAdminPassword $2 + ;; + 'setNetServerMaxTickRate') + check_cfg_file + setNetServerMaxTickRate $2 + ;; + 'setLanServerMaxTickRate') + check_cfg_file + setLanServerMaxTickRate $2 + ;; + 'setDefaultServerGame') + check_cfg_file + setDefaultServerGame $2 + ;; + 'setPort') + check_cfg_file + setPort $2 + ;; + 'setMap') + check_cfg_file + setMap $2 + ;; 'setHostName') + check_cfg_file + setHostName $2 + ;; + 'setAdminEmail') + check_cfg_file + setAdminEmail $2 + ;; + 'setAdminName') + check_cfg_file + setAdminEmail $2 + ;; + 'setMOTD1') + check_cfg_file + setMOTD1 $2 + ;; + 'setMOTD2') + check_cfg_file + setMOTD1 $2 + ;; + 'setHTTPDownloadServer') + check_cfg_file + setHTTPDownloadServer $2 ;; *) show_help