141 lines
3.7 KiB
Bash
141 lines
3.7 KiB
Bash
#!/bin/bash
|
|
|
|
function fail {
|
|
# Write to stderr
|
|
echo "ERROR: $@" >&2
|
|
exit 1
|
|
}
|
|
|
|
# what are we trying to install?
|
|
game_nm="DST"
|
|
game_id=343050
|
|
|
|
DST_SERVER_DIR=${DST_SERVER_DIR:-'server'}
|
|
dontstarve_dir="$HOME/.klei/DoNotStarveTogether"
|
|
|
|
# install game to this directory
|
|
installdir=/home/steam/games/$game_nm
|
|
|
|
# if path does not exist, create it
|
|
mkdir -p $installdir
|
|
|
|
if [[ -w $installdir ]] # can we write into the directory?
|
|
then
|
|
# Install or update the game in /home/steam/games/[game name]
|
|
/opt/steamcmd/steamcmd.sh \
|
|
+login anonymous \
|
|
+force_install_dir $installdir \
|
|
+app_update $game_id validate \
|
|
+quit
|
|
else
|
|
# install dir maybe mounted read-only, simply
|
|
# skip installing/updating and inform the user.
|
|
echo "Skipped game installation."
|
|
fi
|
|
|
|
# if game dir does not exist, create it
|
|
mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR}
|
|
|
|
if [[ ! -w ${dontstarve_dir}/${DST_SERVER_DIR} ]]
|
|
then
|
|
fail "Not allowed to write to game dir as user $(id -u)"
|
|
fi
|
|
|
|
if [[ ! -f ${dontstarve_dir}/${DST_SERVER_DIR}/cluster_token.txt ]]
|
|
then
|
|
mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR}
|
|
echo "${DST_CLUSTER_TOKEN}" > ${dontstarve_dir}/${DST_SERVER_DIR}/cluster_token.txt
|
|
fi
|
|
|
|
if [[ ! -f ${dontstarve_dir}/${DST_SERVER_DIR}/cluster.ini ]]
|
|
then
|
|
mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR}
|
|
cat <<- EOF > ${dontstarve_dir}/${DST_SERVER_DIR}/cluster.ini
|
|
[GAMEPLAY]
|
|
game_mode = ${DST_GAME_MODE}
|
|
max_players = ${DST_MAX_PLAYERS}
|
|
pvp = ${DST_PVP}
|
|
pause_when_empty = ${DST_}
|
|
|
|
[NETWORK]
|
|
cluster_description = ${DST_CLUSTER_DESCRIPTION}
|
|
cluster_name = ${DST_CLUSTER_NAME}
|
|
cluster_intention = ${DST_CLUSTER_INTENTION}
|
|
cluster_password = ${DST_CLUSTER_PASSWORD}
|
|
|
|
[MISC]
|
|
console_enabled = true
|
|
|
|
[SHARD]
|
|
shard_enabled = true
|
|
bind_ip = 127.0.0.1
|
|
master_ip = 127.0.0.1
|
|
master_port = 10889
|
|
cluster_key = paul
|
|
EOF
|
|
fi
|
|
|
|
if [[ ! -f ${dontstarve_dir}/${DST_SERVER_DIR}/Master/server.ini ]]
|
|
then
|
|
mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR}/Master
|
|
cat <<- EOF > ${dontstarve_dir}/${DST_SERVER_DIR}/Master/server.ini
|
|
[NETWORK]
|
|
server_port = 11000
|
|
|
|
[SHARD]
|
|
is_master = true
|
|
|
|
[STEAM]
|
|
master_server_port = 27018
|
|
authentication_port = 8768
|
|
|
|
[ACCOUNT]
|
|
encode_user_path = true
|
|
EOF
|
|
fi
|
|
|
|
if [[ ! -f ${dontstarve_dir}/${DST_SERVER_DIR}/Caves/server.ini ]]
|
|
then
|
|
mkdir -p ${dontstarve_dir}/${DST_SERVER_DIR}/Caves
|
|
cat <<- EOF > ${dontstarve_dir}/${DST_SERVER_DIR}/Caves/server.ini
|
|
[NETWORK]
|
|
server_port = 11001
|
|
|
|
[SHARD]
|
|
is_master = false
|
|
name = Caves
|
|
id = 2521590582
|
|
|
|
[STEAM]
|
|
master_server_port = 27019
|
|
authentication_port = 8769
|
|
|
|
[ACCOUNT]
|
|
encode_user_path = true
|
|
EOF
|
|
fi
|
|
|
|
|
|
#mod support
|
|
if [[ ! -z "$DST_MODS" ]]
|
|
then
|
|
echo $DST_MODS |sed -e "s/ /\n/g" |sed -e "s/^/ServerModSetup\(\"/g"| sed -e "s/$/\"\)/g" > $installdir/mods/dedicated_server_mods_setup.lua
|
|
echo "return {" > ${dontstarve_dir}/${DST_SERVER_DIR}/Master/modoverrides.lua
|
|
echo "return {" > ${dontstarve_dir}/${DST_SERVER_DIR}/Caves/modoverrides.lua
|
|
|
|
echo $DST_MODS |sed -e "s/ /\n/g" |sed -e "s/^/\[\"workshop-/g"| sed -e "s/$/\"\] \= \{ enabled \= true \}\,/g" >> ${dontstarve_dir}/${DST_SERVER_DIR}/Master/modoverrides.lua
|
|
echo $DST_MODS |sed -e "s/ /\n/g" |sed -e "s/^/\[\"workshop-/g"| sed -e "s/$/\"\] \= \{ enabled \= true \}\,/g" >> ${dontstarve_dir}/${DST_SERVER_DIR}/Caves/modoverrides.lua
|
|
echo "}" >> ${dontstarve_dir}/${DST_SERVER_DIR}/Master/modoverrides.lua
|
|
echo "}" >> ${dontstarve_dir}/${DST_SERVER_DIR}/Caves/modoverrides.lua
|
|
fi
|
|
|
|
# run the next commands from the installdir
|
|
cd $installdir/bin
|
|
|
|
run_shared=(./dontstarve_dedicated_server_nullrenderer)
|
|
run_shared+=(-console)
|
|
run_shared+=(-cluster "$DST_SERVER_DIR")
|
|
run_shared+=(-monitor_parent_process $$)
|
|
|
|
"${run_shared[@]}" -shard Caves | sed 's/^/Caves: /' &
|
|
"${run_shared[@]}" -shard Master | sed 's/^/Master: /'
|