fn_details_config 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. #!/bin/bash
  2. # LGSM fn_details_config function
  3. # Author: Daniel Gibbs
  4. # Website: http://gameservermanagers.com
  5. # Version: 210715
  6. # Description: Gets specific details from config files.
  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. fn_servercfgfullpath(){
  13. if [ ! -f "${servercfgfullpath}" ]; then
  14. servercfgfullpath="\e[0;31mMISSING!\e[0m ${servercfgfullpath}"
  15. fi
  16. }
  17. ## Just Cause 2
  18. if [ "${engine}" == "avalanche" ]; then
  19. # ip
  20. if [ -f "${servercfgfullpath}" ]; then
  21. # check if the ip exists in the config file. Failing this will fall back to the default.
  22. configipcheck=$(grep "BindIP" "${servercfgfullpath}"|sed 's/BindIP//g'|tr -d '=", \n')
  23. fi
  24. if [ -n "${configipcheck}" ]; then
  25. ip=$(grep "BindIP" "${servercfgfullpath}"|sed 's/BindIP//g'|tr -d '=", \n')
  26. fi
  27. # server name
  28. if [ -f "${servercfgfullpath}" ]; then
  29. servername=$(grep -s "Name" "${servercfgfullpath}"|sed 's/Name//g'|tr -d '=", \n')
  30. if [ ! -n "${servername}" ]; then
  31. servername="NOT SET"
  32. fi
  33. else
  34. servername="\e[0;31mUNAVAILABLE\e[0m"
  35. fi
  36. # port
  37. if [ -f "${servercfgfullpath}" ]; then
  38. port=$(grep "BindPort" "${servercfgfullpath}"|tr -cd [:digit:])
  39. fi
  40. if [ ! -n "${port}" ]; then
  41. port="0"
  42. fi
  43. # server password
  44. if [ -f "${servercfgfullpath}" ]; then
  45. serverpassword=$(grep -s "Password" "${servercfgfullpath}"|sed 's/Password//g'|tr -d '=", \n')
  46. if [ ! -n "${serverpassword}" ]; then
  47. serverpassword="NOT SET"
  48. fi
  49. else
  50. serverpassword="\e[0;31mUNAVAILABLE\e[0m"
  51. fi
  52. # slots
  53. if [ -f "${servercfgfullpath}" ]; then
  54. slots=$(grep -s "MaxPlayers" "${servercfgfullpath}"|tr -cd [:digit:])
  55. if [ ! -n "${slots}" ]; then
  56. slots="NOT SET"
  57. fi
  58. else
  59. slots="\e[0;31mUNAVAILABLE\e[0m"
  60. fi
  61. fn_servercfgfullpath
  62. ## Dont Starve Together
  63. elif [ "${engine}" == "dontstarve" ]; then
  64. # server name
  65. if [ -f "${servercfgfullpath}" ]; then
  66. servername=$(grep -s "default_server_name = " "${servercfgfullpath}"|sed 's/default_server_name = //g')
  67. if [ ! -n "${servername}" ]; then
  68. servername="NOT SET"
  69. fi
  70. else
  71. servername="\e[0;31mUNAVAILABLE\e[0m"
  72. fi
  73. # port
  74. if [ -f "${servercfgfullpath}" ]; then
  75. port=$(grep -s "server_port" "${servercfgfullpath}"|grep -v "#"|tr -cd "[:digit:]")
  76. fi
  77. if [ ! -n "${port}" ]; then
  78. port="0"
  79. fi
  80. # server password
  81. if [ -f "${servercfgfullpath}" ]; then
  82. serverpassword=$(grep -s "server_password = " "${servercfgfullpath}"|grep -v "#"|sed 's/server_password = //g')
  83. if [ ! -n "${serverpassword}" ]; then
  84. serverpassword="NOT SET"
  85. fi
  86. else
  87. serverpassword="\e[0;31mUNAVAILABLE\e[0m"
  88. fi
  89. # slots
  90. if [ -f "${servercfgfullpath}" ]; then
  91. slots=$(grep -s "max_players" "${servercfgfullpath}"|grep -v "#"|tr -cd [:digit:])
  92. if [ ! -n "${slots}" ]; then
  93. slots="NOT SET"
  94. fi
  95. else
  96. slots="\e[0;31mUNAVAILABLE\e[0m"
  97. fi
  98. # game mode
  99. if [ -f "${servercfgfullpath}" ]; then
  100. gamemode=$(grep -s "game_mode = " "${servercfgfullpath}"|grep -v "#"|sed 's/game_mode = //g')
  101. if [ ! -n "${gamemode}" ]; then
  102. gamemode="NOT SET"
  103. fi
  104. else
  105. gamemode="\e[0;31mUNAVAILABLE\e[0m"
  106. fi
  107. # tickrate
  108. if [ -f "${servercfgfullpath}" ]; then
  109. tickrate=$(grep -s "tick_rate" "${servercfgfullpath}"|grep -v "#"|tr -cd [:digit:])
  110. if [ ! -n "${tickrate}" ]; then
  111. tickrate="NOT SET"
  112. fi
  113. else
  114. tickrate="\e[0;31mUNAVAILABLE\e[0m"
  115. fi
  116. ## Project Zomboid
  117. elif [ "${engine}" == "projectzomboid" ]; then
  118. # server name
  119. if [ -f "${servercfgfullpath}" ]; then
  120. servername=$(grep -s "PublicName=" "${servercfgfullpath}"|sed 's/PublicName=//g'|tr -d '=", \n')
  121. if [ ! -n "${servername}" ]; then
  122. servername="NOT SET"
  123. fi
  124. else
  125. servername="\e[0;31mUNAVAILABLE\e[0m"
  126. fi
  127. # port
  128. if [ -f "${servercfgfullpath}" ]; then
  129. port=$(grep -s "DefaultPort=" "${servercfgfullpath}"|tr -cd [:digit:])
  130. fi
  131. if [ ! -n "${port}" ]; then
  132. port="0"
  133. fi
  134. # slots
  135. if [ -f "${servercfgfullpath}" ]; then
  136. slots=$(grep -s "MaxPlayers=" "${servercfgfullpath}"|grep -v "#"|tr -cd [:digit:])
  137. if [ ! -n "${slots}" ]; then
  138. slots="NOT SET"
  139. fi
  140. else
  141. slots="\e[0;31mUNAVAILABLE\e[0m"
  142. fi
  143. fn_servercfgfullpath
  144. elif [ "${engine}" == "realvirtuality" ]; then
  145. # server name
  146. if [ -f "${servercfgfullpath}" ]; then
  147. servername=$(grep -s "hostname" "${servercfgfullpath}"| grep -v //|sed -e 's/\<hostname\>//g'| tr -d '=\"; ')
  148. if [ ! -n "${servername}" ]; then
  149. servername="NOT SET"
  150. fi
  151. else
  152. servername="\e[0;31mUNAVAILABLE\e[0m"
  153. fi
  154. # port
  155. if [ -f "${servercfgfullpath}" ]; then
  156. port=$(grep -s "serverport=" "${servercfgfullpath}"|grep -v //|tr -d '\r'|tr -cd [:digit:])
  157. fi
  158. if [ ! -n "${port}" ]; then
  159. port="0"
  160. fi
  161. # query port
  162. if [ -f "${servercfgfullpath}" ]; then
  163. queryport=$(grep -s "steamqueryport=" "${servercfgfullpath}"|grep -v //|tr -d '\r'|tr -cd [:digit:])
  164. fi
  165. if [ ! -n "${queryport}" ]; then
  166. queryport="0"
  167. fi
  168. # master port
  169. if [ -f "${servercfgfullpath}" ]; then
  170. masterport=$(grep -s "steamport=" "${servercfgfullpath}"|grep -v //|tr -d '\r'|tr -cd [:digit:])
  171. fi
  172. if [ ! -n "${masterport}" ]; then
  173. masterport="0"
  174. fi
  175. # slots
  176. if [ -f "${servercfgfullpath}" ]; then
  177. slots=$(grep -s "maxPlayers" "${servercfgfullpath}"|grep -v "#"|tr -cd [:digit:])
  178. if [ ! -n "${slots}" ]; then
  179. slots="NOT SET"
  180. fi
  181. else
  182. slots="\e[0;31mUNAVAILABLE\e[0m"
  183. fi
  184. # admin password
  185. if [ -f "${servercfgfullpath}" ]; then
  186. adminpassword=$(grep -s "password =" "${servercfgfullpath}"|grep -v //|sed -e 's/\password//g'|tr -d '=\"; ')
  187. if [ ! -n "${adminpassword}" ]; then
  188. adminpassword="NOT SET"
  189. fi
  190. else
  191. adminpassword="\e[0;31mUNAVAILABLE\e[0m"
  192. fi
  193. # server password
  194. if [ -f "${servercfgfullpath}" ]; then
  195. serverpassword=$(grep -s "passwordAdmin" "${servercfgfullpath}"|grep -v //|sed -e 's/\passwordAdmin//g'|tr -d '=\"; ')
  196. if [ ! -n "${adminpassword}" ]; then
  197. serverpassword="NOT SET"
  198. fi
  199. else
  200. serverpassword="\e[0;31mUNAVAILABLE\e[0m"
  201. fi
  202. fn_servercfgfullpath
  203. elif [ "${engine}" == "seriousengine35" ]; then
  204. # server name
  205. if [ -f "${servercfgfullpath}" ]; then
  206. servername=$(grep -s "prj_strMultiplayerSessionName" "${servercfgfullpath}"|sed 's/prj_strMultiplayerSessionName = //g'|tr -d '=\"; ')
  207. if [ ! -n "${servername}" ]; then
  208. servername="NOT SET"
  209. fi
  210. else
  211. servername="\e[0;31mUNAVAILABLE\e[0m"
  212. fi
  213. # rcon
  214. if [ -f "${servercfgfullpath}" ]; then
  215. rcon=$(grep -s "rcts_strAdminPassword" "${servercfgfullpath}"|sed 's/rcts_strAdminPassword = //g'|tr -d '=\"; ')
  216. if [ ! -n "${rcon}" ]; then
  217. rcon="NOT SET"
  218. fi
  219. else
  220. servername="\e[0;31mUNAVAILABLE\e[0m"
  221. fi
  222. # port
  223. if [ -f "${servercfgfullpath}" ]; then
  224. port=$(grep -s "prj_uwPort" "${servercfgfullpath}"|tr -d '\r'|tr -cd [:digit:])
  225. fi
  226. if [ ! -n "${port}" ]; then
  227. port="0"
  228. fi
  229. # query port
  230. if [ -f "${servercfgfullpath}" ]; then
  231. queryport=$((${port} + 1))
  232. fi
  233. if [ ! -n "${queryport}" ]; then
  234. queryport="0"
  235. fi
  236. # slots
  237. if [ -f "${servercfgfullpath}" ]; then
  238. slots=$(grep -s "gam_ctMaxPlayers" "${servercfgfullpath}"|grep -v "#"|tr -cd [:digit:])
  239. if [ ! -n "${slots}" ]; then
  240. slots="NOT SET"
  241. fi
  242. else
  243. slots="\e[0;31mUNAVAILABLE\e[0m"
  244. fi
  245. # game mode
  246. if [ -f "${servercfgfullpath}" ]; then
  247. gamemode=$(grep -s "gam_idGameMode" "${servercfgfullpath}"|grep -v "#"|sed 's/gam_idGameMode//g'|tr -d '=\"; ')
  248. if [ ! -n "${gamemode}" ]; then
  249. gamemode="NOT SET"
  250. fi
  251. else
  252. gamemode="\e[0;31mUNAVAILABLE\e[0m"
  253. fi
  254. elif [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
  255. # server name
  256. if [ -f "${servercfgfullpath}" ]; then
  257. servername=$(grep -s "hostname" "${servercfgfullpath}"|sed 's/hostname //g'|sed 's/"//g')
  258. if [ ! -n "${servername}" ]; then
  259. servername="NOT SET"
  260. fi
  261. else
  262. servername="\e[0;31mUNAVAILABLE\e[0m"
  263. fi
  264. # rcon
  265. if [ -f "${servercfgfullpath}" ]; then
  266. rcon=$(grep -s "rcon_password" "${servercfgfullpath}"|sed 's/rcon_password //g'|sed 's/"//g')
  267. if [ ! -n "${rcon}" ]; then
  268. rcon="NOT SET"
  269. fi
  270. else
  271. rcon="\e[0;31mUNAVAILABLE\e[0m"
  272. fi
  273. # server password
  274. if [ -f "${servercfgfullpath}" ]; then
  275. serverpassword=$(grep -s "sv_password" "${servercfgfullpath}"|sed 's/sv_password//g'|sed 's/"//g')
  276. if [ ! -n "${serverpassword}" ]; then
  277. serverpassword="NOT SET"
  278. fi
  279. else
  280. serverpassword="\e[0;31mUNAVAILABLE\e[0m"
  281. fi
  282. # slots
  283. if [ -f "${servercfgfullpath}" ]; then
  284. slots=$(grep -s "gam_ctMaxPlayers" "${servercfgfullpath}"|grep -v "#"|tr -cd [:digit:])
  285. if [ ! -n "${slots}" ]; then
  286. slots="NOT SET"
  287. fi
  288. else
  289. slots="\e[0;31mUNAVAILABLE\e[0m"
  290. fi
  291. elif [ "${engine}" == "spark" ]; then
  292. queryport=$((${port} + 1))
  293. elif [ "${gamename}" == "Teamspeak 3" ]; then
  294. if [ -s "${servercfgfullpath}" ]; then
  295. port=$(grep "default_voice_port=" "${servercfgfullpath}"|tr -cd [:digit:])
  296. queryport=$(grep "query_port=" "${servercfgfullpath}"|tr -cd [:digit:])
  297. fileport=$(grep "filetransfer_port=" "${servercfgfullpath}"|tr -cd [:digit:])
  298. ip=$(grep "voice_ip=" "${servercfgfullpath}"|sed 's/\voice_ip=//g')
  299. dbplugin=$(grep "dbplugin=" "${servercfgfullpath}"|sed 's/\dbplugin=//g')
  300. else
  301. port="9987"
  302. queryport="10011"
  303. fileport="30033"
  304. fi
  305. elif [ "${engine}" == "unity3d" ]; then
  306. servername=$(grep "ServerName" "${servercfgfullpath}"|sed 's/^.*value="//'|cut -f1 -d"\"")
  307. port=$(grep "ServerPort" "${servercfgfullpath}"|tr -cd [:digit:])
  308. queryport=$((${port} + 1))
  309. webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}"|sed 's/^.*value="//'|cut -f1 -d"\"")
  310. webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}"|tr -cd [:digit:])
  311. webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}"|sed 's/^.*value="//'|cut -f1 -d"\"")
  312. telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}"|sed 's/^.*value="//'|cut -f1 -d"\"")
  313. telnetport=$(grep "TelnetPort" "${servercfgfullpath}"|tr -cd [:digit:])
  314. telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}"|sed 's/^.*value="//'|cut -f1 -d"\"")
  315. if [ -z "${telnetpass}" ]; then
  316. telnetpass="\e[0;31mno password set\e[0m"
  317. fi
  318. elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
  319. servername=$(grep -s ServerName= ${servercfgfullpath}|sed 's/ServerName=//g')
  320. port=$(grep Port= "${servercfgfullpath}"|grep -v Master|grep -v LAN|grep -v Proxy|grep -v Listen|tr -d '\r'|tr -cd [:digit:])
  321. queryport=$((${port} + 1))
  322. gsqueryport=$(grep OldQueryPortNumber= "${servercfgfullpath}"|tr -d '\r'|tr -cd [:digit:])
  323. udplinkport=$((${port} + 2))
  324. webadminenabled=$(grep bEnabled= "${servercfgfullpath}"|sed 's/bEnabled=//g'|tr -d '\r')
  325. webadminport=$(grep ListenPort= "${servercfgfullpath}"|tr -d '\r'|tr -cd [:digit:])
  326. if [ "${engine}" == "unreal" ]; then
  327. webadminuser=$(grep AdminUsername= "${servercfgfullpath}"|sed 's/\AdminUsername=//g')
  328. webadminpass=$(grep UTServerAdmin.UTServerAdmin "${servercfgfullpath}" -A 2| grep AdminPassword=|sed 's/\AdminPassword=//g')
  329. else
  330. webadminuser=$(grep AdminName= "${servercfgfullpath}"|sed 's/\AdminName=//g')
  331. webadminpass=$(grep AdminPassword= "${servercfgfullpath}"|sed 's/\AdminPassword=//g')
  332. fi
  333. fi