diff --git a/linux-setup.sh b/linux-setup.sh index 579ae67..7f67b62 100644 --- a/linux-setup.sh +++ b/linux-setup.sh @@ -15,5 +15,4 @@ chmod +x update.sh # ========================================================= # for modserver -sudo apt install -y xmlstarlet jq - +sudo apt install -y xmlstarlet jq cifs-utils samba-common diff --git a/modserver/globals.sh b/modserver/globals.sh index c1f0bb4..a804d4c 100644 --- a/modserver/globals.sh +++ b/modserver/globals.sh @@ -9,16 +9,19 @@ export DAYZ_SERVER_ID=223350 export STEAM_USER="yzaddayz" export DEBUG=false + +export REMOTE_DIR="/mnt/dayz" +export REMOTE_MAPS="$REMOTE_DIR/stock/maps" +export REMOTE_MODS="$REMOTE_DIR/mods" + +export REMOTE_STOCK_SERVER="$REMOTE_DIR/stock/DayZServer" +export REMOTE_STOCK_GAME="$REMOTE_DIR/stock/DayZ" ################### GLOBAL VARS ############################## - - ################### GLOBAL ALIASES ########################### alias do_sync='rsync -rvltDhu --delete --partial --progress' ################### GLOBAL ALIASES ########################### - - ################### GLOBAL FUNCTIONS ######################### msg() { printf '[*] %s\n' "$*" @@ -26,9 +29,45 @@ msg() { errmsg() { >&2 printf '[Error]: %s\n' "$*" } +mount_dayz_network_drive() { + if ! is_network_drive_mounted ; then + + if [ -e /proc/version ] ; then + read -r ver < /proc/version + case $ver in + # WSL + *icrosoft*) + msg "Detected WSL, mounting via drvfs" + sudo mount -t drvfs -o user=samba \ + //truenas.local.wvr.sh/dayz /mnt/dayz + ;; + *) + msg "Detected Linux, mounting via cifs" + sudo mount -t cifs //truenas.local.wvr.sh/dayz /mnt/dayz \ + -o credentials=/root/sambacreds.txt \ + -o uid=1000 \ + -o gid=1000 \ + -o iocharset=utf8 \ + -o vers=3.0 + esac + + unset ver + # asdf + else + errmsg 'could not find /proc/version' + exit 1 + fi + + fi + if ! is_network_drive_mounted ; then + errmsg 'Could not mount network drive' + exit 1 + fi +} +is_network_drive_mounted() { + if [ ! -f "$REMOTE_DIR/canary" ] ; then + return 1 + fi +} ################### GLOBAL FUNCTIONS ######################### -mount_dayz() { - sudo mount -t drvfs -o user=samba \ - //truenas.local.wvr.sh/dayz /mnt/dayz -} diff --git a/modserver/update_mods.sh b/modserver/update_mods.sh index a64bdb2..d055474 100644 --- a/modserver/update_mods.sh +++ b/modserver/update_mods.sh @@ -15,11 +15,59 @@ else >&2 echo "Could not load: $GLOBALS_FILE" exit 1 fi + # =================================================== +# 02. Local script variables +# =================================================== +export LOCAL_STOCK_GAME="$HOME/DayZ" +export LOCAL_STOCK_SERVER="$HOME/DayZServer" +mkdir -p "$LOCAL_STOCK_GAME" "$LOCAL_STOCK_SERVER" + +# =================================================== +# 03. Mount network drive +# =================================================== +if ! is_network_drive_mounted ; then + mount_dayz_network_drive + + if ! is_network_drive_mounted ; then + errmsg "Could not mount network drive" + exit 1 + fi +fi + +# =================================================== +# 04. Begin functions +# =================================================== +update_server() { + msg "-------- UPDATING DAYZ SERVER -------------------" + steamcmd -tcp \ + +force_install_dir "$LOCAL_STOCK_SERVER" \ + +@sSteamCmdForcePlatformType windows \ + +@ShutdownOnFailedCommand 1 \ + +login "$STEAM_USER" \ + +app_update "$DAYZ_SERVER_ID" \ + +quit + + is_network_drive_mounted && + do_sync "$LOCAL_STOCK_SERVER"/ "$REMOTE_STOCK_SERVER" + msg "-------- DONE UPDATING SERVER -------------------" + # LOCAL_INSTALL_DIR="${HOME}/.steam/debian-installation/steamapps/common/DayZServer" +} + +update_game() { + : + # steamcmd -tcp +login "$STEAM_USER" +app_update "$DAYZ_GAME_ID" +quit +} + +main() { + update_server + # update_game +} + +main "$@" + +##### GARBAGE BELOW +# LOCAL_MODS_DIR="$HOME/steam_data/steamapps/workshop/content/$DAYZ_GAME_ID" +# LOCAL_SERVER_INSTALL_DIR="$HOME/steam_data/steamapps/workshop/content/$DAYZ_GAME_ID" -######### LOCAL SCRIPT VARS ############### -LOCAL_MODS_DIR="$HOME/steam_data/steamapps/workshop/content/$DAYZ_GAME_ID" -REMOTE_MAPS="/mnt/dayz/stock/maps" -REMOTE_MODS="/mnt/dayz/mods" -###########################################