install_config.sh 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493
  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. :
  255. elif [ "${gamename}" == "Fistful of Frags" ]; then
  256. gamedirname="FistfulofFrags"
  257. array_configs+=( server.cfg )
  258. fn_fetch_default_config
  259. fn_default_config_remote
  260. fn_set_config_vars
  261. elif [ "${gamename}" == "Garry's Mod" ]; then
  262. gamedirname="GarrysMod"
  263. array_configs+=( server.cfg )
  264. fn_fetch_default_config
  265. fn_default_config_remote
  266. fn_set_config_vars
  267. elif [ "${gamename}" == "GoldenEye: Source" ]; then
  268. gamedirname="GoldenEyeSource"
  269. array_configs+=( server.cfg )
  270. fn_fetch_default_config
  271. fn_default_config_remote
  272. fn_set_config_vars
  273. elif [ "${gamename}" == "Half Life: Deathmatch" ]; then
  274. gamedirname="HalfLifeDeathmatch"
  275. array_configs+=( server.cfg )
  276. fn_fetch_default_config
  277. fn_default_config_remote
  278. fn_set_config_vars
  279. elif [ "${gamename}" == "Half-Life Deathmatch: Source" ]; then
  280. gamedirname="HalfLifeDeathmatchSource"
  281. array_configs+=( server.cfg )
  282. fn_fetch_default_config
  283. fn_default_config_remote
  284. fn_set_config_vars
  285. elif [ "${gamename}" == "Half-Life: Opposing Force" ]; then
  286. gamedirname="OpposingForce"
  287. array_configs+=( server.cfg )
  288. fn_fetch_default_config
  289. fn_default_config_remote
  290. fn_set_config_vars
  291. elif [ "${gamename}" == "Half Life 2: Deathmatch" ]; then
  292. gamedirname="HalfLife2Deathmatch"
  293. array_configs+=( server.cfg )
  294. fn_fetch_default_config
  295. fn_default_config_remote
  296. fn_set_config_vars
  297. elif [ "${gamename}" == "Insurgency" ]; then
  298. gamedirname="Insurgency"
  299. array_configs+=( server.cfg )
  300. fn_fetch_default_config
  301. fn_default_config_remote
  302. fn_set_config_vars
  303. elif [ "${gamename}" == "Just Cause 2" ]; then
  304. gamedirname="JustCause2"
  305. array_configs+=( config.lua )
  306. fn_fetch_default_config
  307. fn_default_config_remote
  308. fn_set_config_vars
  309. elif [ "${gamename}" == "Killing Floor" ]; then
  310. gamedirname="KillingFloor"
  311. array_configs+=( Default.ini )
  312. fn_fetch_default_config
  313. fn_default_config_remote
  314. fn_set_config_vars
  315. elif [ "${gamename}" == "Left 4 Dead" ]; then
  316. gamedirname="Left4Dead"
  317. array_configs+=( server.cfg )
  318. fn_fetch_default_config
  319. fn_default_config_remote
  320. fn_set_config_vars
  321. elif [ "${gamename}" == "Left 4 Dead" ]; then
  322. gamedirname="Left4Dead"
  323. array_configs+=( server.cfg )
  324. fn_fetch_default_config
  325. fn_default_config_remote
  326. fn_set_config_vars
  327. elif [ "${gamename}" == "Left 4 Dead 2" ]; then
  328. gamedirname="Left4Dead2"
  329. array_configs+=( server.cfg )
  330. fn_fetch_default_config
  331. fn_default_config_remote
  332. fn_set_config_vars
  333. elif [ "${gamename}" == "Minecraft" ]; then
  334. gamedirname="Minecraft"
  335. array_configs+=( server.properties )
  336. fn_fetch_default_config
  337. fn_default_config_remote
  338. fn_set_config_vars
  339. elif [ "${gamename}" == "No More Room in Hell" ]; then
  340. gamedirname="NoMoreRoominHell"
  341. array_configs+=( server.cfg )
  342. fn_fetch_default_config
  343. fn_default_config_remote
  344. fn_set_config_vars
  345. elif [ "${gamename}" == "Mumble" ]; then
  346. gamedirname="Mumble"
  347. array_configs+=( murmur.ini )
  348. fn_fetch_default_config
  349. fn_default_config_remote
  350. elif [ "${gamename}" == "Natural Selection 2" ]; then
  351. :
  352. elif [ "${gamename}" == "NS2: Combat" ]; then
  353. :
  354. elif [ "${gamename}" == "Pirates, Vikings, and Knights II" ]; then
  355. gamedirname="PiratesVikingandKnightsII"
  356. array_configs+=( server.cfg )
  357. fn_fetch_default_config
  358. fn_default_config_remote
  359. fn_set_config_vars
  360. elif [ "${gamename}" == "Project Zomboid" ]; then
  361. gamedirname="ProjectZomboid"
  362. fn_check_cfgdir
  363. array_configs+=( server.ini )
  364. fn_fetch_default_config
  365. fn_default_config_remote
  366. fn_set_config_vars
  367. elif [ "${gamename}" == "Quake 2" ]; then
  368. gamedirname="Quake2"
  369. array_configs+=( server.cfg )
  370. fn_fetch_default_config
  371. fn_default_config_remote
  372. fn_set_config_vars
  373. elif [ "${gamename}" == "Quake 3: Arena" ]; then
  374. gamedirname="Quake3Arena"
  375. array_configs+=( server.cfg )
  376. fn_fetch_default_config
  377. fn_default_config_remote
  378. fn_set_config_vars
  379. elif [ "${gamename}" == "Quake Live" ]; then
  380. gamedirname="QuakeLive"
  381. array_configs+=( server.cfg )
  382. fn_fetch_default_config
  383. fn_default_config_remote
  384. fn_set_config_vars
  385. elif [ "${gamename}" == "QuakeWorld" ]; then
  386. gamedirname="QuakeWorld"
  387. array_configs+=( server.cfg )
  388. fn_fetch_default_config
  389. fn_default_config_remote
  390. fn_set_config_vars
  391. elif [ "${gamename}" == "Red Orchestra: Ostfront 41-45" ]; then
  392. :
  393. elif [ "${gamename}" == "Ricochet" ]; then
  394. gamedirname="Ricochet"
  395. array_configs+=( server.cfg )
  396. fn_fetch_default_config
  397. fn_default_config_remote
  398. fn_set_config_vars
  399. elif [ "${gamename}" == "Rust" ]; then
  400. gamedirname="Rust"
  401. fn_check_cfgdir
  402. array_configs+=( server.cfg )
  403. fn_fetch_default_config
  404. fn_default_config_remote
  405. elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then
  406. gamedirname="SeriousSam3BFE"
  407. array_configs+=( server.ini )
  408. fn_fetch_default_config
  409. fn_default_config_remote
  410. fn_set_config_vars
  411. elif [ "${gamename}" == "Starbound" ]; then
  412. gamedirname="Starbound"
  413. array_configs+=( starbound_server.config )
  414. fn_fetch_default_config
  415. fn_default_config_remote
  416. fn_set_config_vars
  417. elif [ "${gamename}" == "Sven Co-op" ]; then
  418. gamedirname="SvenCoop"
  419. array_configs+=( server.cfg )
  420. fn_fetch_default_config
  421. fn_default_config_remote
  422. fn_set_config_vars
  423. elif [ "${gamename}" == "Team Fortress 2" ]; then
  424. gamedirname="TeamFortress2"
  425. array_configs+=( server.cfg )
  426. fn_fetch_default_config
  427. fn_default_config_remote
  428. fn_set_config_vars
  429. elif [ "${gamename}" == "Team Fortress Classic" ]; then
  430. gamedirname="TeamFortressClassic"
  431. array_configs+=( server.cfg )
  432. fn_fetch_default_config
  433. fn_default_config_remote
  434. fn_set_config_vars
  435. elif [ "${gamename}" == "TeamSpeak 3" ]; then
  436. gamedirname="TeamSpeak3"
  437. array_configs+=( ts3server.ini )
  438. fn_fetch_default_config
  439. fn_default_config_remote
  440. elif [ "${gamename}" == "Teeworlds" ]; then
  441. gamedirname="Teeworlds"
  442. array_configs+=( server.cfg ctf.cfg dm.cfg duel.cfg tdm.cfg )
  443. fn_fetch_default_config
  444. fn_default_config_remote
  445. fn_set_config_vars
  446. elif [ "${gamename}" == "Terraria" ]; then
  447. gamedirname="Terraria"
  448. array_configs+=( serverconfig.txt )
  449. fn_fetch_default_config
  450. fn_default_config_remote
  451. fn_set_config_vars
  452. elif [ "${gamename}" == "Unreal Tournament" ]; then
  453. gamedirname="UnrealTournament"
  454. array_configs+=( Game.ini Engine.ini )
  455. fn_fetch_default_config
  456. fn_default_config_remote
  457. fn_set_config_vars
  458. elif [ "${gamename}" == "Unreal Tournament 2004" ]; then
  459. gamedirname="UnrealTournament2004"
  460. array_configs+=( UT2004.ini )
  461. fn_fetch_default_config
  462. fn_default_config_remote
  463. fn_set_config_vars
  464. elif [ "${gamename}" == "Unreal Tournament 3" ]; then
  465. gamedirname="UnrealTournament3"
  466. array_configs+=( UTGame.ini )
  467. fn_fetch_default_config
  468. fn_default_config_remote
  469. fn_set_config_vars
  470. elif [ "${gamename}" == "Unreal Tournament 99" ]; then
  471. gamedirname="UnrealTournament99"
  472. array_configs+=( Default.ini )
  473. fn_fetch_default_config
  474. fn_default_config_remote
  475. fn_set_config_vars
  476. elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
  477. gamedirname="WolfensteinEnemyTerritory"
  478. array_configs+=( server.cfg )
  479. fn_fetch_default_config
  480. fn_default_config_remote
  481. fn_set_config_vars
  482. fi