asdf
This commit is contained in:
@@ -89,47 +89,47 @@
|
|||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
# Load Mods
|
# Load Mods
|
||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
load_mods() {
|
# load_mods() {
|
||||||
if [ ! -f "$MOD_CACHE/$MAP_FOLDER_NAME/mods.txt" ] ; then
|
# if [ ! -f "$MOD_CACHE/$MAP_FOLDER_NAME/mods.txt" ] ; then
|
||||||
die "mods.txt list missing"
|
# die "mods.txt list missing"
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
mkdir -p "$SERVER_HOME/mods"
|
# mkdir -p "$SERVER_HOME/mods"
|
||||||
|
|
||||||
_modstring=""
|
# _modstring=""
|
||||||
while read -r mod ; do
|
# while read -r mod ; do
|
||||||
case $mod in
|
# case $mod in
|
||||||
'@'*)
|
# '@'*)
|
||||||
msg "- Found mod: $mod"
|
# msg "- Found mod: $mod"
|
||||||
_modstring="$_modstring;mods/$mod"
|
# _modstring="$_modstring;mods/$mod"
|
||||||
do_sync "$MOD_CACHE/$MAP_FOLDER_NAME/$mod"/ "$SERVER_HOME/mods/$mod"
|
# do_sync "$MOD_CACHE/$MAP_FOLDER_NAME/$mod"/ "$SERVER_HOME/mods/$mod"
|
||||||
|
|
||||||
for addon_folder in addons Addons addon Addon ; do
|
# for addon_folder in addons Addons addon Addon ; do
|
||||||
if [ -d "$SERVER_HOME/mods/$mod/$addon_folder" ] ; then
|
# if [ -d "$SERVER_HOME/mods/$mod/$addon_folder" ] ; then
|
||||||
for addon in "$SERVER_HOME/mods/$mod/$addon_folder"/* ; do
|
# for addon in "$SERVER_HOME/mods/$mod/$addon_folder"/* ; do
|
||||||
if [ ! -f "$SERVER_HOME/addons/${addon##*/}" ] ; then
|
# if [ ! -f "$SERVER_HOME/addons/${addon##*/}" ] ; then
|
||||||
cp -f "$addon" "$SERVER_HOME/addons/"
|
# cp -f "$addon" "$SERVER_HOME/addons/"
|
||||||
fi
|
# fi
|
||||||
done
|
# done
|
||||||
fi
|
# fi
|
||||||
done
|
# done
|
||||||
|
|
||||||
for key_folder in keys Keys key Key ; do
|
# for key_folder in keys Keys key Key ; do
|
||||||
if [ -d "$SERVER_HOME/mods/$mod/$key_folder" ] ; then
|
# if [ -d "$SERVER_HOME/mods/$mod/$key_folder" ] ; then
|
||||||
for key in "$SERVER_HOME/mods/$mod/$key_folder"/* ; do
|
# for key in "$SERVER_HOME/mods/$mod/$key_folder"/* ; do
|
||||||
if [ ! -f "$SERVER_HOME/keys/${key##*/}" ] ; then
|
# if [ ! -f "$SERVER_HOME/keys/${key##*/}" ] ; then
|
||||||
cp -f "$key" "$SERVER_HOME/keys/"
|
# cp -f "$key" "$SERVER_HOME/keys/"
|
||||||
fi
|
# fi
|
||||||
done
|
# done
|
||||||
fi
|
# fi
|
||||||
done
|
# done
|
||||||
esac
|
# esac
|
||||||
done < "$MOD_CACHE/$MAP_FOLDER_NAME/mods.txt"
|
# done < "$MOD_CACHE/$MAP_FOLDER_NAME/mods.txt"
|
||||||
|
|
||||||
# trim the initial leading ';'
|
# # trim the initial leading ';'
|
||||||
_modstring=${_modstring#;}
|
# _modstring=${_modstring#;}
|
||||||
printf '%s\n' "$_modstring" > .modstring
|
# printf '%s\n' "$_modstring" > .modstring
|
||||||
}
|
# }
|
||||||
|
|
||||||
# # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
# # Load Map
|
# # Load Map
|
||||||
@@ -333,12 +333,12 @@ main() {
|
|||||||
# msg "Setting up environment"
|
# msg "Setting up environment"
|
||||||
# setup_environment || die "Could not set up environment."
|
# setup_environment || die "Could not set up environment."
|
||||||
|
|
||||||
msg "Loading mods"
|
# msg "Loading mods"
|
||||||
load_mods || die "Could not load mods"
|
# load_mods || die "Could not load mods"
|
||||||
mod_string=$(cat .modstring)
|
# mod_string=$(cat .modstring)
|
||||||
|
|
||||||
msg "Loading stock map data"
|
# msg "Loading stock map data"
|
||||||
load_stock_map_data || die "Could not load map"
|
# load_stock_map_data || die "Could not load map"
|
||||||
|
|
||||||
msg "Patching types.xml"
|
msg "Patching types.xml"
|
||||||
patch_types || die "Failed to patch types"
|
patch_types || die "Failed to patch types"
|
||||||
@@ -349,10 +349,6 @@ main() {
|
|||||||
msg "Creating custom types list"
|
msg "Creating custom types list"
|
||||||
load_customtypes || die "Failed to load custom types"
|
load_customtypes || die "Failed to load custom types"
|
||||||
|
|
||||||
echo '===================================='
|
|
||||||
printf '%s - Server started.\n' "$(date)"
|
|
||||||
echo '===================================='
|
|
||||||
|
|
||||||
# creating temp.bat here to avoid the arg max char limit of windows cmd.exe
|
# creating temp.bat here to avoid the arg max char limit of windows cmd.exe
|
||||||
cat > temp.bat <<EOF
|
cat > temp.bat <<EOF
|
||||||
:start
|
:start
|
||||||
@@ -362,6 +358,10 @@ EOF
|
|||||||
# start the server
|
# start the server
|
||||||
cmd.exe /C temp.bat
|
cmd.exe /C temp.bat
|
||||||
|
|
||||||
|
echo '===================================='
|
||||||
|
printf '%s - Server started.\n' "$(date)"
|
||||||
|
echo '===================================='
|
||||||
|
|
||||||
printf '\n**** Sleeping for: %s *****\n\n' "$RESTART_INTERVAL"
|
printf '\n**** Sleeping for: %s *****\n\n' "$RESTART_INTERVAL"
|
||||||
|
|
||||||
count=0
|
count=0
|
||||||
|
|||||||
147
server_start.sh
147
server_start.sh
@@ -43,8 +43,12 @@ export CACHE="$LOCAL_DAYZ_FILES/cache"
|
|||||||
export STOCK_SERVER_CACHE="$CACHE/stock_server"
|
export STOCK_SERVER_CACHE="$CACHE/stock_server"
|
||||||
export MOD_CACHE="$CACHE/mods"
|
export MOD_CACHE="$CACHE/mods"
|
||||||
export SERVERS="$LOCAL_DAYZ_FILES/servers"
|
export SERVERS="$LOCAL_DAYZ_FILES/servers"
|
||||||
|
|
||||||
# (4 hours, in seconds)
|
# (4 hours, in seconds)
|
||||||
export RESTART_INTERVAL=$((60 * 60 * 4))
|
################################# export RESTART_INTERVAL=$((60 * 60 * 4))
|
||||||
|
|
||||||
|
# (10 minutes)
|
||||||
|
export RESTART_INTERVAL=$((10 * 60))
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
# 03. Mount network drive
|
# 03. Mount network drive
|
||||||
@@ -83,42 +87,60 @@ init_server() {
|
|||||||
# ===================================================
|
# ===================================================
|
||||||
# 05. Load stock files
|
# 05. Load stock files
|
||||||
# ===================================================
|
# ===================================================
|
||||||
# load_stock_map_data() {
|
load_stock_map_data() {
|
||||||
# mkdir -p "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME"
|
mkdir -p "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME"
|
||||||
# do_sync --exclude='*storage_1*' \
|
|
||||||
# "$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME"/ \
|
do_sync --exclude='*storage_1*' \
|
||||||
# "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" || \
|
"$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME"/ \
|
||||||
# die "Failed to copy stock map data"
|
"$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" || \
|
||||||
# }
|
die "Failed to copy remote stock map data to local cache"
|
||||||
|
}
|
||||||
|
|
||||||
refresh_local_cache() {
|
refresh_local_cache() {
|
||||||
msg "Refreshing local stock server cache"
|
msg "Refreshing local stock server cache"
|
||||||
if ! islocked_remote_server ; then
|
if ! islocked_remote_server ; then
|
||||||
do_sync "$REMOTE_STOCK_SERVER"/ "$STOCK_SERVER_CACHE"
|
do_sync "$REMOTE_STOCK_SERVER"/ "$STOCK_SERVER_CACHE" || die "Failed to copy remote stock server data to local cache"
|
||||||
else
|
else
|
||||||
msg "Remote server is locked, sleeping..."
|
msg "Remote server is locked, sleeping..."
|
||||||
while islocked_remote_server ; do
|
while islocked_remote_server ; do
|
||||||
sleep 15
|
sleep 15
|
||||||
echo 'Sleeping...'
|
echo 'Sleeping...'
|
||||||
done
|
done
|
||||||
do_sync "$REMOTE_STOCK_SERVER"/ "$STOCK_SERVER_CACHE"
|
do_sync "$REMOTE_STOCK_SERVER"/ "$STOCK_SERVER_CACHE" || die "Failed to copy remote stock server data to local cache"
|
||||||
fi
|
fi
|
||||||
msg "Stock server data copied into local server cache!"
|
msg "Sucessfully copied stock server data into local cache"
|
||||||
|
|
||||||
|
# -------------------------------------
|
||||||
|
|
||||||
|
msg "Refreshing local map data cache for: $MAP_FOLDER_NAME"
|
||||||
|
if ! islocked_remote_server ; then
|
||||||
|
do_sync "$REMOTE_MAPS/$MAP_FOLDER_NAME"/ "$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME" || \
|
||||||
|
die "Failed to copy remote stock map data for: $MAP_FOLDER_NAME"
|
||||||
|
else
|
||||||
|
msg "Remote server is locked, sleeping..."
|
||||||
|
while islocked_remote_server ; do
|
||||||
|
sleep 15
|
||||||
|
echo 'Sleeping...'
|
||||||
|
done
|
||||||
|
do_sync "$REMOTE_MAPS/$MAP_FOLDER_NAME"/ "$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME" || \
|
||||||
|
die "Failed to copy remote stock map data for: $MAP_FOLDER_NAME"
|
||||||
|
fi
|
||||||
|
msg "Successfully copied stock map data for: $MAP_FOLDER_NAME"
|
||||||
|
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
|
|
||||||
msg "Refreshing local mods cache"
|
msg "Refreshing local mods cache"
|
||||||
if ! islocked_remote_server ; then
|
if ! islocked_remote_server ; then
|
||||||
do_sync "$REMOTE_MODS"/ "$MOD_CACHE"
|
do_sync "$REMOTE_MODS"/ "$MOD_CACHE" || die "Failed to copy remote mods to local cache"
|
||||||
else
|
else
|
||||||
msg "Remote server is locked, sleeping..."
|
msg "Remote server is locked, sleeping..."
|
||||||
while islocked_remote_server ; do
|
while islocked_remote_server ; do
|
||||||
sleep 15
|
sleep 15
|
||||||
echo 'Sleeping...'
|
echo 'Sleeping...'
|
||||||
done
|
done
|
||||||
do_sync "$REMOTE_MODS"/ "$MOD_CACHE"
|
do_sync "$REMOTE_MODS"/ "$MOD_CACHE" || die "Failed to copy remote mods to local cache"
|
||||||
fi
|
fi
|
||||||
msg "Mods data copied into local mod cache!"
|
msg "Successfully copied remote mods into local cache"
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_environment() {
|
setup_environment() {
|
||||||
@@ -128,19 +150,68 @@ setup_environment() {
|
|||||||
do_sync "$STOCK_SERVER_CACHE/$folder"/ "$SERVER_HOME/$folder" || die "Failed to copy stock: $folder"
|
do_sync "$STOCK_SERVER_CACHE/$folder"/ "$SERVER_HOME/$folder" || die "Failed to copy stock: $folder"
|
||||||
done
|
done
|
||||||
# list of all stock server files
|
# list of all stock server files
|
||||||
for file in ban.txt dayz.gproj dayzsetting.xml whitelist.txt \
|
for file in dayz.gproj dayzsetting.xml whitelist.txt \
|
||||||
DayZServer_x64.exe steam_api64.dll steamclient64.dll \
|
DayZServer_x64.exe steam_api64.dll steamclient64.dll \
|
||||||
tier0_s64.dll vstdlib_s64.dll ; do
|
tier0_s64.dll vstdlib_s64.dll ; do
|
||||||
cp -fv "$STOCK_SERVER_CACHE/$file" "$SERVER_HOME/$file" || die "Failed to copy stock: $file"
|
cp -fv "$STOCK_SERVER_CACHE/$file" "$SERVER_HOME/$file" || die "Failed to copy stock: $file"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
msg "Copying into $SERVER_HOME stock map data for: $MAP_FOLDER_NAME"
|
||||||
|
load_stock_map_data
|
||||||
|
|
||||||
msg "Copying mod files from local cache into $SERVER_HOME"
|
msg "Copying mod files from local cache into $SERVER_HOME"
|
||||||
do_sync "$MOD_CACHE/$MAP_FOLDER_NAME"/ "$SERVER_HOME/mods" || die "Failed to copy mods to $SERVER_HOME"
|
do_sync "$MOD_CACHE/$MAP_FOLDER_NAME"/ "$SERVER_HOME/mods" || die "Failed to copy mods to $SERVER_HOME"
|
||||||
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~ TODO: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
msg "Copying DZSA executable"
|
||||||
# msg "Copying DZSA executable"
|
do_sync "$REMOTE_DIR/software/DZSALModServer.exe" "$SERVER_HOME"/
|
||||||
# cp -f "$DAYZ_FILES/software/DZSALModServer.exe" "$SERVER_HOME/"
|
}
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~ TODO: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
# finds list of mods to load and stores them in .modstring file
|
||||||
|
# to be used as parameters to the server
|
||||||
|
load_mods() {
|
||||||
|
if [ ! -f "$MOD_CACHE/$MAP_FOLDER_NAME/mods.txt" ] ; then
|
||||||
|
die "mods.txt list for $MAP_FOLDER_NAME is missing"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$SERVER_HOME/mods"
|
||||||
|
|
||||||
|
_modstring=""
|
||||||
|
while read -r mod ; do
|
||||||
|
case $mod in
|
||||||
|
'@'*)
|
||||||
|
msg "- Found mod: $mod"
|
||||||
|
_modstring="$_modstring;mods/$mod"
|
||||||
|
|
||||||
|
# common spelling differences, check for all
|
||||||
|
for addon_folder in addons Addons addon Addon add_ons add_on Add_on Add_ons ; do
|
||||||
|
if [ -d "$SERVER_HOME/mods/$mod/$addon_folder" ] ; then
|
||||||
|
for addon in "$SERVER_HOME/mods/$mod/$addon_folder"/* ; do
|
||||||
|
if [ ! -f "$SERVER_HOME/addons/${addon##*/}" ] ; then
|
||||||
|
cp -f "$addon" "$SERVER_HOME/addons/"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for key_folder in keys Keys key Key ; do
|
||||||
|
if [ -d "$SERVER_HOME/mods/$mod/$key_folder" ] ; then
|
||||||
|
for key in "$SERVER_HOME/mods/$mod/$key_folder"/* ; do
|
||||||
|
if [ ! -f "$SERVER_HOME/keys/${key##*/}" ] ; then
|
||||||
|
cp -f "$key" "$SERVER_HOME/keys/"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
esac
|
||||||
|
done < "$MOD_CACHE/$MAP_FOLDER_NAME/mods.txt"
|
||||||
|
|
||||||
|
# trim the initial leading ';'
|
||||||
|
_modstring=${_modstring#;}
|
||||||
|
printf '%s\n' "$_modstring" > .modstring
|
||||||
|
unset _modstring
|
||||||
|
|
||||||
|
msg "Mods successfully loaded. Using modstring:"
|
||||||
|
printf '"%s"\n' "$(cat .modstring)"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
@@ -164,6 +235,44 @@ start_server() {
|
|||||||
|
|
||||||
msg "Setting up environment"
|
msg "Setting up environment"
|
||||||
setup_environment || die "Could not set up environment."
|
setup_environment || die "Could not set up environment."
|
||||||
|
|
||||||
|
msg "Loading mods"
|
||||||
|
load_mods || die "Could not load mods"
|
||||||
|
mod_string=$(cat .modstring)
|
||||||
|
|
||||||
|
# creating temp.bat here to avoid the arg max char limit of windows cmd.exe
|
||||||
|
cat > temp.bat <<EOF
|
||||||
|
:start
|
||||||
|
start "DayZ Server" /min DZSALModServer.exe -config=serverDZ.cfg -port="$SERVER_PORT" -profiles=Profilesfolder -mod="$mod_string" -cpuCount="$SERVER_CPU" -dologs -adminlog -netlog -freezecheck
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# start the server
|
||||||
|
cmd.exe /C temp.bat
|
||||||
|
|
||||||
|
echo '===================================='
|
||||||
|
printf '%s - Server started.\n' "$(date)"
|
||||||
|
echo '===================================='
|
||||||
|
|
||||||
|
printf '\n**** Sleeping for: %s *****\n\n' "$RESTART_INTERVAL"
|
||||||
|
|
||||||
|
count=0
|
||||||
|
while [ "$count" -lt "$RESTART_INTERVAL" ] ; do
|
||||||
|
sleep 60
|
||||||
|
count=$((count + 60))
|
||||||
|
msg "TIME LEFT BEFORE RESTART: $(( (RESTART_INTERVAL - count) / 60 )) minutes"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "==========================="
|
||||||
|
|
||||||
|
msg "Time up"
|
||||||
|
msg "Killing server"
|
||||||
|
cmd.exe /C taskkill /im DayZServer_x64.exe /F
|
||||||
|
rm -f temp.bat 2>/dev/null ||:
|
||||||
|
|
||||||
|
msg "Sleeping 10 seconds to settle"
|
||||||
|
sleep 10
|
||||||
|
msg "SERVER IS RESTARTING"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user