Sfoglia il codice sorgente

Updated fctrserver to match new style

Daniel Gibbs 9 anni fa
parent
commit
257ba88d7b
1 ha cambiato i file con 114 aggiunte e 73 eliminazioni
  1. 114 73
      Factorio/fctrserver

+ 114 - 73
Factorio/fctrserver

@@ -1,57 +1,85 @@
 #!/bin/bash
-# Factorio
-# Server Management Script
+# Project: Game Server Managers - LinuxGSM
 # Author: Daniel Gibbs
-# Contributor: Kristian Polso
+# License: MIT License, Copyright (c) 2016 Daniel Gibbs
+# Purpose: Empires Mod | Server Management Script
+# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors
+# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki
 # Website: https://gameservermanagers.com
+
+# Debugging
 if [ -f ".dev-debug" ]; then
-        exec 5>dev-debug.log
-        BASH_XTRACEFD="5"
-        set -x
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
 fi
 
-version="171016"
+version="161224"
 
-#### Variables ####
+##########################
+######## Settings ########
+##########################
 
-# Notification Alerts
-# (on|off)
+#### Server Settings ####
+
+## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters
+port="34197"
+rconport="34198"
+rconpassword="factorio"
+ip="0.0.0.0"
+## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters
+# Edit with care
+fn_parms(){
+parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}"
+}
+
+#### LinuxGSM Settings ####
 
-# Email
+## Notification Alerts
+# (on|off)
+# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email
 emailalert="off"
 email="email@example.com"
-#emailfrom="email@example.com"
+emailfrom=""
 
-# Pushbullet
-# https://www.pushbullet.com/#settings
+# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet
 pushbulletalert="off"
 pushbullettoken="accesstoken"
+channeltag=""
 
-# Server settings
-# More settings available after install in serverfiles/data/server-settings.json
+## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update
 updateonstart="off"
-port="34197"
-rconport="34198"
-rconpassword="factorio"
 
-fn_parms(){
-parms="--start-server ${filesdir}/save1.zip --server-settings ${servercfgfullpath} --port ${port} --rcon-port ${rconport} --rcon-password ${rconpassword}"
-}
+## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup
+maxbackups="4"
+maxbackupdays="30"
+stoponbackup="on"
+
+## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging
+consolelogging="on"
+logdays="7"
 
-#### Advanced Variables ####
+#### LinuxGSM Advanced Settings ####
 
-# Github Branch Select
+## Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="Krisseck"
+githubuser="GameServerManagers"
 githubrepo="LinuxGSM"
-githubbranch="master"
+githubbranch="feature/factorio"
 
-# Server Details
+## LinuxGSM Server Details
+# Do not edit
 gamename="Factorio"
+engine=""
+
+## Service Name | https://github.com/GameServerManagers/LinuxGSM/wiki/Multiple-Servers
 servicename="fctr-server"
 
-# Directories
+#### Directories ####
+# Edit with care
+
+## Work Directories
 rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
 selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 lockselfname=".${servicename}.lock"
@@ -60,31 +88,34 @@ functionsdir="${lgsmdir}/functions"
 libdir="${lgsmdir}/lib"
 tmpdir="${lgsmdir}/tmp"
 filesdir="${rootdir}/serverfiles"
+
+## Server Specific Directories
 systemdir="${filesdir}"
-executabledir="${filesdir}"
-executable="./bin/x64/factorio"
-servercfg="data/server-settings.json"
-servercfgdefault="data/server-settings.example.json"
-servercfgdir="${filesdir}"
+executabledir="${filesdir}/bin/x64"
+executable="./factorio"
+servercfg="server-settings.json"
+servercfgdefault="server-settings.json"
+servercfgdir="${filesdir}/data/"
 servercfgfullpath="${servercfgdir}/${servercfg}"
+
+## Backup Directory
 backupdir="${rootdir}/backups"
 
-# Logging
-logdays="7"
-gamelogdir="${rootdir}/log"
+## Logging Directories
 scriptlogdir="${rootdir}/log/script"
 consolelogdir="${rootdir}/log/console"
-consolelogging="on"
-
 scriptlog="${scriptlogdir}/${servicename}-script.log"
 consolelog="${consolelogdir}/${servicename}-console.log"
 emaillog="${scriptlogdir}/${servicename}-email.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"
+## Logs Naming
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log"
 
-##### Script #####
-# Do not edit
+########################
+######## Script ########
+###### Do not edit #####
+########################
 
 # Fetches core_dl for file downloads
 fn_fetch_core_dl(){
@@ -95,36 +126,36 @@ filename="${github_file_url_name}"
 githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
 # If the file is missing, then download
 if [ ! -f "${filedir}/${filename}" ]; then
-        if [ ! -d "${filedir}" ]; then
-                mkdir -p "${filedir}"
-        fi
-        echo -e "    fetching ${filename}...\c"
-        # Check curl exists and use available path
-        curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
-        for curlcmd in ${curlpaths}
-        do
-                if [ -x "${curlcmd}" ]; then
-                        break
-                fi
-        done
-        # If curl exists download file
-        if [ "$(basename ${curlcmd})" == "curl" ]; then
-                curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
-                if [ $? -ne 0 ]; then
-                        echo -e "\e[0;31mFAIL\e[0m\n"
-                        echo "${curlfetch}"
-                        echo -e "${githuburl}\n"
-                        exit 1
-                else
-                        echo -e "\e[0;32mOK\e[0m"
-                fi
-        else
-                echo -e "\e[0;31mFAIL\e[0m\n"
-                echo "Curl is not installed!"
-                echo -e ""
-                exit 1
-        fi
-        chmod +x "${filedir}/${filename}"
+	if [ ! -d "${filedir}" ]; then
+		mkdir -p "${filedir}"
+	fi
+	echo -e "    fetching ${filename}...\c"
+	# Check curl exists and use available path
+	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+	for curlcmd in ${curlpaths}
+	do
+		if [ -x "${curlcmd}" ]; then
+			break
+		fi
+	done
+	# If curl exists download file
+	if [ "$(basename ${curlcmd})" == "curl" ]; then
+		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+		if [ $? -ne 0 ]; then
+			echo -e "\e[0;31mFAIL\e[0m\n"
+			echo "${curlfetch}"
+			echo -e "${githuburl}\n"
+			exit 1
+		else
+			echo -e "\e[0;32mOK\e[0m"
+		fi
+	else
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit 1
+	fi
+	chmod +x "${filedir}/${filename}"
 fi
 source "${filedir}/${filename}"
 }
@@ -141,8 +172,18 @@ functionfile="${FUNCNAME}"
 fn_fetch_core_dl
 }
 
+# Prevent from running this script as root.
+if [ "$(whoami)" = "root" ]; then
+	if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/core_exit.sh" ]; then
+		echo "[ FAIL ] Do NOT run this script as root!"
+		exit 1
+	else
+		core_functions.sh
+		check_root.sh
+	fi
+fi
+
 core_dl.sh
 core_functions.sh
-
 getopt=$1
 core_getopt.sh