浏览代码

Merge pull request #713 from dgibbs64/rust

Rust support
Daniel Gibbs 10 年之前
父节点
当前提交
81615f995a
共有 5 个文件被更改,包括 238 次插入4 次删除
  1. 48 0
      Rust/cfg/lgsm-default.cfg
  2. 147 0
      Rust/rustserver
  3. 25 2
      functions/command_details.sh
  4. 6 1
      functions/install_config.sh
  5. 12 1
      functions/logs.sh

+ 48 - 0
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

+ 147 - 0
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

+ 25 - 2
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

+ 6 - 1
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

+ 12 - 1
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"