info_config.sh 15 KB

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