|
|
@@ -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
|