info_config.sh 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393
  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. serverpassword="${unavailable}"
  65. rconpassword="${unavailable}"
  66. slots="${zero}"
  67. port="${zero}"
  68. gameworld="${unavailable}"
  69. else
  70. servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '\')
  71. serverpassword=$(grep "^Password=$" "${servercfgfullpath}" | sed 's/Password=//g' | tr -d '\')
  72. rconpassword=$(grep "RCONPassword=" "${servercfgfullpath}" | sed 's/RCONPassword=//g' | tr -d '\')
  73. slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  74. port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  75. gameworld=$(grep "Map=" "${servercfgfullpath}" | sed 's/Map=//g' | tr -d '\n')
  76. # Not Set
  77. servername=${servername:-"NOT SET"}
  78. serverpassword=${serverpassword:-"NOT SET"}
  79. rconpassword=${rconpassword:-"NOT SET"}
  80. slots=${slots:-"NOT SET"}
  81. port=${port:-"NOT SET"}
  82. gameworld=${gameworld:-"NOT SET"}
  83. fi
  84. }
  85. fn_info_config_idtech3(){
  86. if [ ! -f "${servercfgfullpath}" ]; then
  87. servername="${unavailable}"
  88. serverpassword="${unavailable}"
  89. slots="${zero}"
  90. else
  91. servername=$(grep "set sv_hostname " "${servercfgfullpath}" | sed 's/set sv_hostname //g' | tr -d '=\"; ')
  92. serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed 's/set g_password//g' | tr -d '=\"; '| cut -f1 -d "/")
  93. slots=$(grep "set sv_maxClients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  94. # Not Set
  95. servername=${servername:-"NOT SET"}
  96. serverpassword=${serverpassword:-"NOT SET"}
  97. slots=${slots:-"0"}
  98. fi
  99. }
  100. fn_info_config_realvirtuality(){
  101. if [ ! -f "${servercfgfullpath}" ]; then
  102. servername="${unavailable}"
  103. adminpassword="${unavailable}"
  104. serverpassword="${unavailable}"
  105. slots="${zero}"
  106. else
  107. servername=$(grep "hostname" "${servercfgfullpath}" | grep -v "//" | sed 's/\<hostname\>//g' | tr -d '=\"; ')
  108. adminpassword=$(grep "passwordAdmin" "${servercfgfullpath}" | grep -v "//" | sed 's/\passwordAdmin//g' | tr -d '=\"; ')
  109. serverpassword=$(grep "password =" "${servercfgfullpath}" | grep -v "//" | sed 's/\password//g' | tr -d '=\"; ')
  110. slots=$(grep "maxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  111. # Not Set
  112. servername=${servername:-"NOT SET"}
  113. adminpassword=${adminpassword:-"NOT SET"}
  114. serverpassword=${serverpassword:-"NOT SET"}
  115. slots=${slots:-"0"}
  116. fi
  117. }
  118. fn_info_config_seriousengine35(){
  119. if [ ! -f "${servercfgfullpath}" ]; then
  120. servername="${unavailable}"
  121. rconpassword="${unavailable}"
  122. gamemode="${unavailable}"
  123. slots="${zero}"
  124. port="${zero}"
  125. else
  126. servername=$(grep "prj_strMultiplayerSessionName" "${servercfgfullpath}" | sed 's/prj_strMultiplayerSessionName = //g' | tr -d '=\"; ')
  127. rconpassword=$(grep "rcts_strAdminPassword" "${servercfgfullpath}" | sed 's/rcts_strAdminPassword = //g' | tr -d '=\"; ')
  128. gamemode=$(grep "gam_idGameMode" "${servercfgfullpath}" | grep -v "#" | sed 's/gam_idGameMode//g' | tr -d '=\"; ')
  129. slots=$(grep "gam_ctMaxPlayers" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
  130. port=$(grep "prj_uwPort" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
  131. # Not Set
  132. servername=${servername:-"NOT SET"}
  133. rconpassword=${rconpassword:-"NOT SET"}
  134. gamemode=${gamemode:-"NOT SET"}
  135. slots=${slots:-"0"}
  136. port=${port:-"0"}
  137. fi
  138. }
  139. fn_info_config_source(){
  140. if [ ! -f "${servercfgfullpath}" ]; then
  141. servername="${unavailable}"
  142. serverpassword="${unavailable}"
  143. rconpassword="${unavailable}"
  144. else
  145. servername=$(grep "hostname" "${servercfgfullpath}" | sed 's/hostname //g' | sed 's/"//g')
  146. serverpassword=$(grep "sv_password" "${servercfgfullpath}" | sed 's/sv_password //g' | sed 's/"//g')
  147. rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed 's/rcon_password //g' | sed 's/"//g')
  148. # Not Set
  149. servername=${servername:-"NOT SET"}
  150. serverpassword=${serverpassword:-"NOT SET"}
  151. rconpassword=${rconpassword:-"NOT SET"}
  152. fi
  153. }
  154. fn_info_config_starbound(){
  155. if [ ! -f "${servercfgfullpath}" ]; then
  156. servername="${unavailable}"
  157. rconpassword="${unavailable}"
  158. port="21025"
  159. queryport="21025"
  160. rconport="21026"
  161. slots="8"
  162. else
  163. servername=$(grep "serverName" "${servercfgfullpath}" | sed 's/"serverName" \: //g' | grep -oP '"\K[^"]+(?=["])')
  164. rconpassword=$(grep "rconServerPassword" "${servercfgfullpath}" | sed 's/"rconServerPassword" \: //g' | grep -oP '"\K[^"]+(?=["])')
  165. port=$(grep "gameServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  166. queryport=$(grep "queryServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  167. rconport=$(grep "rconServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  168. slots=$(grep "maxPlayers" "${servercfgfullpath}" | tr -cd '[:digit:]')
  169. # Not Set
  170. servername=${servername:-"NOT SET"}
  171. rconpassword=${rconpassword:-"NOT SET"}
  172. port=${port:-"21025"}
  173. queryport=${queryport:-"21025"}
  174. rconport=${rconport:-"21026"}
  175. slots=${slots:-"8"}
  176. fi
  177. }
  178. fn_info_config_teamspeak3(){
  179. if [ ! -f "${servercfgfullpath}" ]; then
  180. dbplugin="${unavailable}"
  181. port="9987"
  182. queryport="10011"
  183. fileport="30033"
  184. else
  185. # check if the ip exists in the config file. Failing this will fall back to the default.
  186. ipconfigcheck=$(grep "voice_ip=" "${servercfgfullpath}" | sed 's/voice_ip=//g')
  187. if [ -n "${ipconfigcheck}" ]; then
  188. ip="${ipconfigcheck}"
  189. fi
  190. dbplugin=$(grep "dbplugin=" "${servercfgfullpath}" | sed 's/dbplugin=//g')
  191. port=$(grep "default_voice_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  192. queryport=$(grep "query_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  193. fileport=$(grep "filetransfer_port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  194. # Not Set
  195. port=${port:-"9987"}
  196. queryport=${queryport:-"10011"}
  197. fileport=${fileport:-"30033"}
  198. fi
  199. }
  200. fn_info_config_teeworlds(){
  201. if [ ! -f "${servercfgfullpath}" ]; then
  202. servername="unnamed server"
  203. serverpassword="${unavailable}"
  204. rconpassword="${unavailable}"
  205. port="8303"
  206. slots="12"
  207. else
  208. servername=$(grep "sv_name" "${servercfgfullpath}" | sed 's/sv_name //g' | sed 's/"//g')
  209. serverpassword=$(grep "password " "${servercfgfullpath}" | awk '!/sv_rcon_password/'| sed 's/password //g' | tr -d '=\"; ')
  210. rconpassword=$(grep "sv_rcon_password" "${servercfgfullpath}" | sed 's/sv_rcon_password //g' | tr -d '=\"; ')
  211. port=$(grep "sv_port" "${servercfgfullpath}" | tr -cd '[:digit:]')
  212. slots=$(grep "sv_max_clients" "${servercfgfullpath}" | tr -cd '[:digit:]')
  213. # Not Set
  214. servername=${servername:-"NOT SET"}
  215. serverpassword=${serverpassword:-"NOT SET"}
  216. rconpassword=${rconpassword:-"NOT SET"}
  217. port=${port:-"8303"}
  218. slots=${slots:-"12"}
  219. fi
  220. }
  221. fn_info_config_terraria(){
  222. if [ ! -f "${servercfgfullpath}" ]; then
  223. servername="${unavailable}"
  224. port="${zero}"
  225. gameworld="${unavailable}"
  226. slots="${zero}"
  227. else
  228. servername=$(grep "worldname=" "${servercfgfullpath}" | sed 's/worldname=//g')
  229. port=$(grep "port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
  230. gameworld=$(grep "world=" "${servercfgfullpath}" | sed 's/world=//g')
  231. slots=$(grep "maxplayers=" "${servercfgfullpath}" | sed 's/maxplayers=//g')
  232. # Not Set
  233. servername=${servername:-"NOT SET"}
  234. port=${port:-"0"}
  235. gameworld=${gameworld:-"NOT SET"}
  236. slots=${slots:-"0"}
  237. fi
  238. }
  239. fn_info_config_unreal(){
  240. if [ ! -f "${servercfgfullpath}" ]; then
  241. servername="${unavailable}"
  242. serverpassword="${unavailable}"
  243. adminpassword="${unavailable}"
  244. port="${zero}"
  245. gsqueryport="${zero}"
  246. webadminenabled="${unavailable}"
  247. webadminport="${zero}"
  248. webadminuser="${unavailable}"
  249. webadminpass="${unavailable}"
  250. else
  251. servername=$(grep "ServerName=" "${servercfgfullpath}" | sed 's/ServerName=//g')
  252. serverpassword=$(grep "GamePassword=" "${servercfgfullpath}" | sed 's/GamePassword=//g')
  253. adminpassword=$(grep "AdminPassword=" "${servercfgfullpath}" | sed 's/AdminPassword=//g')
  254. port=$(grep "Port=" "${servercfgfullpath}" | grep -v "Master" | grep -v "LAN" | grep -v "Proxy" | grep -v "Listen" | tr -d '\r' | tr -cd '[:digit:]')
  255. gsqueryport=$(grep "OldQueryPortNumber=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
  256. webadminenabled=$(grep "bEnabled=" "${servercfgfullpath}" | sed 's/bEnabled=//g' | tr -d '\r')
  257. webadminport=$(grep "ListenPort=" "${servercfgfullpath}" | tr -d '\r' | tr -cd '[:digit:]')
  258. if [ "${engine}" == "unreal" ]; then
  259. webadminuser=$(grep "AdminUsername=" "${servercfgfullpath}" | sed 's/AdminUsername=//g')
  260. webadminpass=$(grep "UTServerAdmin.UTServerAdmin" "${servercfgfullpath}" -A 2 | grep "AdminPassword=" | sed 's/AdminPassword=//g')
  261. else
  262. webadminuser=$(grep "AdminName=" "${servercfgfullpath}" | sed 's/AdminName=//g')
  263. webadminpass="${adminpassword}"
  264. fi
  265. # Not Set
  266. servername=${servername:-"NOT SET"}
  267. serverpassword=${serverpassword:-"NOT SET"}
  268. adminpassword=${adminpassword:-"NOT SET"}
  269. port=${port:-"0"}
  270. gsqueryport=${gsqueryport:-"0"}
  271. webadminenabled=${webadminenabled:-"NOT SET"}
  272. webadminport=${webadminport:-"0"}
  273. webadminuser=${webadminuser:-"NOT SET"}
  274. webadminpass=${webadminpass:-"NOT SET"}
  275. fi
  276. }
  277. fn_info_config_sdtd(){
  278. if [ ! -f "${servercfgfullpath}" ]; then
  279. servername="${unavailable}"
  280. serverpassword="${unavailable}"
  281. port="${zero}"
  282. queryport="${zero}"
  283. webadminenabled="${unavailable}"
  284. webadminport="${zero}"
  285. webadminpass="${unavailable}"
  286. telnetenabled="${unavailable}"
  287. telnetport="${zero}"
  288. telnetpass="${unavailable}"
  289. slots="${unavailable}"
  290. gamemode="${unavailable}"
  291. gameworld="${unavailable}"
  292. else
  293. servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
  294. serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
  295. port=$(grep "ServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  296. queryport=$((port + 1))
  297. webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
  298. webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  299. webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
  300. telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
  301. telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
  302. telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
  303. slots=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]')
  304. gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
  305. gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
  306. # Not Set
  307. servername=${servername:-"NOT SET"}
  308. serverpassword=${serverpassword:-"NOT SET"}
  309. port=${port:-"0"}
  310. queryport=${queryport:-"0"}
  311. webadminenabled=${webadminenabled:-"NOT SET"}
  312. webadminport=${webadminport:-"0"}
  313. webadminpass=${webadminpass:-"NOT SET"}
  314. telnetenabled=${telnetenabled:-"NOT SET"}
  315. telnetport=${telnetport:-"0"}
  316. telnetpass=${telnetpass:-"NOT SET"}
  317. slots=${slots:-"NOT SET"}
  318. gamemode=${gamemode:-"NOT SET"}
  319. gameworld=${gameworld:-"NOT SET"}
  320. fi
  321. }
  322. ## Just Cause 2
  323. if [ "${engine}" == "avalanche" ]; then
  324. fn_info_config_avalanche
  325. ## Dont Starve Together
  326. elif [ "${engine}" == "dontstarve" ]; then
  327. fn_info_config_dontstarve
  328. ## Project Zomboid
  329. elif [ "${engine}" == "projectzomboid" ]; then
  330. fn_info_config_projectzomboid
  331. # Quake Love
  332. elif [ "${engine}" == "idtech3" ]; then
  333. fn_info_config_idtech3
  334. # ARMA 3
  335. elif [ "${engine}" == "realvirtuality" ]; then
  336. fn_info_config_realvirtuality
  337. # Serious Sam
  338. elif [ "${engine}" == "seriousengine35" ]; then
  339. fn_info_config_seriousengine35
  340. # Source Engine Games
  341. elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
  342. fn_info_config_source
  343. # Starbound
  344. elif [ "${engine}" == "starbound" ]; then
  345. fn_info_config_starbound
  346. # TeamSpeak 3
  347. elif [ "${gamename}" == "Teamspeak 3" ]; then
  348. fn_info_config_teamspeak3
  349. # Teeworlds
  350. elif [ "${engine}" == "teeworlds" ]; then
  351. fn_info_config_teeworlds
  352. # Terraria
  353. elif [ "${engine}" == "terraria" ]; then
  354. fn_info_config_terraria
  355. # Unreal/Unreal 2 engine
  356. elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
  357. fn_info_config_unreal
  358. # 7 Day To Die (unity3d)
  359. elif [ "${gamename}" == "7 Days To Die" ]; then
  360. fn_info_config_sdtd
  361. fi