diff --git a/README.md b/README.md index 9839340f0..b194552ec 100644 --- a/README.md +++ b/README.md @@ -226,10 +226,10 @@ It is highly recommended you set the following environment values before startin | OLD_BACKUP_DAYS | How many days to keep backups | 30 | any positive integer | | AUTO_UPDATE_CRON_EXPRESSION | Setting affects frequency of automatic updates. | 0 \* \* \* \* | Needs a Cron-Expression - See [Configuring Automatic Backups with Cron](#configuring-automatic-backups-with-cron) | | AUTO_UPDATE_ENABLED | Enables automatic updates | false | true/false | -| AUTO_UPDATE_WARN_MINUTES | How long to wait to update the server, after the player were informed. (This will be ignored, if no Players are connected) | 30 | !0 | +| AUTO_UPDATE_WARN_MINUTES | How long to wait to update the server, after the player were informed. (This will be ignored, if no Players are connected) | 30 | Integer | | AUTO_REBOOT_CRON_EXPRESSION | Setting affects frequency of automatic updates. | 0 0 \* \* \* | Needs a Cron-Expression - See [Configuring Automatic Backups with Cron](#configuring-automatic-reboots-with-cron) | | AUTO_REBOOT_ENABLED | Enables automatic reboots | false | true/false | -| AUTO_REBOOT_WARN_MINUTES | How long to wait to reboot the server, after the player were informed. | 5 | !0 | +| AUTO_REBOOT_WARN_MINUTES | How long to wait to reboot the server, after the player were informed. | 5 | Integer | | AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE | Restart the Server even if there are players online. | false | true/false | | TARGET_MANIFEST_ID | Locks game version to corespond with Manfiest ID from Steam Download Depot. | | See [Manifest ID Table](#locking-specific-game-version) | | DISCORD_WEBHOOK_URL | Discord webhook url found after creating a webhook on a discord server | | `https://discord.com/api/webhooks/` | diff --git a/scripts/auto_reboot.sh b/scripts/auto_reboot.sh index 59a99cbf4..1698b2cf7 100644 --- a/scripts/auto_reboot.sh +++ b/scripts/auto_reboot.sh @@ -25,8 +25,7 @@ if [[ "${AUTO_REBOOT_WARN_MINUTES}" =~ ^[0-9]+$ ]]; then broadcast_command "The Server will reboot in ${i} minutes" sleep "1m" done - RCON save - RCON "shutdown 1" + shutdown_server exit 0 fi diff --git a/scripts/backup.sh b/scripts/backup.sh index 1cb1da998..0feaa802a 100644 --- a/scripts/backup.sh +++ b/scripts/backup.sh @@ -4,7 +4,7 @@ source "/home/steam/server/helper_functions.sh" DiscordMessage "Creating backup..." "in-progress" if [ "${RCON_ENABLED,,}" = true ]; then - RCON save + save_server fi DATE=$(date +"%Y-%m-%d_%H-%M-%S") diff --git a/scripts/helper_functions.sh b/scripts/helper_functions.sh index 162306b77..d35970cfa 100644 --- a/scripts/helper_functions.sh +++ b/scripts/helper_functions.sh @@ -175,3 +175,30 @@ broadcast_command() { fi return "$return_val" } + +# Saves the server +# Returns 0 if it saves +# Returns 1 if it is not able to save +save_server() { + local return_val=0 + if ! RCON save; then + return_val=1 + fi + return "$return_val" +} + +# Saves then shutdowns the server +# Returns 0 if it is shutdown +# Returns 1 if it is not able to be shutdown +shutdown_server() { + local return_val=0 + # Do not shutdown if not able to save + if save_server; then + if ! RCON "DoExit"; then + return_val=1 + fi + else + return_val=1 + fi + return "$return_val" +} diff --git a/scripts/init.sh b/scripts/init.sh index 675a4ef02..1c74576d7 100644 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -28,10 +28,8 @@ mkdir -p /palworld/backups term_handler() { DiscordMessage "${DISCORD_PRE_SHUTDOWN_MESSAGE}" "in-progress" - if [ "${RCON_ENABLED,,}" = true ]; then - RCON save - RCON "shutdown 1" - else # Does not save + if ! shutdown_server; then + # Does not save kill -SIGTERM "$(pidof PalServer-Linux-Test)" fi diff --git a/scripts/restore.sh b/scripts/restore.sh index 7c918652d..792487fdb 100644 --- a/scripts/restore.sh +++ b/scripts/restore.sh @@ -63,8 +63,7 @@ if [ -f "$BACKUP_FILE" ]; then if [ "${RCON_ENABLED}" = true ]; then LogAction "Shutting Down Server" - RCON save - RCON "shutdown 1" + shutdown_server else LogWarn "RCON is not enabled. Please enable RCON to use this feature. Unable to restore backup." exit 1