install_config.sh 16 KB

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