From da9412b1afc27e873b04a4ab98c1caf68ac2b70a Mon Sep 17 00:00:00 2001 From: Mitch Weaver Date: Sat, 25 Nov 2023 02:11:45 -0600 Subject: [PATCH] test --- ORIGINAL_start.sh | 103 ++++++------ lib/globals.sh | 13 ++ modserver_update.sh | 29 ++-- server_start.sh | 160 +++++++++++++++++-- servers/mitch_chernarus_test.enva/SERVER.ENV | 5 + 5 files changed, 226 insertions(+), 84 deletions(-) create mode 100644 servers/mitch_chernarus_test.enva/SERVER.ENV diff --git a/ORIGINAL_start.sh b/ORIGINAL_start.sh index 8d2976d..74c683d 100644 --- a/ORIGINAL_start.sh +++ b/ORIGINAL_start.sh @@ -14,6 +14,7 @@ # export CACHE="$MAIN/cache" # export MOD_CACHE="$CACHE/mods" +# ORIGINAL_DIR="$PWD" # export RESTART_INTERVAL=$((60 * 60 * 4 + 3)) # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* # Helper functions @@ -59,31 +60,31 @@ # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* # Environment Setup # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -init() { - mkdir -p "$SERVER_HOME" "$MOD_CACHE/$MAP_FOLDER_NAME" - :>"$SERVER_HOME/.modstring" -} +# init() { +# mkdir -p "$SERVER_HOME" "$MOD_CACHE/$MAP_FOLDER_NAME" +# :>"$SERVER_HOME/.modstring" +# } -setup_environment() { - msg "Copying stock server data" +# setup_environment() { +# msg "Copying stock server data" - # list of all stock folders - for folder in addons battleye bliss docs dta keys ; do - do_sync "$STOCK_SERVER_DATA/$folder"/ "$SERVER_HOME/$folder" || die "Failed to copy stock: $folder" - done +# # list of all stock folders +# for folder in addons battleye bliss docs dta keys ; do +# do_sync "$STOCK_SERVER_DATA/$folder"/ "$SERVER_HOME/$folder" || die "Failed to copy stock: $folder" +# done - # list of all stock files - for file in ban.txt dayz.gproj dayzsetting.xml whitelist.txt \ - DayZServer_x64.exe steam_api64.dll steamclient64.dll tier0_s64.dll vstdlib_s64.dll ; do - cp -f "$STOCK_SERVER_DATA/$file" "$SERVER_HOME/$file" || die "Failed to copy stock: $file" - done +# # list of all stock files +# for file in ban.txt dayz.gproj dayzsetting.xml whitelist.txt \ +# DayZServer_x64.exe steam_api64.dll steamclient64.dll tier0_s64.dll vstdlib_s64.dll ; do +# cp -f "$STOCK_SERVER_DATA/$file" "$SERVER_HOME/$file" || die "Failed to copy stock: $file" +# done - msg "Copying mod files" - do_sync "$DAYZ_FILES/mods/$MAP_FOLDER_NAME"/ "$MOD_CACHE/$MAP_FOLDER_NAME" || die "Failed to copy mod files" +# msg "Copying mod files" +# do_sync "$DAYZ_FILES/mods/$MAP_FOLDER_NAME"/ "$MOD_CACHE/$MAP_FOLDER_NAME" || die "Failed to copy mod files" - msg "Copying DZSA executable" - cp -f "$DAYZ_FILES/software/DZSALModServer.exe" "$SERVER_HOME/" -} +# # msg "Copying DZSA executable" +# # cp -f "$DAYZ_FILES/software/DZSALModServer.exe" "$SERVER_HOME/" +# } # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* # Load Mods @@ -130,16 +131,16 @@ load_mods() { printf '%s\n' "$_modstring" > .modstring } -# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -# Load Map -# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -load_stock_map_data() { - mkdir -p "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" - do_sync --exclude='*storage_1*' \ - "$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME"/ \ - "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" || \ - die "Failed to copy stock map data" -} +# # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* +# # Load Map +# # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* +# load_stock_map_data() { +# mkdir -p "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" +# do_sync --exclude='*storage_1*' \ +# "$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME"/ \ +# "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" || \ +# die "Failed to copy stock map data" +# } # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* # Types Patching @@ -324,13 +325,13 @@ load_configs() { # Main # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* main() { - init - cd "$SERVER_HOME" || die "Could not cd to '$SERVER_HOME'" + # init + # cd "$SERVER_HOME" || die "Could not cd to '$SERVER_HOME'" - check || die "Failed check" + # check || die "Failed check" - msg "Setting up environment" - setup_environment || die "Could not set up environment." + # msg "Setting up environment" + # setup_environment || die "Could not set up environment." msg "Loading mods" load_mods || die "Could not load mods" @@ -357,9 +358,12 @@ cat > temp.bat <"$SERVER_HOME/.modstring" + check || die "Failed check()" - mkdir -p "$CACHE" "$MOD_CACHE" msg "Completed intialization. Using server restart time of $RESTART_INTERVAL seconds." } -# =================================================== -main() { +# =================================================== +# 04. Load stock files +# =================================================== +# load_stock_map_data() { +# mkdir -p "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" +# do_sync --exclude='*storage_1*' \ +# "$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME"/ \ +# "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" || \ +# die "Failed to copy stock map data" +# } + +refresh_local_cache() { + msg "Refreshing local stock server cache" + if ! islocked_remote_server ; then + load_stock_map_data + do_sync "$REMOTE_STOCK_SERVER"/ "$STOCK_SERVER_CACHE" + unlock_remote_server + else + msg "Remote server is locked, sleeping..." + while islocked_remote_server ; do + sleep 15 + echo 'Sleeping...' + done + lock_remote_server + do_sync "$REMOTE_STOCK_SERVER"/ "$STOCK_SERVER_CACHE" + unlock_remote_server + fi + msg "Stock server data copied into local server cache!" + + # ------------------------------------- + + msg "Refreshing local mods cache" + if ! islocked_remote_server ; then + lock_remote_server + do_sync "$REMOTE_MODS"/ "$MOD_CACHE" + unlock_remote_server + else + msg "Remote server is locked, sleeping..." + while islocked_remote_server ; do + sleep 15 + echo 'Sleeping...' + done + lock_remote_server + do_sync "$REMOTE_MODS"/ "$MOD_CACHE" + unlock_remote_server + fi + msg "Mods data copied into local mod cache!" +} + +setup_environment() { + msg "Copying stock server data from local cache into $SERVER_HOME" + # list of all stock server folders + for folder in addons battleye bliss docs dta keys ; do + do_sync "$STOCK_SERVER_CACHE/$folder"/ "$SERVER_HOME/$folder" || die "Failed to copy stock: $folder" + done + # list of all stock server files + for file in ban.txt dayz.gproj dayzsetting.xml whitelist.txt \ + DayZServer_x64.exe steam_api64.dll steamclient64.dll \ + tier0_s64.dll vstdlib_s64.dll ; do + cp -fv "$STOCK_SERVER_CACHE/$file" "$SERVER_HOME/$file" || die "Failed to copy stock: $file" + done + + 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" + + # ~~~~~~~~~~~~~~~~~~~~~~~~~~ TODO: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # msg "Copying DZSA executable" + # cp -f "$DAYZ_FILES/software/DZSALModServer.exe" "$SERVER_HOME/" + # ~~~~~~~~~~~~~~~~~~~~~~~~~~ TODO: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +} + +# =================================================== +# 05. Start function +# =================================================== +start_server() { check || die "Failed check()" + + # wait until dayz-modserver lockfile is released on the NAS + if islocked_remote_server ; then + msg "Remote file server is currently locked" + msg "Sleeping until is no longer locked..." + while islocked_remote_server ; do + echo "Sleeping..." + sleep 10 + done + msg "Server unlocked! Continuing..." + fi + + cd "$SERVER_HOME" || die "Could not cd to '$SERVER_HOME'" + + msg "Setting up environment" + setup_environment || die "Could not set up environment." +} + +# =================================================== +# 06. Main loop +# =================================================== +main() { + cd "$ORIGINAL_DIR" || die "Can no longer cd to $ORIGINAL_DIR" + + if [ -e ./SERVER.ENV ] ; then + . ./SERVER.ENV + else + die "Could not source ./SERVER.ENV" + fi + + # this must be here and not up top as we must load it from the SERVER.ENV + export SERVER_HOME="$SERVERS/$SERVER_NAME" + + # create directories in $SERVER_HOME + # blank the modstring + init_server + + if [ -e ./serverDZ.cfg ] ; then + cp -f ./serverDZ.cfg "$SERVER_HOME"/ || die "Failed to copy ./serverDZ into $SERVER_HOME" + else + die "Could not find ./serverDZ.cfg" + fi + + # sync remote server stock and mod files into local cache + refresh_local_cache || die "Failed to refresh local cache." + + # load stock server, map, mod files into $SERVER_HOME + setup_environment || die "Failed to setup environment." + + start_server "$@" } main "$@" || exit 1 diff --git a/servers/mitch_chernarus_test.enva/SERVER.ENV b/servers/mitch_chernarus_test.enva/SERVER.ENV new file mode 100644 index 0000000..eb2bf43 --- /dev/null +++ b/servers/mitch_chernarus_test.enva/SERVER.ENV @@ -0,0 +1,5 @@ +#!/bin/sh + +export SERVER_NAME="Mitch - Chernarus Test v0.0" +export MAP_FOLDER_NAME="$CHERNARUS_MAP_NAME" +