|
|
@@ -5,34 +5,17 @@
|
|
|
# Website: https://linuxgsm.com
|
|
|
# Description: Wipes server data, useful after updates for some games like Rust
|
|
|
|
|
|
-commandname="WIPE"
|
|
|
-commandaction="Wiping"
|
|
|
-functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
|
|
|
-
|
|
|
-check.sh
|
|
|
-fn_print_header
|
|
|
-fn_script_log "Entering ${gamename} ${commandaction}"
|
|
|
-
|
|
|
-# Process to server wipe.
|
|
|
-fn_wipe_server_process(){
|
|
|
- check_status.sh
|
|
|
- if [ "${status}" != "0" ]; then
|
|
|
- exitbypass=1
|
|
|
- command_stop.sh
|
|
|
- fn_wipe_server_remove_files
|
|
|
- exitbypass=1
|
|
|
- command_start.sh
|
|
|
- else
|
|
|
- fn_wipe_server_remove_files
|
|
|
- fi
|
|
|
- echo -e "server data wiped"
|
|
|
- fn_script_log "server data wiped."
|
|
|
+fn_commandname(){
|
|
|
+ commandname="WIPE"
|
|
|
+ commandaction="Wiping"
|
|
|
+ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
|
|
|
}
|
|
|
+fn_commandname
|
|
|
|
|
|
# Provides an exit code upon error.
|
|
|
fn_wipe_exit_code(){
|
|
|
((exitcode=$?))
|
|
|
- if [ ${exitcode} -ne 0 ]; then
|
|
|
+ if [ "${exitcode}" != 0 ]; then
|
|
|
fn_script_log_fatal "${currentaction}"
|
|
|
core_exit.sh
|
|
|
else
|
|
|
@@ -41,166 +24,190 @@ fn_wipe_exit_code(){
|
|
|
}
|
|
|
|
|
|
# Removes files to wipe server.
|
|
|
-fn_wipe_server_remove_files(){
|
|
|
- # Rust Wipe.
|
|
|
- if [ "${shortname}" == "rust" ]; then
|
|
|
- # Wipe pocedural map.
|
|
|
- if [ "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.map")" ]; then
|
|
|
- currentaction="Removing map file(s): ${serveridentitydir}/proceduralmap.*.map"
|
|
|
- echo -en "Removing procedural map proceduralmap.*.map file(s)..."
|
|
|
- fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- find "${serveridentitydir:?}" -type f -name "proceduralmap.*.map" -delete
|
|
|
- fn_wipe_exit_code
|
|
|
- fn_sleep_time
|
|
|
- else
|
|
|
- fn_print_information_nl "No procedural map file to remove"
|
|
|
- fn_script_log_info "No procedural map file to remove."
|
|
|
- fi
|
|
|
- # Wipe procedural map save.
|
|
|
- if [ "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.sav")" ]; then
|
|
|
- currentaction="Removing procedural map save(s): ${serveridentitydir}/proceduralmap.*.sav"
|
|
|
- echo -en "Removing map saves proceduralmap.*.sav file(s)..."
|
|
|
- fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- find "${serveridentitydir:?}" -type f -name "proceduralmap.*.sav" -delete
|
|
|
- fn_wipe_exit_code
|
|
|
- fn_sleep_time
|
|
|
- else
|
|
|
- fn_print_information_nl "No procedural map save to remove"
|
|
|
- fn_script_log_info "No procedural map save to remove."
|
|
|
- fi
|
|
|
- # Wipe Barren map.
|
|
|
- if [ "$(find "${serveridentitydir}" -type f -name "barren*.map")" ]; then
|
|
|
- currentaction="Removing map file(s): ${serveridentitydir}/barren*.map"
|
|
|
- echo -en "Removing barren map barren*.map file(s)..."
|
|
|
- fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- find "${serveridentitydir:?}" -type f -name "barren*.map" -delete
|
|
|
- fn_wipe_exit_code
|
|
|
- fn_sleep_time
|
|
|
- else
|
|
|
- fn_print_information_nl "No barren map file to remove"
|
|
|
- fn_script_log_info "No barren map file to remove."
|
|
|
- fi
|
|
|
- # Wipe barren map save.
|
|
|
- if [ "$(find "${serveridentitydir}" -type f -name "barren*.sav")" ]; then
|
|
|
- currentaction="Removing barren map save(s): ${serveridentitydir}/barren*.sav"
|
|
|
- echo -en "Removing barren map saves barren*.sav file(s)..."
|
|
|
- fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- find "${serveridentitydir:?}" -type f -name "barren*.sav" -delete
|
|
|
- fn_wipe_exit_code
|
|
|
- fn_sleep_time
|
|
|
- else
|
|
|
- fn_print_information_nl "No barren map save to remove"
|
|
|
- fn_script_log_info "No barren map save to remove."
|
|
|
- fi
|
|
|
- # Wipe user dir, might be a legacy thing, maybe to be removed.
|
|
|
- if [ -d "${serveridentitydir}/user" ]; then
|
|
|
- currentaction="Removing user directory: ${serveridentitydir}/user"
|
|
|
- echo -en "Removing user directory..."
|
|
|
- fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- rm -rf "${serveridentitydir:?}/user"
|
|
|
- fn_wipe_exit_code
|
|
|
- fn_sleep_time
|
|
|
+fn_wipe_server_files(){
|
|
|
+ fn_print_start_nl "Wiping server"
|
|
|
+ fn_script_log_info "Wiping server"
|
|
|
+ # Wipe procedural map.
|
|
|
+ if [ "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.map")" ]; then
|
|
|
+ echo -en "removing procedural map proceduralmap.*.map file(s)..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "Removing procedural map file(s): ${serveridentitydir}/proceduralmap.*.map"
|
|
|
+ find "${serveridentitydir:?}" -type f -name "proceduralmap.*.map" -delete | tee -a "${lgsmlog}"
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
+ else
|
|
|
+ echo -e "no procedural map file to remove"
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_pass "No procedural map file to remove"
|
|
|
+ fi
|
|
|
+ # Wipe procedural map save.
|
|
|
+ if [ "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.sav")" ]; then
|
|
|
+ echo -en "removing map saves proceduralmap.*.sav file(s)..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "Removing procedural map save(s): ${serveridentitydir}/proceduralmap.*.sav"
|
|
|
+ find "${serveridentitydir:?}" -type f -name "proceduralmap.*.sav" -delete | tee -a "${lgsmlog}"
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
+ else
|
|
|
+ echo -e "no procedural map save to remove"
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_pass "No procedural map save to remove"
|
|
|
+ fi
|
|
|
+ # Wipe Barren map.
|
|
|
+ if [ "$(find "${serveridentitydir}" -type f -name "barren*.map")" ]; then
|
|
|
+ echo -en "removing barren map barren*.map file(s)..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "Removing map file(s): ${serveridentitydir}/barren*.map"
|
|
|
+ find "${serveridentitydir:?}" -type f -name "barren*.map" -delete | tee -a "${lgsmlog}"
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
+ else
|
|
|
+ echo -e "no barren map file to remove"
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_pass "No barren map file to remove"
|
|
|
+ fi
|
|
|
+ # Wipe barren map save.
|
|
|
+ if [ "$(find "${serveridentitydir}" -type f -name "barren*.sav")" ]; then
|
|
|
+ echo -en "removing barren map saves barren*.sav file(s)..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "Removing barren map save(s): ${serveridentitydir}/barren*.sav"
|
|
|
+ find "${serveridentitydir:?}" -type f -name "barren*.sav" -delete | tee -a "${lgsmlog}"
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
+ else
|
|
|
+ echo -e "no barren map save to remove"
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_pass "No barren map save to remove."
|
|
|
+ fi
|
|
|
+ # Wipe user dir, might be a legacy thing, maybe to be removed.
|
|
|
+ if [ -d "${serveridentitydir}/user" ]; then
|
|
|
+ echo -en "removing user directory..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "removing user directory: ${serveridentitydir}/user"
|
|
|
+ rm -rf "${serveridentitydir:?}/user"
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
# We do not print additional information if there is nothing to remove since this might be obsolete.
|
|
|
- fi
|
|
|
- # Wipe storage dir, might be a legacy thing, maybe to be removed.
|
|
|
- if [ -d "${serveridentitydir}/storage" ]; then
|
|
|
- currentaction="Removing storage directory: ${serveridentitydir}/storage"
|
|
|
- echo -en "Removing storage directory..."
|
|
|
- fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- rm -rf "${serveridentitydir:?}/storage"
|
|
|
- fn_wipe_exit_code
|
|
|
- fn_sleep_time
|
|
|
+ fi
|
|
|
+ # Wipe storage dir, might be a legacy thing, maybe to be removed.
|
|
|
+ if [ -d "${serveridentitydir}/storage" ]; then
|
|
|
+ echo -en "removing storage directory..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "removing storage directory: ${serveridentitydir}/storage"
|
|
|
+ rm -rf "${serveridentitydir:?}/storage"
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
# We do not print additional information if there is nothing to remove since this might be obsolete.
|
|
|
- fi
|
|
|
- # Wipe sv.files.
|
|
|
- if [ "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then
|
|
|
- currentaction="Removing server misc files: ${serveridentitydir}/sv.files.*.db"
|
|
|
- echo -en "Removing server misc srv.files*.db file(s)..."
|
|
|
- fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- find "${serveridentitydir:?}" -type f -name "sv.files.*.db" -delete
|
|
|
- fn_wipe_exit_code
|
|
|
- fn_sleep_time
|
|
|
+ fi
|
|
|
+ # Wipe sv.files.
|
|
|
+ if [ "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then
|
|
|
+ echo -en "removing server misc srv.files*.db file(s)..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "Removing server misc files: ${serveridentitydir}/sv.files.*.db"
|
|
|
+ find "${serveridentitydir:?}" -type f -name "sv.files.*.db" -delete | tee -a "${lgsmlog}"
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
# No further information if not found because it should I could not get this file showing up.
|
|
|
- fi
|
|
|
- # Wipe player death files.
|
|
|
- if [ "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]; then
|
|
|
- currentaction="Removing player death files: ${serveridentitydir}/player.deaths.*.db"
|
|
|
- echo -en "Removing player deaths player.deaths.*.db file(s)..."
|
|
|
+ fi
|
|
|
+ # Wipe player death files.
|
|
|
+ if [ "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]; then
|
|
|
+ echo -en "removing player deaths player.deaths.*.db file(s)..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "Removing player death files: ${serveridentitydir}/player.deaths.*.db"
|
|
|
+ find "${serveridentitydir:?}" -type f -name "player.deaths.*.db" -delete | tee -a "${lgsmlog}"
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
+ else
|
|
|
+ echo -e "no player death to remove"
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_pass "No player death to remove"
|
|
|
+ fi
|
|
|
+ # Wipe blueprints only if full-wipe command was used.
|
|
|
+ if [ "${fullwipe}" == "1" ]; then
|
|
|
+ if [ "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]; then
|
|
|
+ echo -en "removing blueprints player.blueprints.*.db file(s)..."
|
|
|
fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- find "${serveridentitydir:?}" -type f -name "player.deaths.*.db" -delete
|
|
|
+ fn_script_log_info "Removing blueprint file(s): ${serveridentitydir}/player.blueprints.*.db"
|
|
|
+ find "${serveridentitydir:?}" -type f -name "player.blueprints.*.db" -delete | tee -a "${lgsmlog}"
|
|
|
fn_wipe_exit_code
|
|
|
fn_sleep_time
|
|
|
else
|
|
|
- fn_print_information_nl "No player death to remove"
|
|
|
- fn_script_log_info "No player death to remove."
|
|
|
- fi
|
|
|
- # Wipe blueprints only if wipeall command was used.
|
|
|
- if [ "${wipeall}" == "1" ]; then
|
|
|
- if [ "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]; then
|
|
|
- currentaction="Removing blueprint file(s): ${serveridentitydir}/player.blueprints.*.db"
|
|
|
- echo -en "Removing blueprints player.blueprints.*.db file(s)..."
|
|
|
- fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- find "${serveridentitydir:?}" -type f -name "player.blueprints.*.db" -delete
|
|
|
- fn_wipe_exit_code
|
|
|
- fn_sleep_time
|
|
|
- else
|
|
|
- fn_print_information_nl "No blueprint file to remove"
|
|
|
- fn_script_log_info "No blueprint file to remove."
|
|
|
- fi
|
|
|
- elif [ "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]; then
|
|
|
- fn_print_information_nl "Keeping blueprints"
|
|
|
- fn_script_log_info "Keeping blueprints."
|
|
|
- else
|
|
|
- fn_print_information_nl "No blueprints found"
|
|
|
- fn_script_log_info "No blueprints found."
|
|
|
- fn_sleep_time
|
|
|
+ echo -e "no blueprint file to remove"
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_pass "No blueprint file to remove"
|
|
|
fi
|
|
|
- # Wipe some logs that might be there.
|
|
|
- if [ "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then
|
|
|
- currentaction="Removing log files: ${serveridentitydir}/Log.*.txt"
|
|
|
- echo -en "Removing Log files..."
|
|
|
+ elif [ "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]; then
|
|
|
+ echo -e "keeping blueprints"
|
|
|
fn_sleep_time
|
|
|
- fn_script_log "${currentaction}"
|
|
|
- find "${serveridentitydir:?}" -type f -name "Log.*.txt" -delete
|
|
|
- fn_wipe_exit_code
|
|
|
+ fn_script_log_info "Keeping blueprints"
|
|
|
+ else
|
|
|
+ echo -e "no blueprints found"
|
|
|
fn_sleep_time
|
|
|
+ fn_script_log_pass "No blueprints found"
|
|
|
+ fi
|
|
|
+ # Wipe some logs that might be there.
|
|
|
+ if [ "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then
|
|
|
+ echo -en "removing Log files..."
|
|
|
+ fn_sleep_time
|
|
|
+ fn_script_log_info "Removing log files: ${serveridentitydir}/Log.*.txt"
|
|
|
+ find "${serveridentitydir:?}" -type f -name "Log.*.txt" -delete
|
|
|
+ fn_wipe_exit_code
|
|
|
+ fn_sleep_time
|
|
|
# We do not print additional information if there are no logs to remove.
|
|
|
- fi
|
|
|
- # You can add an "elif" here to add another game or engine.
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
-# Check if there is something to wipe, prompt the user, and call appropriate functions.
|
|
|
-# Rust Wipe.
|
|
|
-if [ "${shortname}" == "rust" ]; then
|
|
|
- if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "barren*.sav")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then
|
|
|
- fn_print_warning_nl "Any user, storage, log and map data from ${serveridentitydir} will be erased."
|
|
|
- if ! fn_prompt_yn "Continue?" Y; then
|
|
|
- core_exit.sh
|
|
|
+fn_stop_warning(){
|
|
|
+ fn_print_warn "this game server will be stopped during wipe"
|
|
|
+ fn_script_log_warn "this game server will be stopped during wipe"
|
|
|
+ totalseconds=3
|
|
|
+ for seconds in {3..1}; do
|
|
|
+ fn_print_warn "this game server will be stopped during wipe: ${totalseconds}"
|
|
|
+ totalseconds=$((totalseconds - 1))
|
|
|
+ sleep 1
|
|
|
+ if [ "${seconds}" == "0" ]; then
|
|
|
+ break
|
|
|
fi
|
|
|
- fn_script_log_info "User selects to erase any user, storage, log and map data from ${serveridentitydir}"
|
|
|
- fn_sleep_time
|
|
|
- fn_wipe_server_process
|
|
|
+ done
|
|
|
+ fn_print_warn_nl "this game server will be stopped during wipe"
|
|
|
+}
|
|
|
+
|
|
|
+fn_wipe_warning(){
|
|
|
+ fn_print_warn "wipe is about to start"
|
|
|
+ fn_script_log_warn "wipe is about to start"
|
|
|
+ totalseconds=3
|
|
|
+ for seconds in {3..1}; do
|
|
|
+ fn_print_warn "wipe is about to start: ${totalseconds}"
|
|
|
+ totalseconds=$((totalseconds - 1))
|
|
|
+ sleep 1
|
|
|
+ if [ "${seconds}" == "0" ]; then
|
|
|
+ break
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ fn_print_warn "wipe is about to start"
|
|
|
+}
|
|
|
+
|
|
|
+fn_print_dots ""
|
|
|
+check.sh
|
|
|
+
|
|
|
+# Check if there is something to wipe.
|
|
|
+if [ -d "${serveridentitydir}/storage" ]||[ -d "${serveridentitydir}/user" ]||[ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap*.sav")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "barren*.sav")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.deaths.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "player.blueprints.*.db")" ]||[ -n "$(find "${serveridentitydir}" -type f -name "sv.files.*.db")" ]; then
|
|
|
+ fn_wipe_warning
|
|
|
+ check_status.sh
|
|
|
+ if [ "${status}" != "0" ]; then
|
|
|
+ fn_stop_warning
|
|
|
+ exitbypass=1
|
|
|
+ command_stop.sh
|
|
|
+ fn_commandname
|
|
|
+ fn_wipe_server_files
|
|
|
+ exitbypass=1
|
|
|
+ command_start.sh
|
|
|
+ fn_commandname
|
|
|
else
|
|
|
- fn_print_information_nl "No data to wipe was found"
|
|
|
- fn_script_log_info "No data to wipe was found."
|
|
|
- core_exit.sh
|
|
|
+ fn_wipe_server_files
|
|
|
fi
|
|
|
-# You can add an "elif" here to add another game or engine.
|
|
|
-else
|
|
|
- # Game not listed.
|
|
|
- fn_print_information_nl "Wipe is not available for this game"
|
|
|
- fn_script_log_info "Wipe is not available for this game."
|
|
|
- core_exit.sh
|
|
|
+ fn_print_ok_nl ""
|
|
|
+ fn_script_log_pass "Wiping server"
|
|
|
fi
|
|
|
|
|
|
core_exit.sh
|