diff --git a/lgsm/functions/check.sh b/lgsm/functions/check.sh index 95e1a92ba..ac5fb9bc8 100644 --- a/lgsm/functions/check.sh +++ b/lgsm/functions/check.sh @@ -83,3 +83,11 @@ do check_status.sh fi done + +local allowed_commands_array=( command_install.sh command_start.sh command_debug.sh ) +for allowed_command in "${allowed_commands_array[@]}" +do + if [ "${allowed_command}" == "${function_selfname}" ]; then + check_system_requirements.sh + fi +done diff --git a/lgsm/functions/check_config.sh b/lgsm/functions/check_config.sh index b42c47d9d..61d0a8caf 100644 --- a/lgsm/functions/check_config.sh +++ b/lgsm/functions/check_config.sh @@ -17,4 +17,23 @@ if [ ! -e "${servercfgfullpath}" ]; then fn_script_log_warn "${servercfgfullpath}" sleep 2 fi -fi \ No newline at end of file +fi + +if [ "${gamename}" == "Rust" ]; then + if [ -z "${rconpassword}" ]; then + fn_print_dots "" + sleep 0.5 + fn_print_fail_nl "RCON password is not set!" + echo " * Not setting an RCON password causes issues with ${gamename}" + fn_script_log_fatal "RCON password is not set" + fn_script_log_fatal "Not setting an RCON password causes issues with ${gamename}" + core_exit.sh + elif [ "${rconpassword}" == "CHANGE_ME" ]; then + fn_print_dots "" + sleep 0.5 + fn_print_warn_nl "Default RCON Password detected!" + echo " * Having ${rconpassword} as a password is not very safe." + fn_script_log_warn "Default RCON Password detected" + sleep 2 + fi +fi diff --git a/lgsm/functions/check_system_requirements.sh b/lgsm/functions/check_system_requirements.sh new file mode 100644 index 000000000..d9e56cc5f --- /dev/null +++ b/lgsm/functions/check_system_requirements.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# LGSM check_system_requirements.sh +# Author: Daniel Gibbs +# Contributor: UltimateByte +# Website: https://gameservermanagers.com +# Description: Checks RAM requirements + +local commandname="CHECK" +local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" + +info_distro.sh + +# RAM requirements in megabytes for each game or engine. +if [ "${gamename}" == "Rust" ]; then + ramrequirementmb="4000" + ramrequirementgb="4" +fi + +# If the game or engine has a minimum RAM Requirement, compare it to system's available RAM. +if [ -n "${ramrequirement}" ]; then + if [ "${physmemtotalmb}" -lt "${ramrequirementmb}" ]; then + # Warn the user + fn_print_warn "Insufficient memory: ${ramrequirementgb}G required, ${physmemtotal} available" + sleep 1 + fn_print_warning "You may experiance poor performance from your server" + sleep 1 + fi +fi diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh index 13bade020..c53410353 100644 --- a/lgsm/functions/command_details.sh +++ b/lgsm/functions/command_details.sh @@ -43,8 +43,8 @@ fn_details_performance(){ # Uptime: 55d, 3h, 38m # Avg Load: 1.00, 1.01, 0.78 # - # Mem: total used free - # Physical: 741M 656M 85M + # Mem: total used free cached + # Physical: 741M 656M 85M 256M # Swap: 0B 0B 0B echo -e "" @@ -56,8 +56,8 @@ fn_details_performance(){ } | column -s $'\t' -t echo -e "" { - echo -e "${blue}Mem:\t${blue}total\t used\t free${default}" - echo -e "${blue}Physical:\t${default}${physmemtotal}\t${physmemused}\t${physmemfree}${default}" + echo -e "${blue}Mem:\t${blue}total\t used\t free\t cached${default}" + echo -e "${blue}Physical:\t${default}${physmemtotal}\t${physmemused}\t${physmemfree}\t${physmemcached}${default}" echo -e "${blue}Swap:\t${default}${swaptotal}\t${swapused}\t${swapfree}${default}" } | column -s $'\t' -t } diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh index f4e85e2d3..059fc93bd 100644 --- a/lgsm/functions/core_functions.sh +++ b/lgsm/functions/core_functions.sh @@ -222,6 +222,11 @@ functionfile="${FUNCNAME}" fn_fetch_function } +check_system_requirements.sh(){ +functionfile="${FUNCNAME}" +fn_fetch_function +} + check_tmux.sh(){ functionfile="${FUNCNAME}" fn_fetch_function diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh index 9c94b402e..79ddd6d2f 100644 --- a/lgsm/functions/info_config.sh +++ b/lgsm/functions/info_config.sh @@ -314,6 +314,54 @@ fn_info_config_unreal(){ fi } +fn_info_config_sdtd(){ + if [ ! -f "${servercfgfullpath}" ]; then + servername="${unavailable}" + serverpassword="${unavailable}" + port="${zero}" + queryport="${zero}" + webadminenabled="${unavailable}" + webadminport="${zero}" + webadminpass="${unavailable}" + telnetenabled="${unavailable}" + telnetport="${zero}" + telnetpass="${unavailable}" + slots="${unavailable}" + gamemode="${unavailable}" + gameworld="${unavailable}" + else + servername=$(grep "ServerName" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + serverpassword=$(grep "ServerPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + port=$(grep "ServerPort" "${servercfgfullpath}" | tr -cd '[:digit:]') + queryport=$((port + 1)) + + webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]') + webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]') + telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + + slots=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]') + gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"") + + # Not Set + servername=${servername:-"NOT SET"} + serverpassword=${serverpassword:-"NOT SET"} + port=${port:-"0"} + queryport=${queryport:-"0"} + webadminenabled=${webadminenabled:-"NOT SET"} + webadminport=${webadminport:-"0"} + webadminpass=${webadminpass:-"NOT SET"} + telnetenabled=${telnetenabled:-"NOT SET"} + telnetport=${telnetport:-"0"} + telnetpass=${telnetpass:-"NOT SET"} + slots=${slots:-"NOT SET"} + gamemode=${gamemode:-"NOT SET"} + gameworld=${gameworld:-"NOT SET"} + fi +} ## Just Cause 2 if [ "${engine}" == "avalanche" ]; then fn_info_config_avalanche @@ -352,4 +400,7 @@ elif [ "${engine}" == "terraria" ]; then # Unreal/Unreal 2 engine elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then fn_info_config_unreal +# 7 Day To Die (unity3d) +elif [ "${gamename}" == "7 Days To Die" ]; then + fn_info_config_sdtd fi diff --git a/lgsm/functions/info_distro.sh b/lgsm/functions/info_distro.sh index b75499f3d..02a2c0488 100644 --- a/lgsm/functions/info_distro.sh +++ b/lgsm/functions/info_distro.sh @@ -61,13 +61,14 @@ else fi physmemtotal=$(free ${humanreadable} | awk '/Mem:/ {print $2}') +physmemtotalmb=$(free -m | awk '/Mem:/ {print $2}') physmemused=$(free ${humanreadable} | awk '/Mem:/ {print $3}') physmemfree=$(free ${humanreadable} | awk '/Mem:/ {print $4}') +physmemcached=$(free ${humanreadable} | awk '/cache:/ {print $4}') swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}') swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}') swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}') - ### Disk Infomation ## Available disk space on the partition. @@ -111,4 +112,4 @@ if [ -d "${backupdir}" ]; then # size of most recent backup. lastbackupsize=$(du -h "${lastbackup}" | awk '{print $1}') -fi \ No newline at end of file +fi