From abfe5c1a67f64a433394ccac5fd4f02a76e38c43 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 5 Jan 2025 11:53:50 +0000 Subject: [PATCH] fix(st): resolve Stationeers config issues (#4733) * feat(st): add config install * update start parameters * bug * ui fix * rename worldname to worldsave * add worldname to legacy vars --- .../config-lgsm/stserver/_default.cfg | 4 +- lgsm/modules/command_dev_query_raw.sh | 2 +- lgsm/modules/command_monitor.sh | 60 +++++++++---------- lgsm/modules/core_legacy.sh | 6 ++ lgsm/modules/info_game.sh | 2 +- lgsm/modules/install_config.sh | 5 ++ 6 files changed, 45 insertions(+), 34 deletions(-) diff --git a/lgsm/config-default/config-lgsm/stserver/_default.cfg b/lgsm/config-default/config-lgsm/stserver/_default.cfg index 2f2fe0ed49..e32bb23030 100644 --- a/lgsm/config-default/config-lgsm/stserver/_default.cfg +++ b/lgsm/config-default/config-lgsm/stserver/_default.cfg @@ -9,11 +9,11 @@ #### Game Server Settings #### ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters -worldname="moon_save" +worldsave="moon_save" worldtype="Moon" ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters -startparameters="-LOADLATEST ${worldname} ${worldtype}" +startparameters="-LOAD ${worldsave} ${worldtype}" #### LinuxGSM Settings #### diff --git a/lgsm/modules/command_dev_query_raw.sh b/lgsm/modules/command_dev_query_raw.sh index ea42599f95..ebe54c40fd 100644 --- a/lgsm/modules/command_dev_query_raw.sh +++ b/lgsm/modules/command_dev_query_raw.sh @@ -198,7 +198,7 @@ fn_messages_separator echo -e "" echo -e "${bold}${lightyellow}SS Output${default}" fn_messages_separator -fn_info_message_ports +fn_info_messages_ports eval "${portcommand}" echo -e "" diff --git a/lgsm/modules/command_monitor.sh b/lgsm/modules/command_monitor.sh index 6baa24a08c..7feb054553 100644 --- a/lgsm/modules/command_monitor.sh +++ b/lgsm/modules/command_monitor.sh @@ -18,10 +18,10 @@ fn_monitor_check_monitoring() { date '+%s' > "${lockdir:?}/${selfname}-monitoring.lock" elif [ ! -f "${lockdir}/${selfname}-monitoring.lock" ]; then # Monitor does not run if lockfile is not found. - fn_print_dots "Checking lockfile:" + fn_print_dots "Checking lockfile" fn_print_checking_eol fn_script_log_info "Checking lockfile: CHECKING" - fn_print_error "Checking lockfile: No lockfile found:" + fn_print_error "Checking lockfile: No lockfile found" fn_print_error_eol_nl fn_script_log_error "Checking lockfile: No lockfile found: ERROR" echo -e "* Start ${selfname} to run monitor." @@ -31,10 +31,10 @@ fn_monitor_check_monitoring() { fn_monitor_check_install() { if [ "$(pgrep -fc -u "${USER}" "/bin/bash ./${selfname} install")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} i")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} auto-install")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} ai")" != "0" ]; then - fn_print_dots "Checking installer:" + fn_print_dots "Checking installer" fn_print_checking_eol fn_script_log_info "Checking installer: CHECKING" - fn_print_info "Checking installer: LinuxGSM is installing:" + fn_print_info "Checking installer: LinuxGSM is installing" fn_print_info_eol_nl fn_script_log_pass "Checking installer: LinuxGSM is installing" core_exit.sh @@ -43,9 +43,9 @@ fn_monitor_check_install() { fn_monitor_check_debug() { if [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} debug")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} d")" != "0" ]; then - fn_print_dots "Checking debug:" + fn_print_dots "Checking debug" fn_print_checking_eol - fn_print_info "Checking debug: Debug is running:" + fn_print_info "Checking debug: Debug is running" fn_print_info_eol_nl fn_script_log_pass "Checking debug: Debug is running" core_exit.sh @@ -54,9 +54,9 @@ fn_monitor_check_debug() { fn_monitor_check_details() { if [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} details")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} dt")" != "0" ]; then - fn_print_dots "Checking details:" + fn_print_dots "Checking details" fn_print_checking_eol - fn_print_info "Checking details: Details is running:" + fn_print_info "Checking details: Details is running" fn_print_info_eol_nl fn_script_log_pass "Checking details: Details is running" core_exit.sh @@ -67,9 +67,9 @@ fn_monitor_check_starting() { # Remove stale lockfile. if [ -f "${lockdir}/${selfname}-starting.lock" ]; then if [ "$(find "${lockdir}/${selfname}-starting.lock" -mmin +5)" ]; then - fn_print_dots "Checking start:" + fn_print_dots "Checking start" fn_print_checking_eol - fn_print_warn "Checking start: Removing stale lockfile:" + fn_print_warn "Checking start: Removing stale lockfile" fn_print_warn_eol_nl fn_script_log_warn "Checking start: Removing stale lockfile" rm -f "${lockdir:?}/${selfname}-starting.lock" @@ -77,9 +77,9 @@ fn_monitor_check_starting() { fi if [ -f "${lockdir}/${selfname}-starting.lock" ] && [[ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} start")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} s")" != "0" ]]; then - fn_print_dots "Checking start:" + fn_print_dots "Checking start" fn_print_checking_eol - fn_print_info "Checking start: LinuxGSM is starting:" + fn_print_info "Checking start: LinuxGSM is starting" fn_print_info_eol_nl fn_script_log_info "Checking backup: LinuxGSM is starting" core_exit.sh @@ -90,9 +90,9 @@ fn_monitor_check_stopping() { # Remove stale lockfile. if [ -f "${lockdir}/${selfname}-stopping.lock" ]; then if [ "$(find "${lockdir}/${selfname}-stopping.lock" -mmin +5)" ]; then - fn_print_dots "Checking stop:" + fn_print_dots "Checking stop" fn_print_checking_eol - fn_print_warn "Checking stop: Removing stale lockfile:" + fn_print_warn "Checking stop: Removing stale lockfile" fn_print_warn_eol_nl fn_script_log_warn "Checking stop: Removing stale lockfile" rm -f "${lockdir:?}/${selfname}-stopping.lock" @@ -100,9 +100,9 @@ fn_monitor_check_stopping() { fi if [ -f "${lockdir}/${selfname}-stopping.lock" ] && [[ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} stop")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} s")" != "0" ]]; then - fn_print_dots "Checking stop:" + fn_print_dots "Checking stop" fn_print_checking_eol - fn_print_info "Checking stop: LinuxGSM is stopping:" + fn_print_info "Checking stop: LinuxGSM is stopping" fn_print_info_eol_nl fn_script_log_info "Checking backup: LinuxGSM is stopping" core_exit.sh @@ -113,9 +113,9 @@ fn_monitor_check_backup() { # Remove stale lockfile. if [ -f "${lockdir}/backup.lock" ]; then if [ "$(find "${lockdir}/backup.lock" -mmin +60)" ]; then - fn_print_dots "Checking backup:" + fn_print_dots "Checking backup" fn_print_checking_eol - fn_print_warn "Checking backup: Removing stale lockfile:" + fn_print_warn "Checking backup: Removing stale lockfile" fn_print_warn_eol fn_script_log_warn "Checking backup: Removing stale lockfile" rm -f "${lockdir:?}/backup.lock" @@ -123,9 +123,9 @@ fn_monitor_check_backup() { fi if [ -f "${lockdir}/backup.lock" ] && [[ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} backup")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} b")" != "0" ]]; then - fn_print_dots "Checking backup:" + fn_print_dots "Checking backup" fn_print_checking_eol - fn_print_info "Checking backup: Backup is running:" + fn_print_info "Checking backup: Backup is running" fn_print_info_eol_nl fn_script_log_info "Checking backup: Backup is running" core_exit.sh @@ -136,9 +136,9 @@ fn_monitor_check_update() { # Remove stale lockfile. if [ -f "${lockdir}/update.lock" ]; then if [ "$(find "${lockdir}/update.lock" -mmin +15)" ]; then - fn_print_dots "Checking update:" + fn_print_dots "Checking update" fn_print_checking_eol - fn_print_warn "Checking update: Removing stale lockfile:" + fn_print_warn "Checking update: Removing stale lockfile" fn_print_warn_eol_nl fn_script_log_warn "Checking update: Removing stale lockfile" rm -f "${lockdir:?}/update.lock" @@ -146,9 +146,9 @@ fn_monitor_check_update() { fi if [ -f "${lockdir}/update.lock" ] && [[ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} update")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} validate")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} v")" != "0" || "$(pgrep -fc force-update "${USER}" "/bin/bash ./${selfname} fu")" != "0" ]]; then - fn_print_dots "Checking update:" + fn_print_dots "Checking update" fn_print_checking_eol - fn_print_info "Checking update: LinuxGSM is updating the game server:" + fn_print_info "Checking update: LinuxGSM is updating the game server" fn_print_info_eol_nl fn_script_log_pass "Checking update: LinuxGSM is updating the game server" core_exit.sh @@ -159,10 +159,10 @@ fn_monitor_check_update() { fn_monitor_check_update_source() { if [ -f "${consolelogdir}/${selfname}-console.log" ] && [ "${engine}" == "source" ]; then if grep -q "Your server needs to be restarted in order to receive the latest update." "${consolelogdir}/${selfname}-console.log"; then - fn_print_dots "Checking update:" + fn_print_dots "Checking update" fn_print_checking_eol fn_script_log_info "Checking update: CHECKING" - fn_print_ok "Checking update:" + fn_print_ok "Checking update" fn_print_ok_eol_nl fn_script_log_info "Checking update: ${selfname} has requested an update and needs to be restarted" alert="update-request" @@ -182,7 +182,7 @@ fn_monitor_check_session() { sessionheight="23" # Check for PIDS with identical tmux sessions running. if [ "$(pgrep -fcx "tmux -L ${socketname} new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}")" -ge "2" ]; then - fn_print_error "Checking session: There are PIDS with identical tmux sessions running:" + fn_print_error "Checking session: There are PIDS with identical tmux sessions running" fn_print_error_eol_nl fn_script_log_error "Checking session: ERROR" fn_script_log_error "Checking session: There are PIDS with identical tmux sessions running" @@ -192,7 +192,7 @@ fn_monitor_check_session() { core_exit.sh # Check for tmux pids with the same tmux session and socket names. This will reduce issues with migration to release v23.5.0. #4296 elif [ "$(pgrep -fc -u "${USER}" "tmux -L ${sessionname} new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}")" != "0" ]; then - fn_print_error "Checking session: PIDS with the same tmux session and socket names are running:" + fn_print_error "Checking session: PIDS with the same tmux session and socket names are running" fn_print_error_eol_nl fn_script_log_error "Checking session: ERROR" fn_script_log_error "Checking session: PIDS with the same tmux session and socket names are running" @@ -202,7 +202,7 @@ fn_monitor_check_session() { core_exit.sh # Check for tmux pids that are using the old type of tmux session. This will reduce issues with migration to release v23.5.0. #4296 elif [ "$(pgrep -fc -u "${USER}" "tmux new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}")" != "0" ]; then - fn_print_error "Checking session: PIDS with old type tmux session are running:" + fn_print_error "Checking session: PIDS with old type tmux session are running" fn_print_error_eol_nl fn_script_log_error "Checking session: ERROR" fn_script_log_error "Checking session: PIDS with old type tmux session are running" @@ -233,7 +233,7 @@ fn_monitor_check_session() { # Monitor will check queryport is set before continuing. fn_monitor_check_queryport() { if [ -z "${queryport}" ] || [ "${queryport}" == "0" ]; then - fn_print_dots "Checking port:" + fn_print_dots "Checking port" fn_print_checking_eol fn_script_log_info "Checking port: CHECKING" if [ -n "${rconenabled}" ] && [ "${rconenabled}" != "true" ] && [ "${shortname}" == "av" ]; then diff --git a/lgsm/modules/core_legacy.sh b/lgsm/modules/core_legacy.sh index 4c9a55c398..1d5bc430c8 100644 --- a/lgsm/modules/core_legacy.sh +++ b/lgsm/modules/core_legacy.sh @@ -35,6 +35,12 @@ if [ -n "${autosaveinterval}" ]; then saveinterval="${autosaveinterval}" fi +if [ "${shortname}" == "st" ]; then + if [ -n "${worldname}" ]; then + worldsave="${worldname}" + fi +fi + # Added as part of migrating functions dir to modules dir. # Will remove functions dir if files in modules dir older than 14 days functionsdir="${lgsmdir}/modules" diff --git a/lgsm/modules/info_game.sh b/lgsm/modules/info_game.sh index 4e1d5dedd2..3bae60f0b9 100644 --- a/lgsm/modules/info_game.sh +++ b/lgsm/modules/info_game.sh @@ -673,7 +673,7 @@ fn_info_game_st() { saveinterval="${saveinterval:-"0"}" servername="${servername:-"NOT SET"}" serverpassword="${serverpassword:-"NOT SET"}" - worldname="${worldname:-"NOT SET"}" + worldsave="${worldsave:-"NOT SET"}" worldtype="${worldtype:-"NOT SET"}" } diff --git a/lgsm/modules/install_config.sh b/lgsm/modules/install_config.sh index c78c74fb20..db6b1e5cfe 100644 --- a/lgsm/modules/install_config.sh +++ b/lgsm/modules/install_config.sh @@ -687,6 +687,11 @@ elif [ "${shortname}" == "sb" ]; then fn_default_config_remote fn_set_config_vars fn_list_config_locations +elif [ "${shortname}" == "st" ]; then + array_configs+=(setting.xml) + fn_default_config_remote + fn_set_config_vars + fn_list_config_locations elif [ "${shortname}" == "stn" ]; then array_configs+=(ServerConfig.txt ServerUsers.txt TpPresets.json UserPermissions.json) fn_default_config_remote