lockserver
This commit is contained in:
@@ -7,58 +7,54 @@
|
|||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
# General Settings
|
# General Settings
|
||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
export DAYZ_FILES=/mnt/dayz
|
# export DAYZ_FILES=/mnt/dayz
|
||||||
export STOCK_SERVER_DATA="$DAYZ_FILES/stock/DayZServer"
|
# export STOCK_SERVER_DATA="$DAYZ_FILES/stock/DayZServer"
|
||||||
export MAIN="/mnt/c/DAYZ"
|
# export MAIN="/mnt/c/DAYZ"
|
||||||
export SERVERS="$MAIN/servers"
|
# export SERVERS="$MAIN/servers"
|
||||||
export CACHE="$MAIN/cache"
|
# export CACHE="$MAIN/cache"
|
||||||
export MOD_CACHE="$CACHE/mods"
|
# export MOD_CACHE="$CACHE/mods"
|
||||||
export RESTART_INTERVAL=$((60 * 60 * 4 + 3))
|
|
||||||
|
|
||||||
|
# export RESTART_INTERVAL=$((60 * 60 * 4 + 3))
|
||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
# Helper functions
|
# Helper functions
|
||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
alias do_sync='rsync -rltDh --delete --partial'
|
# alias do_sync='rsync -rltDh --delete --partial'
|
||||||
|
# msg() {
|
||||||
msg() {
|
# >&2 printf '[*] %s ...\n' "$*"
|
||||||
>&2 printf '[*] %s ...\n' "$*"
|
# }
|
||||||
}
|
# warn() {
|
||||||
|
# >&2 printf '\n\n<<<< WARNING: %s >>>>>\n\n' "$*"
|
||||||
warn() {
|
# }
|
||||||
>&2 printf '\n\n<<<< WARNING: %s >>>>>\n\n' "$*"
|
# die() {
|
||||||
}
|
# msg "$*"
|
||||||
|
# exit 1
|
||||||
die() {
|
# }
|
||||||
msg "$*"
|
# debug() {
|
||||||
exit 1
|
# if [ "$DEBUG" ] ; then
|
||||||
}
|
# >&2 printf ' DEBUG: %s\n' "$*"
|
||||||
|
# fi
|
||||||
debug() {
|
# }
|
||||||
if [ "$DEBUG" ] ; then
|
|
||||||
>&2 printf ' DEBUG: %s\n' "$*"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
# Checks
|
# Checks
|
||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
check() {
|
# check() {
|
||||||
mkdir -p "$DAYZ_FILES"
|
# mkdir -p "$DAYZ_FILES"
|
||||||
|
|
||||||
if ! mount | grep -i "$DAYZ_FILES" >/dev/null ; then
|
# if ! mount | grep -i "$DAYZ_FILES" >/dev/null ; then
|
||||||
msg "$DAYZ_FILES is not mounted!"
|
# msg "$DAYZ_FILES is not mounted!"
|
||||||
echo "hint: mount -t drvfs //truenas.home.weaver/dayz $DAYZ_FILES"
|
# echo "hint: mount -t drvfs //truenas.home.weaver/dayz $DAYZ_FILES"
|
||||||
exit 1
|
# exit 1
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
if [ ! -d "$MAIN" ] ; then
|
# if [ ! -d "$MAIN" ] ; then
|
||||||
die "$MAIN does not exist"
|
# die "$MAIN does not exist"
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
if [ ! -d "$STOCK_SERVER_DATA" ] ; then
|
# if [ ! -d "$STOCK_SERVER_DATA" ] ; then
|
||||||
die "$STOCK_SERVER_DATA does not exist"
|
# die "$STOCK_SERVER_DATA does not exist"
|
||||||
fi
|
# fi
|
||||||
}
|
# }
|
||||||
|
|
||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
# Environment Setup
|
# Environment Setup
|
||||||
|
|||||||
@@ -48,6 +48,11 @@ die() {
|
|||||||
errmsg "$*"
|
errmsg "$*"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
debug() {
|
||||||
|
if [ "$DEBUG" ] ; then
|
||||||
|
>&2 printf '>>>>>>>>>DEBUG: %s\n' "$*"
|
||||||
|
fi
|
||||||
|
}
|
||||||
isempty() {
|
isempty() {
|
||||||
for arg in "$@" ; do
|
for arg in "$@" ; do
|
||||||
# exit in error if file
|
# exit in error if file
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ export LOCAL_STOCK="$HOME/stock"
|
|||||||
export LOCAL_STOCK_GAME="$LOCAL_STOCK/DayZ"
|
export LOCAL_STOCK_GAME="$LOCAL_STOCK/DayZ"
|
||||||
export LOCAL_STOCK_SERVER="$LOCAL_STOCK/DayZServer"
|
export LOCAL_STOCK_SERVER="$LOCAL_STOCK/DayZServer"
|
||||||
export LOCAL_MODS="$HOME/mods"
|
export LOCAL_MODS="$HOME/mods"
|
||||||
|
export LOCKFILE="$REMOTE_DIR/lockfile"
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
# 03. Mount network drive
|
# 03. Mount network drive
|
||||||
@@ -44,23 +45,31 @@ fi
|
|||||||
# ===================================================
|
# ===================================================
|
||||||
# 04. Checks
|
# 04. Checks
|
||||||
# ===================================================
|
# ===================================================
|
||||||
mkdir -p "$LOCAL_STOCK_GAME" "$LOCAL_STOCK_SERVER" "$LOCAL_MODS"
|
check() {
|
||||||
|
mkdir -p "$LOCAL_STOCK_GAME" "$LOCAL_STOCK_SERVER" "$LOCAL_MODS"
|
||||||
|
|
||||||
if [ "$USER" != "$STEAMCMD_USER" ] ; then
|
if [ "$USER" != "$STEAMCMD_USER" ] ; then
|
||||||
die "Current user: '$USER' does not match '$STEAMCMD_USER'"
|
die "Current user: '$USER' does not match '$STEAMCMD_USER'"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "$MODLISTS" ] ; then
|
if [ ! -d "$MODLISTS" ] ; then
|
||||||
die "Could not find modlists at: $MODLISTS"
|
die "Could not find modlists at: $MODLISTS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "$REMOTE_MODS" ] ; then
|
if [ ! -d "$REMOTE_MODS" ] ; then
|
||||||
die "Could not find remote mods at: $REMOTE_MODS"
|
die "Could not find remote mods at: $REMOTE_MODS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "$REMOTE_MAPS" ] ; then
|
if [ ! -d "$REMOTE_MAPS" ] ; then
|
||||||
die "Could not find remote maps at: $REMOTE_MAPS"
|
die "Could not find remote maps at: $REMOTE_MAPS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if islocked_remote_server ; then
|
||||||
|
die "Remote server already locked?"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg "Health checks passed successfully."
|
||||||
|
}
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
# 05. Begin functions
|
# 05. Begin functions
|
||||||
@@ -259,18 +268,45 @@ update_stock_maps() {
|
|||||||
# --------------------------------------------------------------------------------------------------------------------
|
# --------------------------------------------------------------------------------------------------------------------
|
||||||
}
|
}
|
||||||
|
|
||||||
|
islocked_remote_server() {
|
||||||
|
if [ -e "$LOCKFILE" ] ; then
|
||||||
|
msg "Server is not currently locked!"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
lock_remote_server() {
|
||||||
|
msg "Locking remote server."
|
||||||
|
if ! echo 'locked' | tee "$LOCKFILE" ; then
|
||||||
|
die "Could not create: $LOCKFILE"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
unlock_remote_server() {
|
||||||
|
msg "Unlocking remote server."
|
||||||
|
rm -f "$LOCKFILE" || die "Could not remove: $LOCKFILE"
|
||||||
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
check || die "Failed to pass health checks"
|
||||||
|
|
||||||
|
lock_remote_server
|
||||||
|
|
||||||
update_server
|
update_server
|
||||||
update_game
|
update_game
|
||||||
update_stock_maps
|
update_stock_maps
|
||||||
|
|
||||||
for server in $(ls "$MODLISTS" | xargs) ; do
|
for server in $(ls "$MODLISTS" | xargs) ; do
|
||||||
[ -f "$MODLISTS/$server" ] || continue
|
[ -f "$MODLISTS/$server" ] || continue
|
||||||
update_mods_for_server "$server"
|
update_mods_for_server "$server"
|
||||||
unset server
|
unset server
|
||||||
# rm -rf "$HOME/.steam/debian-installation/steamapps/workshop/downloads"
|
# rm -rf "$HOME/.steam/debian-installation/steamapps/workshop/downloads"
|
||||||
# mkdir -p "$HOME/.steam/debian-installation/steamapps/workshop/downloads"
|
# mkdir -p "$HOME/.steam/debian-installation/steamapps/workshop/downloads"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
unlock_remote_server
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@" || exit 1
|
||||||
|
|||||||
@@ -1,9 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# shellcheck disable=2043
|
# 01. "should check code directly not $?"
|
||||||
|
# shellcheck disable=2181
|
||||||
|
#
|
||||||
|
# 02. "can't follow . import"
|
||||||
|
# shellcheck disable=1090
|
||||||
#
|
#
|
||||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||||
|
|
||||||
|
##################### CHANGE ME #################################
|
||||||
|
export SERVER_NAME="XXXXXXXXXX"
|
||||||
|
##################### CHANGE ME #################################
|
||||||
|
|
||||||
# ===================================================
|
# ===================================================
|
||||||
# 01. Attempt to load global DayZ values
|
# 01. Attempt to load global DayZ values
|
||||||
# ===================================================
|
# ===================================================
|
||||||
@@ -20,9 +28,45 @@ fi
|
|||||||
# ===================================================
|
# ===================================================
|
||||||
# 02. Local script variables
|
# 02. Local script variables
|
||||||
# ===================================================
|
# ===================================================
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Local server file hierarchy:
|
||||||
|
#
|
||||||
|
# c:/DAYZ
|
||||||
|
# ^--/servers
|
||||||
|
# ^--/cache
|
||||||
|
#
|
||||||
|
export MAIN="/mnt/c/DAYZ"
|
||||||
|
export CACHE="$MAIN/cache"
|
||||||
|
export MOD_CACHE="$CACHE/mods"
|
||||||
|
export SERVERS="$MAIN/servers"
|
||||||
|
export SERVER_HOME="$SERVERS/$SERVER_NAME"
|
||||||
|
export RESTART_INTERVAL=$((60 * 60 * 4 + 3))
|
||||||
|
|
||||||
main() {
|
# ===================================================
|
||||||
:
|
# 03. init and checks
|
||||||
|
# ===================================================
|
||||||
|
check() {
|
||||||
|
if [ ! -d "$MAIN" ] ; then
|
||||||
|
die "dir: $MAIN does not exist"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$SERVER_HOME" ] ; then
|
||||||
|
die "dir: $SERVER_HOME does not exist"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg "Health checks completed successfully."
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
init() {
|
||||||
|
check || die "Failed check()"
|
||||||
|
mkdir -p "$CACHE" "$MOD_CACHE"
|
||||||
|
|
||||||
|
msg "Completed intialization. Using server restart time of $RESTART_INTERVAL seconds."
|
||||||
|
}
|
||||||
|
# ===================================================
|
||||||
|
|
||||||
|
main() {
|
||||||
|
check || die "Failed check()"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@" || exit 1
|
||||||
|
|||||||
Reference in New Issue
Block a user