install_config.sh 16 KB

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