info_config.sh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. #!/bin/bash
  2. # LGSM info_config.sh function
  3. # Author: Daniel Gibbs
  4. # Website: https://gameservermanagers.com
  5. # Description: Gets specific details from config files.
  6. local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
  7. ## Examples of filtering to get info from config files
  8. # sed 's/foo//g' - remove foo
  9. # tr -cd '[:digit:]' leave only digits
  10. # tr -d '=\"; ' remove selected charectors =\";
  11. # grep -v "foo" filter out lines that contain foo
  12. unavailable="${red}UNAVAILABLE${default}"
  13. zero="${red}0${default}"
  14. fn_info_config_avalanche(){
  15. if [ ! -f "${servercfgfullpath}" ]; then
  16. servername="${unavailable}"
  17. serverpassword="${unavailable}"
  18. slots="${zero}"
  19. port="${zero}"
  20. else
  21. servername=$(grep "Name" "${servercfgfullpath}" | sed 's/Name//g' | tr -d '=", \n')
  22. serverpassword=$(grep "Password" "${servercfgfullpath}" | sed 's/Password//g' | tr -d '=", \n')
  23. slots=$(grep "MaxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]')
  24. port=$(grep "BindPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  25. # Not Set
  26. servername=${servername:-"NOT SET"}
  27. serverpassword=${serverpassword:-"NOT SET"}
  28. slots=${slots:-"0"}
  29. port=${port:-"0"}
  30. # check if the ip exists in the config file. Failing this will fall back to the default.
  31. ipconfigcheck=$(grep "BindIP" "${servercfgfullpath}" | sed 's/BindIP//g' | tr -d '=", \n')
  32. if [ -n "${ipconfigcheck}" ]; then
  33. ip="${ipconfigcheck}"
  34. fi
  35. fi
  36. }
  37. fn_info_config_dontstarve(){
  38. if [ ! -f "${servercfgfullpath}" ]; then
  39. servername="${unavailable}"
  40. serverpassword="${unavailable}"
  41. slots="${zero}"
  42. gamemode="${unavailable}"
  43. tickrate="${zero}"
  44. port="${zero}"
  45. else
  46. servername=$(grep "default_server_name = " "${servercfgfullpath}" | sed 's/default_server_name = //g')
  47. serverpassword=$(grep "server_password = " "${servercfgfullpath}" | grep -v "#" | sed 's/server_password = //g')
  48. slots=$(grep "max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  49. gamemode=$(grep "game_mode = " "${servercfgfullpath}" | grep -v "#" | sed 's/game_mode = //g')
  50. tickrate=$(grep "tick_rate" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  51. port=$(grep "server_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  52. # Not Set
  53. servername=${servername:-"NOT SET"}
  54. serverpassword=${serverpassword:-"NOT SET"}
  55. slots=${slots:-"0"}
  56. gamemode=${gamemode:-"NOT SET"}
  57. tickrate=${tickrate:-"0"}
  58. port=${port:-"0"}
  59. fi
  60. }
  61. fn_info_config_projectzomboid(){
  62. if [ ! -f "${servercfgfullpath}" ]; then
  63. servername="${unavailable}"
  64. slots="${zero}"
  65. port="${zero}"
  66. else
  67. servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '=", \n')
  68. slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  69. port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  70. # Not Set
  71. servername=${servername:-"NOT SET"}
  72. slots=${slots:-"0"}
  73. port=${port:-"0"}
  74. fi
  75. }
  76. fn_info_config_idtech3(){
  77. if [ ! -f "${servercfgfullpath}" ]; then
  78. servername="${unavailable}"
  79. serverpassword="${unavailable}"
  80. slots="${zero}"
  81. else
  82. servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ')
  83. serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/")
  84. slots=$(grep "set sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  85. # Not Set
  86. servername=${servername:-"NOT SET"}
  87. serverpassword=${serverpassword:-"NOT SET"}
  88. slots=${slots:-"0"}
  89. fi
  90. }
  91. fn_info_config_realvirtuality(){
  92. if [ ! -f "${servercfgfullpath}" ]; then
  93. servername="${unavailable}"
  94. adminpassword="${unavailable}"
  95. serverpassword="${unavailable}"
  96. slots="${zero}"
  97. else
  98. servername=$(grep "hostname" "${servercfgfullpath}" | grep -v "//" | sed 's/\<hostname\>//g' | tr -d '=\"; ')
  99. adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | grep -v "//" | sed 's/\passwordAdmin//g' | tr -d '=\"; ')
  100. serverpassword=$(grep "password =" "${servercfgfullpath}" | grep -v "//" | sed 's/\password//g' | tr -d '=\"; ')
  101. slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  102. # Not Set
  103. servername=${servername:-"NOT SET"}
  104. adminpassword=${adminpassword:-"NOT SET"}
  105. serverpassword=${serverpassword:-"NOT SET"}
  106. slots=${slots:-"0"}
  107. fi
  108. }
  109. fn_info_config_seriousengine35(){
  110. if [ ! -f "${servercfgfullpath}" ]; then
  111. servername="${unavailable}"
  112. rconpassword="${unavailable}"
  113. gamemode="${unavailable}"
  114. slots="${zero}"
  115. port="${zero}"
  116. else
  117. servername=$(grep "prj_strMultiplayerSessionName" "${servercfgfullpath}" | sed 's/prj_strMultiplayerSessionName = //g' | tr -d '=\"; ')
  118. rconpassword=$(grep "rcts_strAdminPassword" "${servercfgfullpath}" | sed 's/rcts_strAdminPassword = //g' | tr -d '=\"; ')
  119. gamemode=$(grep "gam_idGameMode" "${servercfgfullpath}" | grep -v "#" | sed 's/gam_idGameMode//g' | tr -d '=\"; ')
  120. slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  121. port=$(grep "prj_uwPort" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
  122. # Not Set
  123. servername=${servername:-"NOT SET"}
  124. rconpassword=${rconpassword:-"NOT SET"}
  125. gamemode=${gamemode:-"NOT SET"}
  126. slots=${slots:-"0"}
  127. port=${port:-"0"}
  128. fi
  129. }
  130. fn_info_config_source(){
  131. if [ ! -f "${servercfgfullpath}" ]; then
  132. servername="${unavailable}"
  133. serverpassword="${unavailable}"
  134. rconpassword="${unavailable}"
  135. else
  136. servername=$(grep "hostname" "${servercfgfullpath}" | sed 's/hostname //g' | sed 's/"//g')
  137. serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed 's/sv_password //g' | sed 's/"//g')
  138. rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed 's/rcon_password //g' | sed 's/"//g')
  139. # Not Set
  140. servername=${servername:-"NOT SET"}
  141. serverpassword=${serverpassword:-"NOT SET"}
  142. rconpassword=${rconpassword:-"NOT SET"}
  143. fi
  144. }
  145. fn_info_config_starbound(){
  146. if [ ! -f "${servercfgfullpath}" ]; then
  147. servername="${unavailable}"
  148. rconpassword="${unavailable}"
  149. port="21025"
  150. queryport="21025"
  151. rconport="21026"
  152. slots="8"
  153. else
  154. servername=$(grep "serverName" "${servercfgfullpath}" | sed 's/"serverName" \: //g' | grep -oP '"\K[^"]+(?=["])')
  155. rconpassword=$(grep "rconServerPassword" "${servercfgfullpath}" | sed 's/"rconServerPassword" \: //g' | grep -oP '"\K[^"]+(?=["])')
  156. port=$(grep "gameServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  157. queryport=$(grep "queryServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  158. rconport=$(grep "rconServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  159. slots=$(grep "maxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]')
  160. # Not Set
  161. servername=${servername:-"NOT SET"}
  162. rconpassword=${rconpassword:-"NOT SET"}
  163. port=${port:-"21025"}
  164. queryport=${queryport:-"21025"}
  165. rconport=${rconport:-"21026"}
  166. slots=${slots:-"8"}
  167. fi
  168. }
  169. fn_info_config_teamspeak3(){
  170. if [ ! -f "${servercfgfullpath}" ]; then
  171. dbplugin="${unavailable}"
  172. port="9987"
  173. queryport="10011"
  174. fileport="30033"
  175. else
  176. # check if the ip exists in the config file. Failing this will fall back to the default.
  177. ipconfigcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/voice_ip=//g')
  178. if [ -n "${ipconfigcheck}" ]; then
  179. ip="${ipconfigcheck}"
  180. fi
  181. dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/dbplugin=//g')
  182. port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  183. queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  184. fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  185. # Not Set
  186. port=${port:-"9987"}
  187. queryport=${queryport:-"10011"}
  188. fileport=${fileport:-"30033"}
  189. fi
  190. }
  191. fn_info_config_teeworlds(){
  192. if [ ! -f "${servercfgfullpath}" ]; then
  193. servername="unnamed server"
  194. serverpassword="${unavailable}"
  195. rconpassword="${unavailable}"
  196. port="8303"
  197. slots="12"
  198. else
  199. servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g')
  200. serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ')
  201. rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ')
  202. port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]')
  203. slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]')
  204. # Not Set
  205. servername=${servername:-"NOT SET"}
  206. serverpassword=${serverpassword:-"NOT SET"}
  207. rconpassword=${rconpassword:-"NOT SET"}
  208. port=${port:-"8303"}
  209. slots=${slots:-"12"}
  210. fi
  211. }
  212. fn_info_config_terraria(){
  213. if [ ! -f "${servercfgfullpath}" ]; then
  214. servername="${unavailable}"
  215. port="${zero}"
  216. gameworld="${unavailable}"
  217. slots="${zero}"
  218. else
  219. servername=$(grep "worldname=" "${servercfgfullpath}" | sed 's/worldname=//g')
  220. port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  221. gameworld=$(grep "world=" "${servercfgfullpath}" | sed 's/world=//g')
  222. slots=$(grep "maxplayers=" "${servercfgfullpath}" | sed 's/maxplayers=//g')
  223. # Not Set
  224. servername=${servername:-"NOT SET"}
  225. port=${port:-"0"}
  226. gameworld=${gameworld:-"NOT SET"}
  227. slots=${slots:-"0"}
  228. fi
  229. }
  230. fn_info_config_unreal(){
  231. if [ ! -f "${servercfgfullpath}" ]; then
  232. servername="${unavailable}"
  233. serverpassword="${unavailable}"
  234. adminpassword="${unavailable}"
  235. port="${zero}"
  236. gsqueryport="${zero}"
  237. webadminenabled="${unavailable}"
  238. webadminport="${zero}"
  239. webadminuser="${unavailable}"
  240. webadminpass="${unavailable}"
  241. else
  242. servername=$(grep "ServerName=" "${servercfgfullpath}" | sed 's/ServerName=//g')
  243. serverpassword=$(grep "GamePassword=" "${servercfgfullpath}" | sed 's/GamePassword=//g')
  244. adminpassword=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/AdminPassword=//g')
  245. port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd '[:digit:]')
  246. gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
  247. webadminenabled=$(grep "bEnabled=" "${servercfgfullpath}" | sed 's/bEnabled=//g' | tr -d '\r')
  248. webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
  249. if [ "${engine}" == "unreal" ]; then
  250. webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/AdminUsername=//g')
  251. webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/AdminPassword=//g')
  252. else
  253. webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/AdminName=//g')
  254. webadminpass="${adminpassword}"
  255. fi
  256. # Not Set
  257. servername=${servername:-"NOT SET"}
  258. serverpassword=${serverpassword:-"NOT SET"}
  259. adminpassword=${adminpassword:-"NOT SET"}
  260. port=${port:-"0"}
  261. gsqueryport=${gsqueryport:-"0"}
  262. webadminenabled=${webadminenabled:-"NOT SET"}
  263. webadminport=${webadminport:-"0"}
  264. webadminuser=${webadminuser:-"NOT SET"}
  265. webadminpass=${webadminpass:-"NOT SET"}
  266. fi
  267. }
  268. ## Just Cause 2
  269. if [ "${engine}" == "avalanche" ]; then
  270. fn_info_config_avalanche
  271. ## Dont Starve Together
  272. elif [ "${engine}" == "dontstarve" ]; then
  273. fn_info_config_dontstarve
  274. ## Project Zomboid
  275. elif [ "${engine}" == "projectzomboid" ]; then
  276. fn_info_config_projectzomboid
  277. # Quake Love
  278. elif [ "${engine}" == "idtech3" ]; then
  279. fn_info_config_idtech3
  280. # ARMA 3
  281. elif [ "${engine}" == "realvirtuality" ]; then
  282. fn_info_config_realvirtuality
  283. # Serious Sam
  284. elif [ "${engine}" == "seriousengine35" ]; then
  285. fn_info_config_seriousengine35
  286. # Source Engine Games
  287. elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
  288. fn_info_config_source
  289. # Starbound
  290. elif [ "${engine}" == "starbound" ]; then
  291. fn_info_config_starbound
  292. elif [ "${gamename}" == "Teamspeak 3" ]; then
  293. fn_info_config_teamspeak3
  294. # Teeworlds
  295. elif [ "${engine}" == "teeworlds" ]; then
  296. fn_info_config_teeworlds
  297. # Terraria
  298. elif [ "${engine}" == "terraria" ]; then
  299. fn_info_config_terraria
  300. # Unreal/Unreal 2 engine
  301. elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
  302. fn_info_config_unreal
  303. fi