|
|
@ -1883,38 +1883,39 @@ fn_info_game_scpsl() { |
|
|
|
# Filetype: xml |
|
|
|
fn_info_game_sdtd() { |
|
|
|
if [ -f "${servercfgfullpath}" ]; then |
|
|
|
fn_info_game_xml "gamemode" "ServerSettings/@GameMode" |
|
|
|
fn_info_game_xml "maxplayers" "ServerSettings/@MaxPlayers" |
|
|
|
fn_info_game_xml "servername" "ServerSettings/@ServerName" |
|
|
|
fn_info_game_xml "serverpassword" "ServerSettings/@ServerPassword" |
|
|
|
fn_info_game_xml "serverport" "ServerSettings/@ServerPort" |
|
|
|
fn_info_game_xml "telnetenabled" "ServerSettings/@TelnetEnabled" |
|
|
|
fn_info_game_xml "telnetpass" "ServerSettings/@TelnetPassword" |
|
|
|
fn_info_game_xml "telnetport" "ServerSettings/@TelnetPort" |
|
|
|
fn_info_game_xml "httpenabled" "ServerSettings/@ControlPanelEnabled" |
|
|
|
fn_info_game_xml "httppassword" "ServerSettings/@ControlPanelPassword" |
|
|
|
fn_info_game_xml "httpport" "ServerSettings/@ControlPanelPort" |
|
|
|
fn_info_game_xml "worldname" "ServerSettings/@GameWorld" |
|
|
|
|
|
|
|
fn_info_game_xml "gamemode" "/ServerSettings/property[@name='GameMode']/@value" |
|
|
|
fn_info_game_xml "httpenabled" "/ServerSettings/property[@name='ControlPanelEnabled']/@value" |
|
|
|
fn_info_game_xml "httppassword" "/ServerSettings/property[@name='ControlPanelPassword']/@value" |
|
|
|
fn_info_game_xml "httpport" "/ServerSettings/property[@name='ControlPanelPort']/@value" |
|
|
|
fn_info_game_xml "maxplayers" "/ServerSettings/property[@name='ServerMaxPlayerCount']/@value" |
|
|
|
fn_info_game_xml "servername" "/ServerSettings/property[@name='ServerName']/@value" |
|
|
|
fn_info_game_xml "serverpassword" "/ServerSettings/property[@name='ServerPassword']/@value" |
|
|
|
fn_info_game_xml "port" "/ServerSettings/property[@name='ServerPort']/@value" |
|
|
|
fn_info_game_xml "telnetenabled" "/ServerSettings/property[@name='TelnetEnabled']/@value" |
|
|
|
fn_info_game_xml "telnetpass" "/ServerSettings/property[@name='TelnetPassword']/@value" |
|
|
|
fn_info_game_xml "telnetport" "/ServerSettings/property[@name='TelnetPort']/@value" |
|
|
|
fn_info_game_xml "worldname" "/ServerSettings/property[@name='GameWorld']/@value" |
|
|
|
fi |
|
|
|
servername="${servername:-"NOT SET"}" |
|
|
|
serverpassword="${serverpassword:-"NOT SET"}" |
|
|
|
port="${port:-"0"}" |
|
|
|
queryport="${queryport:-"0"}" |
|
|
|
gamemode="${gamemode:-"NOT SET"}" |
|
|
|
httpenabled="${httpenabled:-"NOT SET"}" |
|
|
|
httpport="${httpport:-"0"}" |
|
|
|
httppassword="${httppassword:-"NOT SET"}" |
|
|
|
telnetenabled="${telnetenabled:-"NOT SET"}" |
|
|
|
telnetport="${telnetport:-"0"}" |
|
|
|
telnetpass="${telnetpass:-"NOT SET"}" |
|
|
|
httpport="${httpport:-"0"}" |
|
|
|
maxplayers="${maxplayers:-"0"}" |
|
|
|
gamemode="${gamemode:-"NOT SET"}" |
|
|
|
worldname="${worldname:-"NOT SET"}" |
|
|
|
port="${port:-"0"}" |
|
|
|
port3="$((port + 2))" |
|
|
|
queryport="${port:-"0"}" |
|
|
|
servername="${servername:-"NOT SET"}" |
|
|
|
serverpassword="${serverpassword:-"NOT SET"}" |
|
|
|
telnetenabled="${telnetenabled:-"NOT SET"}" |
|
|
|
# Telnet IP will be localhost if no password is set |
|
|
|
# check_ip will set the IP first. This will overwrite it. |
|
|
|
if [ -z "${telnetpass}" ]; then |
|
|
|
telnetip="127.0.0.1" |
|
|
|
fi |
|
|
|
telnetpass="${telnetpass:-"NOT SET"}" |
|
|
|
telnetport="${telnetport:-"0"}" |
|
|
|
worldname="${worldname:-"NOT SET"}" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
# Config Type: Parameters (with an ini) |
|
|
@ -2443,12 +2444,12 @@ if [ -z "${displaymasterserver}" ]; then |
|
|
|
if [ "$(command -v jq 2> /dev/null)" ]; then |
|
|
|
if [ -n "${ip}" ] && [ -n "${port}" ]; then |
|
|
|
if [ "${steammaster}" == "true" ] || [ "${commandname}" == "DEV-QUERY-RAW" ]; then |
|
|
|
# Query external IP first as most likely to succeed. |
|
|
|
masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${extip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" 'if .response.servers != null then .response.servers[] | select((.gameport == ($port|tonumber) or .gameport == ($queryport|tonumber))) | .addr else empty end' | wc -l 2> /dev/null)" |
|
|
|
# Query external IP first as most liky to succeed. |
|
|
|
masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${extip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" --arg port3 "${port3}" 'if .response.servers != null then .response.servers[] | select((.gameport == ($port|tonumber) or .gameport == ($queryport|tonumber) or .gameport == ($port3|tonumber))) | .addr else empty end' | wc -l 2> /dev/null)" |
|
|
|
if [ "${masterserver}" == "0" ]; then |
|
|
|
# Loop though server IP addresses if external IP fails. |
|
|
|
for queryip in "${queryips[@]}"; do |
|
|
|
masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${queryip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" 'if .response.servers != null then .response.servers[] | select((.gameport == ($port|tonumber) or .gameport == ($queryport|tonumber))) | .addr else empty end' | wc -l 2> /dev/null)" |
|
|
|
masterserver="$(curl --connect-timeout 10 -m 3 -s "https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=${queryip}&format=json" | jq --arg port "${port}" --arg queryport "${queryport}" --arg port3 "${port3}" 'if .response.servers != null then .response.servers[] | select((.gameport == ($port|tonumber) or .gameport == ($queryport|tonumber) or .gameport == ($port3|tonumber))) | .addr else empty end' | wc -l 2> /dev/null)" |
|
|
|
done |
|
|
|
fi |
|
|
|
if [ "${masterserver}" == "0" ]; then |
|
|
|