install_config.sh 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. #!/bin/bash
  2. # LGSM install_config.sh function
  3. # Author: Daniel Gibbs
  4. # Website: https://gameservermanagers.com
  5. # Description: Creates default server configs.
  6. local commandname="INSTALL"
  7. local commandaction="Install"
  8. local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
  9. fn_fetch_default_config(){
  10. mkdir -pv "${lgsmdir}/default-configs"
  11. githuburl="https://github.com/GameServerManagers/Game-Server-Configs/dstserver"
  12. for config in "${array_configs[@]}"
  13. do
  14. fileurl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/dstserver/${gamedirname}/${config}"; filedir="${lgsmdir}/default-configs"; filename="${config}"; executecmd="noexecute" run="norun"; force="noforce"
  15. fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}"
  16. done
  17. }
  18. # Changes some variables within the default configs
  19. # SERVERNAME to LinuxGSM
  20. # PASSWORD to random password
  21. fn_set_config_vars(){
  22. random=$(strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 8 | tr -d '\n'; echo)
  23. servername="LinuxGSM"
  24. rconpass="admin$random"
  25. echo "changing hostname."
  26. fn_script_log_info "changing hostname."
  27. sleep 1
  28. sed -i "s/SERVERNAME/${servername}/g" "${servercfgfullpath}"
  29. echo "changing rcon/admin password."
  30. fn_script_log_info "changing rcon/admin password."
  31. sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgfullpath}"
  32. sleep 1
  33. }
  34. # Checks if cfg dir exists, creates it if it doesn't
  35. fn_check_cfgdir(){
  36. if [ ! -d "${servercfgdir}" ]; then
  37. echo "creating ${servercfgdir} config directory."
  38. fn_script_log_info "creating ${servercfgdir} config directory."
  39. mkdir -pv "${servercfgdir}"
  40. fi
  41. }
  42. # Copys the default configs from Game-Server-Configs repo to the
  43. # correct location
  44. fn_default_config_remote(){
  45. for config in "${array_configs[@]}"
  46. do
  47. # every config is copied
  48. echo "copying ${servercfg} config file."
  49. fn_script_log_info "copying ${servercfg} config file."
  50. if [ "${config}" == "${servercfgdefault}" ]; then
  51. cp -v "${lgsmdir}/default-configs/${config}" "${servercfgfullpath}"
  52. elif [ "${config}" == "${networkcfgdefault}" ]; then
  53. # ARMA 3
  54. cp -v "${lgsmdir}/default-configs/${config}" "${networkcfgfullpath}"
  55. else
  56. cp -v "${lgsmdir}/default-configs/${config}" "${servercfgdir}/${config}"
  57. fi
  58. done
  59. sleep 1
  60. }
  61. fn_dstconfig(){
  62. ## cluster.ini
  63. # this config shouldn't be overridden
  64. if [ ! -s "${clustercfgfullpath}" ]; then
  65. echo "copying ${clustercfg} config file."
  66. fn_script_log_info "copying ${clustercfg} config file."
  67. cp -v "${lgsmdir}/default-configs/${clustercfgdefault}" "${clustercfgfullpath}"
  68. sleep 1
  69. echo "changing server name."
  70. fn_script_log_info "changing server name."
  71. sed -i "s/SERVERNAME/LinuxGSM/g" "${clustercfgfullpath}"
  72. sleep 1
  73. echo "changing shard mode."
  74. fn_script_log_info "changing shard mode."
  75. sed -i "s/USESHARDING/${sharding}/g" "${clustercfgfullpath}"
  76. sleep 1
  77. echo "randomizing cluster key."
  78. fn_script_log_info "randomizing cluster key."
  79. randomkey=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
  80. sed -i "s/CLUSTERKEY/${randomkey}/g" "${clustercfgfullpath}"
  81. sleep 1
  82. else
  83. echo "${clustercfg} already exists."
  84. fn_script_log_info "${clustercfg} already exists."
  85. fi
  86. ## server.ini
  87. echo "copying ${servercfg} config file."
  88. fn_script_log_info "copying ${servercfg} config file."
  89. cp -v "${lgsmdir}/default-configs/${servercfgdefault}" "${servercfgfullpath}"
  90. sleep 1
  91. # removing unnecessary options (dependent on sharding & shard type)
  92. if [ "${sharding}" == "false" ]; then
  93. sed -i "s/ISMASTER//g" "${servercfgfullpath}"
  94. sed -i "/SHARDNAME/d" "${servercfgfullpath}"
  95. elif [ "${master}" == "true" ]; then
  96. sed -i "/SHARDNAME/d" "${servercfgfullpath}"
  97. fi
  98. # configure settings
  99. echo "changing shard name."
  100. fn_script_log_info "changing shard name."
  101. sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}"
  102. sleep 1
  103. echo "changing master setting."
  104. fn_script_log_info "changing master setting."
  105. sed -i "s/ISMASTER/${master}/g" "${servercfgfullpath}"
  106. sleep 1
  107. ## worldgenoverride.lua
  108. if [ "${cave}" == "true" ]; then
  109. echo "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
  110. fn_script_log_info "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
  111. echo 'return { override_enabled = true, preset = "DST_CAVE", }' > "${servercfgdir}/worldgenoverride.lua"
  112. fi
  113. sleep 1
  114. echo ""
  115. }
  116. echo ""
  117. echo "Downloading ${gamename} Config"
  118. echo "================================="
  119. echo "default configs from https://github.com/GameServerManagers/Game-Server-Configs"
  120. sleep 2
  121. if [ "${gamename}" == "7 Days To Die" ]; then
  122. gamedirname="7DaysToDie"
  123. array_configs+=( serverconfig.xml )
  124. fn_fetch_default_config
  125. fn_default_config_remote
  126. fn_set_config_vars
  127. elif [ "${gamename}" == "ARK: Survivial Evolved" ]; then
  128. gamedirname="ARKSurvivalEvolved"
  129. array_configs+=( GameUserSettings.ini )
  130. fn_fetch_default_config
  131. fn_default_config_remote
  132. fn_set_config_vars
  133. elif [ "${gamename}" == "ARMA 3" ]; then
  134. gamedirname="Arma3"
  135. fn_check_cfgdir
  136. array_configs+=( server.cfg network.cfg )
  137. fn_fetch_default_config
  138. fn_default_config_remote
  139. fn_set_config_vars
  140. elif [ "${gamename}" == "Battlefield: 1942" ]; then
  141. gamedirname="Battlefield1942"
  142. array_configs+=( serversettings.con )
  143. fn_fetch_default_config
  144. fn_default_config_remote
  145. fn_set_config_vars
  146. elif [ "${gamename}" == "Blade Symphony" ]; then
  147. gamedirname="BladeSymphony"
  148. array_configs+=( server.cfg )
  149. fn_fetch_default_config
  150. fn_default_config_remote
  151. fn_set_config_vars
  152. elif [ "${gamename}" == "BrainBread 2" ]; then
  153. gamedirname="BrainBread2"
  154. array_configs+=( server.cfg )
  155. fn_fetch_default_config
  156. fn_default_config_remote
  157. fn_set_config_vars
  158. elif [ "${gamename}" == "Black Mesa: Deathmatch" ]; then
  159. gamedirname="BlackMesa"
  160. array_configs+=( server.cfg )
  161. fn_fetch_default_config
  162. fn_default_config_remote
  163. fn_set_config_vars
  164. elif [ "${gamename}" == "Call of Duty" ]; then
  165. gamedirname="CallOfDuty"
  166. array_configs+=( server.cfg )
  167. fn_fetch_default_config
  168. fn_default_config_remote
  169. fn_set_config_vars
  170. elif [ "${gamename}" == "Codename CURE" ]; then
  171. gamedirname="CodenameCURE"
  172. array_configs+=( server.cfg )
  173. fn_fetch_default_config
  174. fn_default_config_remote
  175. fn_set_config_vars
  176. elif [ "${gamename}" == "Counter-Strike 1.6" ]; then
  177. gamedirname="CounterStrike"
  178. array_configs+=( server.cfg )
  179. fn_fetch_default_config
  180. fn_default_config_remote
  181. fn_set_config_vars
  182. elif [ "${gamename}" == "Counter-Strike: Condition Zero" ]; then
  183. gamedirname="CounterStrikeConditionZero"
  184. array_configs+=( server.cfg )
  185. fn_fetch_default_config
  186. fn_default_config_remote
  187. fn_set_config_vars
  188. elif [ "${gamename}" == "Counter-Strike: Global Offensive" ]; then
  189. gamedirname="CounterStrikeGlobalOffensive"
  190. array_configs+=( server.cfg )
  191. fn_fetch_default_config
  192. fn_default_config_remote
  193. fn_set_config_vars
  194. elif [ "${gamename}" == "Counter-Strike: Source" ]; then
  195. gamedirname="CounterStrikeSource"
  196. array_configs+=( server.cfg )
  197. fn_fetch_default_config
  198. fn_default_config_remote
  199. fn_set_config_vars
  200. elif [ "${gamename}" == "Day of Defeat" ]; then
  201. gamedirname="DayOfDefeat"
  202. array_configs+=( server.cfg )
  203. fn_fetch_default_config
  204. fn_default_config_remote
  205. fn_set_config_vars
  206. elif [ "${gamename}" == "Day of Defeat: Source" ]; then
  207. gamedirname="DayOfDefeatSource"
  208. array_configs+=( server.cfg )
  209. fn_fetch_default_config
  210. fn_default_config_remote
  211. fn_set_config_vars
  212. elif [ "${gamename}" == "Day of Infamy" ]; then
  213. gamedirname="DayOfInfamy"
  214. array_configs+=( server.cfg )
  215. fn_fetch_default_config
  216. fn_default_config_remote
  217. fn_set_config_vars
  218. elif [ "${gamename}" == "Deathmatch Classic" ]; then
  219. gamedirname="DeathmatchClassic"
  220. array_configs+=( server.cfg )
  221. fn_fetch_default_config
  222. fn_default_config_remote
  223. fn_set_config_vars
  224. elif [ "${gamename}" == "Don't Starve Together" ]; then
  225. gamedirname="DontStarveTogether"
  226. fn_check_cfgdir
  227. array_configs+=( cluster.ini server.ini )
  228. fn_fetch_default_config
  229. fn_dstconfig
  230. elif [ "${gamename}" == "Double Action: Boogaloo" ]; then
  231. gamedirname="DoubleActionBoogaloo"
  232. array_configs+=( server.cfg )
  233. fn_fetch_default_config
  234. fn_default_config_remote
  235. fn_set_config_vars
  236. elif [ "${gamename}" == "Fistful of Frags" ]; then
  237. gamedirname="FistfulofFrags"
  238. array_configs+=( server.cfg )
  239. fn_fetch_default_config
  240. fn_default_config_remote
  241. fn_set_config_vars
  242. elif [ "${gamename}" == "Garry's Mod" ]; then
  243. gamedirname="GarrysMod"
  244. array_configs+=( server.cfg )
  245. fn_fetch_default_config
  246. fn_default_config_remote
  247. fn_set_config_vars
  248. elif [ "${gamename}" == "GoldenEye: Source" ]; then
  249. gamedirname="GoldenEyeSource"
  250. array_configs+=( server.cfg )
  251. fn_fetch_default_config
  252. fn_default_config_remote
  253. fn_set_config_vars
  254. elif [ "${gamename}" == "Half Life: Deathmatch" ]; then
  255. gamedirname="HalfLifeDeathmatch"
  256. array_configs+=( server.cfg )
  257. fn_fetch_default_config
  258. fn_default_config_remote
  259. fn_set_config_vars
  260. elif [ "${gamename}" == "Half-Life Deathmatch: Source" ]; then
  261. gamedirname="HalfLifeDeathmatchSource"
  262. array_configs+=( server.cfg )
  263. fn_fetch_default_config
  264. fn_default_config_remote
  265. fn_set_config_vars
  266. elif [ "${gamename}" == "Half-Life: Opposing Force" ]; then
  267. gamedirname="OpposingForce"
  268. array_configs+=( server.cfg )
  269. fn_fetch_default_config
  270. fn_default_config_remote
  271. fn_set_config_vars
  272. elif [ "${gamename}" == "Half Life 2: Deathmatch" ]; then
  273. gamedirname="HalfLife2Deathmatch"
  274. array_configs+=( server.cfg )
  275. fn_fetch_default_config
  276. fn_default_config_remote
  277. fn_set_config_vars
  278. elif [ "${gamename}" == "Insurgency" ]; then
  279. gamedirname="Insurgency"
  280. array_configs+=( server.cfg )
  281. fn_fetch_default_config
  282. fn_default_config_remote
  283. fn_set_config_vars
  284. elif [ "${gamename}" == "Just Cause 2" ]; then
  285. gamedirname="JustCause2"
  286. array_configs+=( config.lua )
  287. fn_fetch_default_config
  288. fn_default_config_remote
  289. fn_set_config_vars
  290. elif [ "${gamename}" == "Killing Floor" ]; then
  291. gamedirname="KillingFloor"
  292. array_configs+=( Default.ini )
  293. fn_fetch_default_config
  294. fn_default_config_remote
  295. fn_set_config_vars
  296. elif [ "${gamename}" == "Left 4 Dead" ]; then
  297. gamedirname="Left4Dead"
  298. array_configs+=( server.cfg )
  299. fn_fetch_default_config
  300. fn_default_config_remote
  301. fn_set_config_vars
  302. elif [ "${gamename}" == "Left 4 Dead" ]; then
  303. gamedirname="Left4Dead"
  304. array_configs+=( server.cfg )
  305. fn_fetch_default_config
  306. fn_default_config_remote
  307. fn_set_config_vars
  308. elif [ "${gamename}" == "Left 4 Dead 2" ]; then
  309. gamedirname="Left4Dead2"
  310. array_configs+=( server.cfg )
  311. fn_fetch_default_config
  312. fn_default_config_remote
  313. fn_set_config_vars
  314. elif [ "${gamename}" == "Minecraft" ]; then
  315. gamedirname="Minecraft"
  316. array_configs+=( server.properties )
  317. fn_fetch_default_config
  318. fn_default_config_remote
  319. fn_set_config_vars
  320. elif [ "${gamename}" == "No More Room in Hell" ]; then
  321. gamedirname="NoMoreRoominHell"
  322. array_configs+=( server.cfg )
  323. fn_fetch_default_config
  324. fn_default_config_remote
  325. fn_set_config_vars
  326. elif [ "${gamename}" == "Mumble" ]; then
  327. gamedirname="Mumble"
  328. array_configs+=( murmur.ini )
  329. fn_fetch_default_config
  330. fn_default_config_remote
  331. elif [ "${gamename}" == "Natural Selection 2" ]; then
  332. :
  333. elif [ "${gamename}" == "NS2: Combat" ]; then
  334. :
  335. elif [ "${gamename}" == "Pirates, Vikings, and Knights II" ]; then
  336. gamedirname="PiratesVikingandKnightsII"
  337. array_configs+=( server.cfg )
  338. fn_fetch_default_config
  339. fn_default_config_remote
  340. fn_set_config_vars
  341. elif [ "${gamename}" == "Project Zomboid" ]; then
  342. gamedirname="ProjectZomboid"
  343. array_configs+=( server.ini )
  344. fn_fetch_default_config
  345. fn_default_config_remote
  346. fn_set_config_vars
  347. elif [ "${gamename}" == "Quake 2" ]; then
  348. gamedirname="Quake2"
  349. array_configs+=( server.cfg )
  350. fn_fetch_default_config
  351. fn_default_config_remote
  352. fn_set_config_vars
  353. elif [ "${gamename}" == "Quake 3: Arena" ]; then
  354. gamedirname="Quake3Arena"
  355. array_configs+=( server.cfg )
  356. fn_fetch_default_config
  357. fn_default_config_remote
  358. fn_set_config_vars
  359. elif [ "${gamename}" == "Quake Live" ]; then
  360. gamedirname="QuakeLive"
  361. array_configs+=( server.cfg )
  362. fn_fetch_default_config
  363. fn_default_config_remote
  364. fn_set_config_vars
  365. elif [ "${gamename}" == "QuakeWorld" ]; then
  366. gamedirname="QuakeWorld"
  367. array_configs+=( server.cfg )
  368. fn_fetch_default_config
  369. fn_default_config_remote
  370. fn_set_config_vars
  371. elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then
  372. :
  373. elif [ "${gamename}" == "Ricochet" ]; then
  374. gamedirname="Ricochet"
  375. array_configs+=( server.cfg )
  376. fn_fetch_default_config
  377. fn_default_config_remote
  378. fn_set_config_vars
  379. elif [ "${gamename}" == "Rust" ]; then
  380. gamedirname="Rust"
  381. fn_check_cfgdir
  382. array_configs+=( server.cfg )
  383. fn_fetch_default_config
  384. fn_default_config_remote
  385. elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then
  386. gamedirname="SeriousSam3BFE"
  387. array_configs+=( server.ini )
  388. fn_fetch_default_config
  389. fn_default_config_remote
  390. fn_set_config_vars
  391. elif [ "${gamename}" == "Starbound" ]; then
  392. gamedirname="Starbound"
  393. array_configs+=( starbound.config )
  394. fn_fetch_default_config
  395. fn_default_config_remote
  396. fn_set_config_vars
  397. elif [ "${gamename}" == "Sven Co-op" ]; then
  398. gamedirname="SvenCoop"
  399. array_configs+=( server.cfg )
  400. fn_fetch_default_config
  401. fn_default_config_remote
  402. fn_set_config_vars
  403. elif [ "${gamename}" == "Team Fortress 2" ]; then
  404. gamedirname="TeamFortress2"
  405. array_configs+=( server.cfg )
  406. fn_fetch_default_config
  407. fn_default_config_remote
  408. fn_set_config_vars
  409. elif [ "${gamename}" == "Team Fortress Classic" ]; then
  410. gamedirname="TeamFortressClassic"
  411. array_configs+=( server.cfg )
  412. fn_fetch_default_config
  413. fn_default_config_remote
  414. fn_set_config_vars
  415. elif [ "${gamename}" == "TeamSpeak 3" ]; then
  416. gamedirname="TeamSpeak3"
  417. array_configs+=( ts3server.ini )
  418. fn_fetch_default_config
  419. fn_default_config_remote
  420. elif [ "${gamename}" == "Teeworlds" ]; then
  421. gamedirname="Teeworlds"
  422. array_configs+=( server.cfg ctf.cfg dm.cfg duel.cfg tdm.cfg )
  423. fn_fetch_default_config
  424. fn_default_config_remote
  425. fn_set_config_vars
  426. elif [ "${gamename}" == "Terraria" ]; then
  427. gamedirname="Terraria"
  428. array_configs+=( serverconfig.txt )
  429. fn_fetch_default_config
  430. fn_default_config_remote
  431. fn_set_config_vars
  432. elif [ "${gamename}" == "Unreal Tournament" ]; then
  433. gamedirname="UnrealTournament"
  434. array_configs+=( Game.ini Engine.ini )
  435. fn_fetch_default_config
  436. fn_default_config_remote
  437. fn_set_config_vars
  438. elif [ "${gamename}" == "Unreal Tournament 2004" ]; then
  439. gamedirname="UnrealTournament2004"
  440. array_configs+=( UT2004.ini )
  441. fn_fetch_default_config
  442. fn_default_config_remote
  443. fn_set_config_vars
  444. elif [ "${gamename}" == "Unreal Tournament 3" ]; then
  445. gamedirname="UnrealTournament3"
  446. array_configs+=( UTGame.ini )
  447. fn_fetch_default_config
  448. fn_default_config_remote
  449. fn_set_config_vars
  450. elif [ "${gamename}" == "Unreal Tournament 99" ]; then
  451. gamedirname="UnrealTournament99"
  452. array_configs+=( Default.ini )
  453. fn_fetch_default_config
  454. fn_default_config_remote
  455. fn_set_config_vars
  456. elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
  457. gamedirname="WolfensteinEnemyTerritory"
  458. array_configs+=( server.cfg )
  459. fn_fetch_default_config
  460. fn_default_config_remote
  461. fn_set_config_vars
  462. fi