#!/bin/bash # Rust # Server Management Script # Author: Daniel Gibbs # Contributor: UltimateByte # 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 # https://developer.valvesoftware.com/wiki/Rust_Dedicated_Server fn_parms(){ parms="-batchmode +server.ip ${ip} +server.hostname \"${servername}\" +server.identity \"${servicename}\" +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -datadir \"serverdata/\" -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