diff --git a/.github/support.yml b/.github/support.yml index 7689688e1..01cde2963 100644 --- a/.github/support.yml +++ b/.github/support.yml @@ -1,7 +1,7 @@ # Configuration for support-requests - https://github.com/dessant/support-requests # Label used to mark issues as support requests -supportLabel: Type: support +supportLabel: "Type: support" # Comment to post on issues marked as support requests. Add a link # to a support page, or set to `false` to disable supportComment: > @@ -12,4 +12,4 @@ supportComment: > # Whether to close issues marked as support requests close: true # Whether to lock issues marked as support requests -lock: false \ No newline at end of file +lock: false diff --git a/lgsm/data/alert_discord_logo.png b/lgsm/data/alert_discord_logo.png new file mode 100644 index 000000000..e56a92932 Binary files /dev/null and b/lgsm/data/alert_discord_logo.png differ diff --git a/lgsm/functions/alert_discord.sh b/lgsm/functions/alert_discord.sh index 70da55e02..2da1910ed 100644 --- a/lgsm/functions/alert_discord.sh +++ b/lgsm/functions/alert_discord.sh @@ -8,7 +8,7 @@ json=$(cat <&1 | awk '{print $1}' | grep -Ec "^${servicename}:") + status=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | grep -Ecx "^${servicename}") fi diff --git a/lgsm/functions/command_console.sh b/lgsm/functions/command_console.sh index 8feed5bb6..e7d9a6ac9 100644 --- a/lgsm/functions/command_console.sh +++ b/lgsm/functions/command_console.sh @@ -30,7 +30,7 @@ if [ "${status}" != "0" ]; then fn_print_ok_nl "Accessing console" fn_script_log_pass "Console accessed" sleep 0.5 - tmux attach-session -t="${servicename}" + tmux attach-session -t "${servicename}" fn_print_ok_nl "Closing console" fn_script_log_pass "Console closed" else diff --git a/lgsm/functions/command_debug.sh b/lgsm/functions/command_debug.sh index 3f9b3b3f7..270d23e5f 100644 --- a/lgsm/functions/command_debug.sh +++ b/lgsm/functions/command_debug.sh @@ -96,15 +96,16 @@ fn_script_log_info "${rootdir}/${lockselfname}" trap fn_lockfile_trap INT cd "${executabledir}" || exit +# Note: do not add double quotes to ${executable} ${parms} if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then ${executable} ${parms} -debug elif [ "${engine}" == "realvirtuality" ]; then # Arma3 requires semicolons in the module list, which need to # be escaped for regular (tmux) loading, but need to be # stripped when loading straight from the console. - "${executable}" "${parms//\\;/;}" + ${executable} ${parms//\\;/;} else - "${executable}" "${parms}" + ${executable} ${parms} fi fn_print_dots "Stopping debug" diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh index 2dc10ecf3..208910942 100644 --- a/lgsm/functions/command_start.sh +++ b/lgsm/functions/command_start.sh @@ -25,14 +25,6 @@ fn_start_teamspeak3(){ touch "${servercfgfullpath}" fi sleep 0.5 - check_status.sh - if [ "${status}" != "0" ]; then - fn_print_info_nl "${servername} is already running" - fn_script_log_error "${servername} is already running" - if [ -z "${exitbypass}" ]; then - core_exit.sh - fi - fi if [ -f "${lgsmlog}" ]; then mv "${lgsmlog}" "${lgsmlogdate}" fi @@ -81,26 +73,15 @@ fn_start_tmux(){ fi # Log rotation - check_status.sh - if [ "${status}" == "0" ]; then - fn_script_log_info "Rotating log files" - if [ "${engine}" == "unreal2" ]; then - if [ -f "${gamelog}" ]; then - mv "${gamelog}" "${gamelogdate}" - fi - fi + fn_script_log_info "Rotating log files" + if [ "${engine}" == "unreal2" ]&&[ -f "${gamelog}" ]; then + mv "${gamelog}" "${gamelogdate}" + fi + if [ -f "${lgsmlog}" ]; then mv "${lgsmlog}" "${lgsmlogdate}" - mv "${consolelog}" "${consolelogdate}" fi - - # If server is already running exit - check_status.sh - if [ "${status}" != "0" ]; then - fn_print_info_nl "${servername} is already running" - fn_script_log_error "${servername} is already running" - if [ -z "${exitbypass}" ]; then - core_exit.sh - fi + if [ -f "${consolelog}" ]; then + mv "${consolelog}" "${consolelogdate}" fi # Create lockfile @@ -118,7 +99,7 @@ fn_start_tmux(){ fn_script_log "Tmux version: master (user compiled)" echo "Tmux version: master (user compiled)" >> "${consolelog}" if [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then - tmux pipe-pane -o -t="${servicename}" "exec cat >> '${consolelog}'" + tmux pipe-pane -o -t "${servicename}" "exec cat >> '${consolelog}'" fi elif [ -n "${tmuxversion}" ]; then # Get the digit version of tmux @@ -136,7 +117,7 @@ fn_start_tmux(){ Currently installed: $(tmux -V)" > "${consolelog}" # Console logging enable or not set elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then - tmux pipe-pane -o -t="${servicename}" "exec cat >> '${consolelog}'" + tmux pipe-pane -o -t "${servicename}" "exec cat >> '${consolelog}'" fi else echo "Unable to detect tmux version" >> "${consolelog}" @@ -209,17 +190,23 @@ sleep 0.5 fn_print_dots "${servername}" sleep 0.5 check.sh +# Is the server already started +if [ "${status}" != "0" ]; then # $status comes from check_status.sh, which is run by check.sh for this command + fn_print_info_nl "${servername} is already running" + fn_script_log_error "${servername} is already running" + if [ -z "${exitbypass}" ]; then + core_exit.sh + fi +fi fix.sh info_config.sh logs.sh # Will check for updates is updateonstart is yes -if [ "${status}" == "0" ]; then - if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then - exitbypass=1 - unset updateonstart - command_update.sh - fi +if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then + exitbypass=1 + unset updateonstart + command_update.sh fi if [ "${gamename}" == "TeamSpeak 3" ]; then diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh index cc9ea471b..7b8ce1597 100644 --- a/lgsm/functions/command_stop.sh +++ b/lgsm/functions/command_stop.sh @@ -34,7 +34,6 @@ fn_stop_graceful_ctrlc(){ fn_script_log_error "Graceful: CTRL+c: FAIL" fi sleep 0.5 - fn_stop_tmux } # Attempts graceful shutdown by sending a specified command. @@ -64,7 +63,6 @@ fn_stop_graceful_cmd(){ fn_script_log_error "Graceful: sending \"${1}\": FAIL" fi sleep 0.5 - fn_stop_tmux } # Attempts graceful of goldsource using rcon 'quit' command. @@ -85,7 +83,6 @@ fn_stop_graceful_goldsource(){ fn_print_ok_eol_nl fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds" sleep 0.5 - fn_stop_tmux } # Attempts graceful of 7 Days To Die using telnet. @@ -174,7 +171,6 @@ fn_stop_graceful_sdtd(){ fn_script_log_warn "Graceful: telnet: expect not installed: FAIL" fi sleep 0.5 - fn_stop_tmux } fn_stop_graceful_select(){ @@ -195,8 +191,6 @@ fn_stop_graceful_select(){ fn_stop_graceful_ctrlc elif [ "${engine}" == "source" ]||[ "${engine}" == "quake" ]||[ "${engine}" == "idtech2" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "idtech3_ql" ]||[ "${engine}" == "Just Cause 2" ]||[ "${engine}" == "projectzomboid" ]||[ "${shortname}" == "rw" ]; then fn_stop_graceful_cmd "quit" 30 - else - fn_stop_tmux fi } @@ -263,12 +257,10 @@ fn_stop_tmux(){ fn_script_log_info "tmux kill-session: ${servername}" sleep 0.5 # Kill tmux session - tmux kill-session -t="${servicename}" > /dev/null 2>&1 + tmux kill-session -t "${servicename}" > /dev/null 2>&1 sleep 0.5 check_status.sh if [ "${status}" == "0" ]; then - # Remove lockfile - rm -f "${rootdir}/${lockselfname}" # ARK doesn't clean up immediately after tmux is killed. # Make certain the ports are cleared before continuing. if [ "${gamename}" == "ARK: Survival Evolved" ]; then @@ -277,28 +269,26 @@ fn_stop_tmux(){ fn_print_ok_nl "${servername}" fn_script_log_pass "Stopped ${servername}" else - fn_print_fail_nl "Unable to stop${servername}" - fn_script_log_fatal "Unable to stop${servername}" + fn_print_fail_nl "Unable to stop ${servername}" + fn_script_log_fatal "Unable to stop ${servername}" fi } # checks if the server is already stopped before trying to stop. fn_stop_pre_check(){ - if [ "${gamename}" == "TeamSpeak 3" ]; then - check_status.sh - if [ "${status}" == "0" ]; then - fn_print_info_nl "${servername} is already stopped" - fn_script_log_error "${servername} is already stopped" - else - fn_stop_teamspeak3 - fi +# Is the server already stopped + if [ "${status}" == "0" ]; then # $status comes from check_status.sh, which is run by check.sh for this command + fn_print_info_nl "${servername} is already stopped" + fn_script_log_error "${servername} is already stopped" + elif [ "${gamename}" == "TeamSpeak 3" ]; then + fn_stop_teamspeak3 else - if [ "${status}" == "0" ]; then - fn_print_info_nl "${servername} is already stopped" - fn_script_log_error "${servername} is already stopped" - else - fn_stop_graceful_select - fi + fn_stop_graceful_select + fi + # Check status again, a stop tmux session if needed + check_status.sh + if [ "${status}" != "0" ]; then + fn_stop_tmux fi } @@ -307,4 +297,8 @@ sleep 0.5 check.sh info_config.sh fn_stop_pre_check +# Remove lockfile +if [ -f "${rootdir}/${lockselfname}" ]; then + rm -f "${rootdir}/${lockselfname}" +fi core_exit.sh