diff --git a/Rust/cfg/lgsm-default.cfg b/Rust/cfg/lgsm-default.cfg new file mode 100644 index 000000000..91d7a32d9 --- /dev/null +++ b/Rust/cfg/lgsm-default.cfg @@ -0,0 +1,48 @@ +# This file does not include all possible commands but it includes the most common/useful ones. +# If you want to see all possible comands, in the server console type: find . + +# Before some variables are a # symbol. This means it is disabled. Remove the # symbol to enable them. + +######################################### +# Important Settings You Need To Change # +######################################### + +# A text description of your server. For a new line add: \n +server.description "LGSM Server\nRust support : UltimateByte" + +# A URL to the image which shows up on the server details screen (dimensions are 512x256). +server.headerimage "https://github.com/dgibbs64/linuxgsm/raw/master/images/logo/lgsm-full-light.png" + +# The URL to your servers website. +server.url "http://gameservermanagers.com/" + +#################################### +# Optional Settings You Can Change # +#################################### + +# A value of false makes text chat location based only (players need to be close to each other). +# Values: true, false +#server.globalchat true + +# Controls if player vs player damage is allowed. If your server is primarily for building, you'll want to set this to false +# Values: true, false +#server.pve false + +# Controls fall damage. +# Values: true, false +#falldamage.enabled true + +# Helicopter bullet accuracy. Higher numbers are less accurate. +#heli.bulletAccuracy 2 + +################################################ +# Settings That Will Lag Server Is Set Too Low # +################################################ + +# Changes how often resources respawn. +#spawn.min_rate 0.1 +#spawn.max_rate 1 + +# Changes how close resources spawn to each other. +#spawn.min_density 0.1 +#spawn.max_density 1 diff --git a/Rust/rustserver b/Rust/rustserver new file mode 100644 index 000000000..7e7457a44 --- /dev/null +++ b/Rust/rustserver @@ -0,0 +1,147 @@ +#!/bin/bash +# Rust +# Server Management Script +# Author: Daniel Gibbs +# Contributor: UltimateByte (LGSM adaptation), Wulf (Information) +# Website: http://gameservermanagers.com +if [ -f ".dev-debug" ]; then + exec 5>dev-debug.log + BASH_XTRACEFD="5" + set -x +fi + +version="230215" + +#### Variables #### + +# Notification Email +# (on|off) +emailnotification="off" +email="email@example.com" + +# Steam login (not required) +steamuser="anonymous" +steampass="" + +# Server settings +# More settings available after install in serverfiles/server/rust-server/server.cfg +servername="Rust LGSM Server" +ip="0.0.0.0" +port="28015" +rconport="28016" +rconpassword="CHANGE_ME" # Don't let it blank but change it +maxplayers="50" + +# Advanced +worldsize="4000" # default 4000; min : 2000 max : 8000 +saveinterval="300" # Auto-save in seconds +tickrate="30" # default 30; min acceptable 15 , max 100 or 128 + +# https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server +fn_parms(){ +parms="-batchmode +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile ${gamelogfile}" +} + +#### Advanced Variables #### + +# Github Branch Select +# Allows for the use of different function files +# from a different repo and/or branch. +githubuser="dgibbs64" +githubrepo="linuxgsm" +githubbranch="rust" + +# Steam +appid="258550" + +# Server Details +servicename="rust-server" +gamename="Rust" +engine="unity3d" + +# Directories +rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" +selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) +lockselfname=".${servicename}.lock" +filesdir="${rootdir}/serverfiles" +systemdir="${filesdir}" +executabledir="${filesdir}" +executable="./RustDedicated" +serveridentitydir="${systemdir}/server/${servicename}" +servercfg="server.cfg" +servercfgdir="${serveridentitydir}/cfg" +servercfgfullpath="${servercfgdir}/${servercfg}" +servercfgdefault="${servercfgdir}/lgsm-default.cfg" +backupdir="${rootdir}/backups" + +# Logging +logdays="7" +gamelogdir="${rootdir}/log/server" +scriptlogdir="${rootdir}/log/script" +consolelogdir="${rootdir}/log/console" + +gamelog="${gamelogdir}/${servicename}-game.log" +scriptlog="${scriptlogdir}/${servicename}-script.log" +consolelog="${consolelogdir}/${servicename}-console.log" +emaillog="${scriptlogdir}/${servicename}-email.log" +gamelogfile="\"gamelog-$(date '+%Y-%m-%d-%H-%M-%S').log\"" + +scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" +consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" + +##### Script ##### +# Do not edit + +fn_getgithubfile(){ +filename=$1 +exec=$2 +fileurl=${3:-$filename} +filepath="${rootdir}/${filename}" +filedir=$(dirname "${filepath}") +# If the function file is missing, then download +if [ ! -f "${filepath}" ]; then + if [ ! -d "${filedir}" ]; then + mkdir "${filedir}" + fi + githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${fileurl}" + echo -e " fetching ${filename}...\c" + if [ "$(command -v curl)" ]||[ "$(which curl >/dev/null 2>&1)" ]||[ -f "/usr/bin/curl" ]||[ -f "/bin/curl" ]; then + : + else + echo -e "\e[0;31mFAIL\e[0m\n" + echo "Curl is not installed!" + echo -e "" + exit + fi + curl=$(curl --fail -o "${filepath}" "${githuburl}" 2>&1) + if [ $? -ne 0 ]; then + echo -e "\e[0;31mFAIL\e[0m\n" + echo " ${curl}"|grep "curl:" + echo -e "${githuburl}\n" + exit + else + echo -e "\e[0;32mOK\e[0m" + fi + if [ "${exec}" ]; then + chmod +x "${filepath}" + fi +fi +if [ "${exec}" ]; then + source "${filepath}" +fi +} + +fn_runfunction(){ + fn_getgithubfile "functions/${functionfile}" 1 +} + +core_functions.sh(){ +# Functions are defined in core_functions.sh. +functionfile="${FUNCNAME}" +fn_runfunction +} + +core_functions.sh + +getopt=$1 +core_getopt.sh diff --git a/functions/command_details.sh b/functions/command_details.sh index 6de82eb8e..32965eb2e 100644 --- a/functions/command_details.sh +++ b/functions/command_details.sh @@ -2,7 +2,7 @@ # LGSM command_details.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="190316" +lgsm_version="230216" # Description: Displays server infomation. @@ -537,6 +537,27 @@ echo -e "" fn_details_statusbottom } +fn_details_rust(){ +echo -e "" +echo -e "\e[92mPorts\e[0m" +printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +echo -e "Change ports by editing the parameters in" +echo -e "rustserver script" +echo -e "" +echo -e "Useful port diagnostic command:" +echo -e "netstat -atunp | grep Rust" +echo -e "" +{ + echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" + echo -e "> Game/Query\tINBOUND\t${port}\tudp" + echo -e "> RCON\tINBOUND\t${rconport}\ttcp" + +} | column -s $'\t' -t +echo -e "" + +fn_details_statusbottom +} + fn_details_unreal(){ echo -e "" echo -e "\e[92mPorts\e[0m" @@ -615,7 +636,7 @@ fn_details_disk fn_details_gameserver fn_details_backup # Some game servers do not have parms. -if [ "${gamename}" != "Teamspeak 3" ]||[ "${engine}" != "avalanche" ]||[ "${engine}" != "dontstarve" ]||[ "${engine}" == "projectzomboid" ]; then +if [ "${gamename}" != "Teamspeak 3" ]||[ "${engine}" != "avalanche" ]||[ "${engine}" != "dontstarve" ]||[ "${engine}" != "projectzomboid" ]; then fn_parms fn_details_commandlineparms fi @@ -654,6 +675,8 @@ elif [ "${gamename}" == "7 Days To Die" ]; then fn_details_sdtd elif [ "${gamename}" == "Teamspeak 3" ]; then fn_details_teamspeak3 +elif [ "${gamename}" == "Rust" ]; then + fn_details_rust else fn_printerrornl "Unable to detect server engine." fi diff --git a/functions/install_config.sh b/functions/install_config.sh index 913bf26f0..41ccf8cc8 100644 --- a/functions/install_config.sh +++ b/functions/install_config.sh @@ -2,7 +2,7 @@ # LGSM install_config.sh function # Author: Daniel Gibbs # Website: http://gameservermanagers.com -lgsm_version="100116" +lgsm_version="220216" fn_defaultconfig(){ echo "creating ${servercfg} config file." @@ -297,6 +297,11 @@ elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then wget -N /dev/null ${githuburl}/SeriousSam3BFE/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq sleep 1 fn_serious3config +elif [ "${gamename}" == "Rust" ]; then + echo -e "downloading server.cfg...\c" + wget -N /dev/null ${githuburl}/Rust/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq + sleep 1 + fn_defaultconfig elif [ "${gamename}" == "Sven Co-op" ]; then echo -e "downloading lgsm-default.cfg...\c" wget -N /dev/null ${githuburl}/SvenCoop/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq diff --git a/functions/logs.sh b/functions/logs.sh index a294c4d35..68e3d0dcf 100644 --- a/functions/logs.sh +++ b/functions/logs.sh @@ -3,7 +3,7 @@ # Author: Daniel Gibbs # Contributor: UltimateByte # Website: http://gameservermanagers.com -lgsm_version="100215" +lgsm_version="230216" # Description: Acts as a log rotater, removing old logs. @@ -16,6 +16,17 @@ if [ -n "${consolelog}" ]; then fi fi +# For games not displaying a console, and having logs into their game folder +if [ -n "${gamelogfile}" ]; then + if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then + fn_printinfo "Moving game logs to ${gamelogdir}" + fn_scriptlog "Moving game logs to ${gamelogdir}" + echo -en "\n" + sleep 1 + mv "${systemdir}"/gamelog*.log "${gamelogdir}" + fi +fi + # Log manager will start the cleanup if it finds logs older than "${logdays}" if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then fn_printdots "Starting"