info_config.sh 15 KB

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