| 12345678910111213141516171819202122232425262728293031323334 |
- #!/bin/bash
- # LinuxGSM check_players_online.sh module
- # Author: Daniel Gibbs
- # Contributors: https://linuxgsm.com/contrib
- # Website: https://linuxgsm.com
- # Description: Queries the server with gamedig and sets ${playersonline} to the
- # current player count when players are connected (empty otherwise).
- # Used by the stoponlyifnoplayers feature to postpone stop/restart.
- moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
- playersonline=""
- if [ "${stoponlyifnoplayers}" == "on" ]; then
- if [ "${querymode}" == "2" ] || [ "${querymode}" == "3" ]; then
- querysucceeded="0"
- for queryip in "${queryips[@]}"; do
- query_gamedig.sh
- if [ "${querystatus}" == "0" ]; then
- querysucceeded="1"
- if [ -n "${gdplayers}" ] && [ "${gdplayers}" -ne 0 ]; then
- playersonline="${gdplayers}"
- break
- fi
- fi
- done
- # The query failed for every configured IP, so the player count could not be
- # determined. Fail open (proceed as if empty) rather than block the server
- # indefinitely, but warn clearly since the safety check did not actually run.
- if [ "${querysucceeded}" == "0" ]; then
- fn_print_warn_nl "Unable to determine player count: stoponlyifnoplayers check skipped"
- fn_script_log_warn "Unable to determine player count via gamedig: stoponlyifnoplayers check skipped"
- fi
- fi
- fi
|