From 69c95c1433a148ea3794504ef0bbbb4c2b1beaa2 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sat, 8 Apr 2023 12:39:37 +0100 Subject: [PATCH] xml --- lgsm/modules/info_game.sh | 179 +++++++++++++++++--------------------- 1 file changed, 78 insertions(+), 101 deletions(-) diff --git a/lgsm/modules/info_game.sh b/lgsm/modules/info_game.sh index d49bdadf6..77262b08f 100644 --- a/lgsm/modules/info_game.sh +++ b/lgsm/modules/info_game.sh @@ -40,6 +40,24 @@ fn_info_game_json() { eval "${1}"="jq -r '${2}' ${servercfgfullpath}" > /dev/null 2>&1 || echo "Unable to parse ${2}" } +# Config Type: SQF +# Comment: // or /* */ +fn_info_game_sqf() { + if [ -n "${3}" ]; then + servercfgfullpath="${3}" + fi + eval "${1}"="sed 's/${3} *= *'\([^']*\)'/\1/' ${servercfgfullpath}" > /dev/null 2>&1 || echo "Unable to parse ${2}" +} + +# Config Type: XML +# Comment: +fn_info_game_xml() { + if [ -n "${3}" ]; then + servercfgfullpath="${3}" + fi + eval "${1}"="sed -n 's/.*<${2}>\\(.*\\)<\/${2}>.*/\\1/p' ${servercfgfullpath}" > /dev/null 2>&1 || echo "Unable to parse ${2}" +} + # Config Type: ini # Parameters: false # Comment: ; or # @@ -616,17 +634,18 @@ fn_info_game_unreal2k4() { } # Config Type: SQF +# Parameters: true # Comment: // or /* */ # Example: serverName = "SERVERNAME"; # Filetype: cfg fn_info_game_arma3() { if [ -f "${servercfgfullpath}" ]; then - adminpassword="$(sed -nr 's/^passwordAdmin\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")" - maxplayers="$(sed -nr 's/^maxPlayers\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}")" - servername="$(sed -nr 's/^hostname\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")" - serverpassword="$(sed -nr 's/^password\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")" + fn_info_game_sqf "adminpassword" "passwordAdmin" + fn_info_game_sqf "maxplayers" "maxPlayers" + fn_info_game_sqf "servername" "hostname" + fn_info_game_sqf "serverpassword" "password" fi - port="${port:-"2302"}" + port="${port:-"0"}" adminpassword="${adminpassword:-"NOT SET"}" battleeyeport="$((port + 4))" maxplayers="${maxplayers:-"0"}" @@ -634,7 +653,7 @@ fn_info_game_arma3() { servername="${servername:-"NOT SET"}" serverpassword="${serverpassword:-"NOT SET"}" steammasterport="$((port + 2))" - voiceport="${port:-"2302"}" + voiceport="${port:-"0"}" voiceunusedport="$((port + 3))" } @@ -659,29 +678,19 @@ fn_info_game_armar() { # Example: game.serverName "SERVERNAME" # Filetype: con fn_info_game_bf1942() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - else - servername=$(grep -E "^game.serverName " "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverName //g' | tr -d '=\";,:' | xargs) - serverpassword=$(grep "game.serverPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/game.serverPassword//g' | tr -d '=\";,:' | xargs) - maxplayers=$(grep "game.serverMaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - queryport="22000" - configip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs) - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - configip=${configip:-"0.0.0.0"} + if [ -f "${servercfgfullpath}" ]; then + fn_info_game_con "configip" "game.serverIp" + fn_info_game_con "maxplayers" "game.serverMaxPlayers" + fn_info_game_con "port" "game.serverPort" + fn_info_game_con "servername" "game.serverName" + fn_info_game_con "serverpassword" "game.serverPassword" fi + configip="${configip:-"0.0.0.0"}" + maxplayers="${maxplayers:-"0"}" + port="${port:-"0"}" + queryport="22000" + servername="${servername:-"NOT SET"}" + serverpassword="${serverpassword:-"NOT SET"}" } # Config Type: con @@ -689,57 +698,39 @@ fn_info_game_bf1942() { # Example: game.serverName "SERVERNAME" # Filetype: con fn_info_game_bfv() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" - port="${zero}" - queryport="${zero}" - else - servername=$(grep "game.serverName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverName//g' | tr -d '=\";,:' | xargs) - serverpassword=$(grep "game.serverPassword" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/game.serverPassword//g' | tr -d '=\";,:' | xargs) - maxplayers=$(grep "game.serverMaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - port=$(grep "game.serverPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]') - queryport="23000" - configip=$(grep "game.serverIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/game.serverIP//g' | tr -d '=\";,:' | xargs) - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} - port=${port:-"0"} - queryport=${queryport:-"0"} - configip=${configip:-"0.0.0.0"} + if [ -f "${servercfgfullpath}" ]; then + fn_info_game_con "configip" "game.serverIp" + fn_info_game_con "maxplayers" "game.serverMaxPlayers" + fn_info_game_con "port" "game.serverPort" + fn_info_game_con "servername" "game.serverName" + fn_info_game_con "serverpassword" "game.serverPassword" fi + configip="${configip:-"0.0.0.0"}" + maxplayers="${maxplayers:-"0"}" + port="${port:-"0"}" + queryport="22000" + servername="${servername:-"NOT SET"}" + serverpassword="${serverpassword:-"NOT SET"}" } # Config Type: XML +# Parameters: false # Comment: # Example: # Filetype: xml fn_info_game_bt() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - servername="${unavailable}" - serverpassword="${unavailable}" - port="${zero}" - queryport="${zero}" - maxplayers="${unavailable}" - else - servername=$(grep -Po 'name="\K.*(?=")' "${servercfgfullpath}") # Assuming GNU grep is used - serverpassword=$(grep -Po 'password="\K.*(?=")' "${servercfgfullpath}") # Assuming GNU grep is used - port=$(grep " port=" "${servercfgfullpath}" | tr -cd '[:digit:]') - queryport=$(grep "queryport=" "${servercfgfullpath}" | tr -cd '[:digit:]') - maxplayers=$(grep "maxplayers=" "${servercfgfullpath}" | tr -cd '[:digit:]') - - # Not set - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - port=${port:-"0"} - queryport=${queryport:-"0"} - maxplayers=${maxplayers:-"0"} + if [ -f "${servercfgfullpath}" ]; then + fn_info_game_xml "servername" "name" + fn_info_game_xml "serverpassword" "password" + fn_ingo_game_xml "port" "port" + fn_ingo_game_xml "queryport" "queryport" + fn_ingo_game_xml "maxplayers" "maxplayers" fi + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + port=${port:-"0"} + queryport=${queryport:-"0"} + maxplayers=${maxplayers:-"0"} } # Config Type: json @@ -1333,39 +1324,25 @@ fn_info_game_mom() { # Example: Default MTA Server # Filetype: conf fn_info_game_mta() { - # Config - if [ ! -f "${servercfgfullpath}" ]; then - port=${zero} - queryport=${zero} - httpport=${zero} - ase="${unavailable}" - servername="${unavailable}" - serverpassword="${unavailable}" - maxplayers="${zero}" + if [ -f "${servercfgfullpath}" ]; then + fn_info_game_xml "port" "port" + fn_info_game_xml "httpport" "httpport" + fn_info_game_xml "servername" "servername" + fn_info_game_xml "maxplayers" "maxplayers" + fn_info_game_xml "ase" "ase" + fi + if [ "${ase}" == "1" ]; then + ase="Enabled" else - port=$(grep -m 1 "serverport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') - queryport=$((port + 123)) - httpport=$(grep -m 1 "httpport" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') - servername=$(grep -m 1 "servername" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<") - serverpassword=$(grep -m 1 "password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<") - maxplayers=$(grep -m 1 "maxplayers" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') - ase=$(grep -m 1 "ase" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's///g' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | cut -f1 -d "<" | tr -cd '[:digit:]') - if [ "${ase}" == "1" ]; then - ase="Enabled" - else - ase="Disabled" - fi - - # Not set - port=${port:-"22003"} - queryport=${queryport:-"2326"} - httpport=${httpport:-"22005"} - ase=${ase:-"Disabled"} - servername=${servername:-"NOT SET"} - serverpassword=${serverpassword:-"NOT SET"} - maxplayers=${maxplayers:-"0"} + ase="Disabled" fi - + port="${port:-"0"}" + queryport="$((port + 123))" + httpport="${httpport:-"0"}" + ase="${ase:-"Disabled"}" + servername="${servername:-"NOT SET"}" + serverpassword="${serverpassword:-"NOT SET"}" + maxplayers="${maxplayers:-"0"}" } # Config Type: custom