diff --git a/lgsm/functions/info_parms.sh b/lgsm/functions/info_parms.sh new file mode 100644 index 000000000..d8a6ec26c --- /dev/null +++ b/lgsm/functions/info_parms.sh @@ -0,0 +1,175 @@ +#!/bin/bash +# LGSM info_parms.sh function +# Author: Daniel Gibbs +# Website: http://gameservermanagers.com +lgsm_version="010316" + +# Description: Gets specific details server parameters. + +## Examples of filtering to get info from config files +# sed 's/foo//g' - remove foo +# tr -cd '[:digit:]' leave only digits +# tr -d '=\"; ' remove selected charectors =\"; +# grep -v "foo" filter out lines that contain foo + +unavailable="\e[0;31mUNAVAILABLE\e[0m" +zero="\e[0;31m0\e[0m" + + +fn_info_config_idtech3(){ + # Not Set + gameport=${gameport:-"NOT SET"} + rconport=${rconport:-"0"} + rconpassword=${rconpassword:-"NOT SET"} + statsport=${statsport:-"0"} + statspassword=${statspassword:-"NOT SET"} + mappool=${mappool:-"NOT SET"} + rconpassword=${rconpassword:-"NOT SET"} +} + +fn_info_config_realvirtuality(){ + # Not Set + port=${rconport:-"0"} +} + +fn_info_config_seriousengine35(){ + +} + +fn_info_config_source(){ + defaultmap=${defaultmap:-"NOT SET"} + maxplayers=${maxplayers:-"0"} + port=${port:-"0"} + clientport=${clientport:-"0"} +} + +fn_info_config_teamspeak3(){ + if [ ! -f "${servercfgfullpath}" ]; then + dbplugin="${unavailable}" + port="9987" + queryport="10011" + fileport="30033" + else + # check if the ip exists in the config file. Failing this will fall back to the default. + ipconfigcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/\voice_ip=//g') + if [ -n "${ipconfigcheck}" ]; then + ip="${ipconfigcheck}" + fi + dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/\dbplugin=//g') + port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + + # Not Set + port=${port:-"9987"} + queryport=${queryport:-"10011"} + fileport=${fileport:-"30033"} + fi +} + +fn_info_config_teeworlds(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="unnamed server" + serverpassword="${unavailable}" + rconpassword="${unavailable}" + port="8303" + slots="12" + else + servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g') + serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ') + rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ') + port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]') + slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]') + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + rconpassword=${rconpassword:-"NOT SET"} + port=${port:-"8303"} + slots=${slots:-"12"} + fi +} + +fn_info_config_terraria(){ + if [ ! -f "${servercfgfullpath}" ]; then + port="0" + else + port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]') + + # Not Set + port=${port:-"0"} + fi +} + +fn_info_config_unreal(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + adminpassword="${unavailable}" + port="${zero}" + gsqueryport="${zero}" + webadminenabled="${unavailable}" + webadminport="${zero}" + webadminuser="${unavailable}" + webadminpass="${unavailable}" + else + servername=$(grep "ServerName=" "${servercfgfullpath}" | sed 's/ServerName=//g') + serverpassword=$(grep "GamePassword=" "${servercfgfullpath}" | sed 's/GamePassword=//g') + adminpassword=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/AdminPassword=//g') + port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd '[:digit:]') + gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') + webadminenabled=$(grep "bEnabled=" "${servercfgfullpath}" | sed 's/bEnabled=//g' | tr -d '\r') + webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]') + if [ "${engine}" == "unreal" ]; then + webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/\AdminUsername=//g') + webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/\AdminPassword=//g') + else + webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/\AdminName=//g') + webadminpass=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/\AdminPassword=//g') + fi + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + adminpassword=${adminpassword:-"NOT SET"} + port=${port:-"0"} + gsqueryport=${gsqueryport:-"NOT SET"} + webadminenabled=${webadminenabled:-"NOT SET"} + webadminport=${webadminport:-"NOT SET"} + webadminuser=${webadminuser:-"NOT SET"} + webadminpass=${webadminpass:-"NOT SET"} + fi +} + +## Just Cause 2 +if [ "${engine}" == "avalanche" ]; then + fn_info_config_avalanche +## Dont Starve Together +elif [ "${engine}" == "dontstarve" ]; then + fn_info_config_dontstarve +## Project Zomboid +elif [ "${engine}" == "projectzomboid" ]; then + fn_info_config_projectzomboid +# Quake Love +elif [ "${engine}" == "idtech3" ]; then + fn_info_config_idtech3 +# ARMA 3 +elif [ "${engine}" == "realvirtuality" ]; then + fn_info_config_realvirtuality +# Serious Sam +elif [ "${engine}" == "seriousengine35" ]; then + fn_info_config_seriousengine35 +# Source Engine Games +elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then + fn_info_config_source +elif [ "${gamename}" == "Teamspeak 3" ]; then + fn_info_config_teamspeak3 +# Teeworlds +elif [ "${engine}" == "teeworlds" ]; then + fn_info_config_teeworlds +elif [ "${engine}" == "terraria" ]; then + fn_info_config_terraria +# Unreal/Unreal 2 engine +elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then + fn_info_config_unreal +fi \ No newline at end of file