Kaynağa Gözat

Merge remote-tracking branch 'upstream/master' into config-select

Conflicts:
	functions/fn_getopt
Ilija Matoski 11 yıl önce
ebeveyn
işleme
c11dcb0798
58 değiştirilmiş dosya ile 694 ekleme ve 102 silme
  1. 155 0
      .travis.yml
  2. 12 1
      7DaysToDie/sdtdserver
  3. BIN
      Insurgency/dependencies/libm.so.6
  4. 1 1
      LICENSE
  5. BIN
      NS2Combat/dependencies/libc.so.6
  6. BIN
      NS2Combat/dependencies/libm.so.6
  7. BIN
      NS2Combat/dependencies/libstdc++.so.6
  8. 103 0
      NS2Combat/ns2cserver
  9. 92 0
      ProjectZomboid/pzserver
  10. 17 11
      README.md
  11. 3 1
      functions/fn_check_ip
  12. 10 1
      functions/fn_check_logs
  13. 5 3
      functions/fn_check_tmux
  14. 5 1
      functions/fn_debug
  15. 31 2
      functions/fn_details
  16. 7 2
      functions/fn_details_config
  17. 6 1
      functions/fn_functions
  18. 5 21
      functions/fn_getopt
  19. 9 0
      functions/fn_insfix
  20. 2 1
      functions/fn_install_glibcfix
  21. 2 2
      functions/fn_install_gsquery
  22. 10 1
      functions/fn_install_logs
  23. 4 0
      functions/fn_logs
  24. 3 3
      functions/fn_monitor
  25. 57 16
      functions/fn_start
  26. 99 18
      functions/fn_stop
  27. 34 9
      functions/fn_update_check
  28. 3 3
      functions/fn_update_dl
  29. 16 4
      functions/fn_validate
  30. BIN
      images/icons/centos-icon-32.png
  31. BIN
      images/icons/debian-icon-32.png
  32. BIN
      images/icons/ubuntu-icon-32.png
  33. 3 0
      images/logo/README.md
  34. BIN
      images/logo/assets/lgsm-font-pt_sans.zip
  35. BIN
      images/logo/assets/lgsm-square.xcf
  36. BIN
      images/logo/assets/lgsm.xcf
  37. BIN
      images/logo/assets/lgsm_full.xcf
  38. BIN
      images/logo/lgsm-250x143-dark.png
  39. BIN
      images/logo/lgsm-250x143-light.png
  40. BIN
      images/logo/lgsm-full-dark.png
  41. BIN
      images/logo/lgsm-full-light.png
  42. BIN
      images/logo/lgsm-site-foot.png
  43. BIN
      images/logo/lgsm-site-head.png
  44. BIN
      images/logo/lgsm-square-114-dark.png
  45. BIN
      images/logo/lgsm-square-114-light.png
  46. BIN
      images/logo/lgsm-square-16-dark.png
  47. BIN
      images/logo/lgsm-square-16-light.png
  48. BIN
      images/logo/lgsm-square-184-dark.png
  49. BIN
      images/logo/lgsm-square-184-light.png
  50. BIN
      images/logo/lgsm-square-24-dark.png
  51. BIN
      images/logo/lgsm-square-24-light.png
  52. BIN
      images/logo/lgsm-square-32-dark.png
  53. BIN
      images/logo/lgsm-square-32-light.png
  54. BIN
      images/logo/lgsm-square-512-dark.png
  55. BIN
      images/logo/lgsm-square-512-light.png
  56. BIN
      images/logo/lgsm-square-64-dark.png
  57. BIN
      images/logo/lgsm-square-64-light.png
  58. BIN
      images/screens/Tmux.png

+ 155 - 0
.travis.yml

@@ -0,0 +1,155 @@
+language: bash
+
+before_script:
+    - curl -L "https://shunit2.googlecode.com/files/shunit2-2.1.6.tgz" | tar zx
+
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/7DaysToDie/serverfiles
+    - touch /home/travis/build/dgibbs64/linuxgsm/7DaysToDie/serverfiles/serverconfig.xml
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrike/serverfiles/
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrike/serverfiles/cstrike
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrikeGlobalOffensive/serverfiles/
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrikeGlobalOffensive/serverfiles/csgo
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/CounterStrikeGlobalOffensive/serverfiles/csgo/cfg
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/JustCause2/serverfiles/
+    - touch  /home/travis/build/dgibbs64/linuxgsm/JustCause2/serverfiles/default_config.lua
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/KillingFloor/serverfiles
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/KillingFloor/serverfiles/System
+    - touch /home/travis/build/dgibbs64/linuxgsm/KillingFloor/serverfiles/System/Default.ini
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/ProjectZomboid/Zomboid
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/ProjectZomboid/Zomboid/Server
+    - mkdir  /home/travis/build/dgibbs64/linuxgsm/ProjectZomboid/serverfiles
+    - mkdir  /home/travis/build/dgibbs64/linuxgsm/ProjectZomboid/serverfiles/projectzomboid
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles/Content/
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles/Content/SeriousSam3
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles/Content/SeriousSam3/Config
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/SeriousSam3BFE/serverfiles/Bin
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/UnrealTournament2004/serverfiles
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/UnrealTournament2004/serverfiles/System
+    - touch /home/travis/build/dgibbs64/linuxgsm/UnrealTournament2004/serverfiles/System/ut2k4-server.ini
+
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/UnrealTournament99/serverfiles
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/UnrealTournament99/serverfiles/System
+    - touch /home/travis/build/dgibbs64/linuxgsm/UnrealTournament99/serverfiles/System/ut99-server.ini
+    - mkdir /home/travis/build/dgibbs64/linuxgsm/TeamSpeak3/serverfiles
+script:
+
+    - bash 7DaysToDie/sdtdserver auto-install
+    - bash 7DaysToDie/sdtdserver start
+    - bash 7DaysToDie/sdtdserver stop
+    - bash 7DaysToDie/sdtdserver restart
+    - bash 7DaysToDie/sdtdserver validate
+    - bash 7DaysToDie/sdtdserver monitor
+    - bash 7DaysToDie/sdtdserver email-test
+    - bash 7DaysToDie/sdtdserver details
+
+    - bash Arma3/arma3server auto-install
+    - bash Arma3/arma3server start
+    - bash Arma3/arma3server stop
+    - bash Arma3/arma3server restart
+    - bash Arma3/arma3server validate
+    - bash Arma3/arma3server monitor
+    - bash Arma3/arma3server email-test
+    - bash Arma3/arma3server details
+
+    - bash CounterStrike/csserver auto-install
+    - bash CounterStrike/csserver start
+    - bash CounterStrike/csserver stop
+    - bash CounterStrike/csserver restart
+    - bash CounterStrike/csserver validate
+    - bash CounterStrike/csserver monitor
+    - bash CounterStrike/csserver email-test
+    - bash CounterStrike/csserver details
+
+    - bash CounterStrikeGlobalOffensive/csgoserver auto-install
+    - bash CounterStrikeGlobalOffensive/csgoserver start
+    - bash CounterStrikeGlobalOffensive/csgoserver stop
+    - bash CounterStrikeGlobalOffensive/csgoserver restart
+    - bash CounterStrikeGlobalOffensive/csgoserver validate
+    - bash CounterStrikeGlobalOffensive/csgoserver monitor
+    - bash CounterStrikeGlobalOffensive/csgoserver email-test
+    - bash CounterStrikeGlobalOffensive/csgoserver details
+
+    - bash JustCause2/jc2server auto-install
+    - bash JustCause2/jc2server start
+    - bash JustCause2/jc2server stop
+    - bash JustCause2/jc2server restart
+    - bash JustCause2/jc2server validate
+    - bash JustCause2/jc2server monitor
+    - bash JustCause2/jc2server email-test
+    - bash JustCause2/jc2server details
+
+    - bash KillingFloor/kfserver auto-install
+    - bash KillingFloor/kfserver start
+    - bash KillingFloor/kfserver stop
+    - bash KillingFloor/kfserver restart
+    - bash KillingFloor/kfserver validate
+    - bash KillingFloor/kfserver monitor
+    - bash KillingFloor/kfserver email-test
+    - bash KillingFloor/kfserver details
+
+    - bash NaturalSelection2/ns2server auto-install
+    - bash NaturalSelection2/ns2server start
+    - bash NaturalSelection2/ns2server stop
+    - bash NaturalSelection2/ns2server restart
+    - bash NaturalSelection2/ns2server validate
+    - bash NaturalSelection2/ns2server monitor
+    - bash NaturalSelection2/ns2server email-test
+    - bash NaturalSelection2/ns2server details
+
+    - bash ProjectZomboid/pzserver auto-install
+    - bash ProjectZomboid/pzserver start
+    - bash ProjectZomboid/pzserver stop
+    - bash ProjectZomboid/pzserver restart
+    - bash ProjectZomboid/pzserver validate
+    - bash ProjectZomboid/pzserver monitor
+    - bash ProjectZomboid/pzserver email-test
+    - bash ProjectZomboid/pzserver details
+
+    - bash SeriousSam3BFE/ss3sserver auto-install
+    - bash SeriousSam3BFE/ss3sserver start
+    - bash SeriousSam3BFE/ss3sserver stop
+    - bash SeriousSam3BFE/ss3sserver restart
+    - bash SeriousSam3BFE/ss3sserver validate
+    - bash SeriousSam3BFE/ss3sserver monitor
+    - bash SeriousSam3BFE/ss3sserver email-test
+    - bash SeriousSam3BFE/ss3sserver details
+
+    - bash StarBound/sbserver auto-install
+    - bash StarBound/sbserver start
+    - bash StarBound/sbserver stop
+    - bash StarBound/sbserver restart
+    - bash StarBound/sbserver validate
+    - bash StarBound/sbserver monitor
+    - bash StarBound/sbserver email-test
+    - bash StarBound/sbserver details
+
+    - bash UnrealTournament2004/ut2k4server start
+    - bash UnrealTournament2004/ut2k4server stop
+    - bash UnrealTournament2004/ut2k4server restart
+    - bash UnrealTournament2004/ut2k4server monitor
+    - bash UnrealTournament2004/ut2k4server email-test
+    - bash UnrealTournament2004/ut2k4server details
+
+    - bash UnrealTournament99/ut99server start
+    - bash UnrealTournament99/ut99server stop
+    - bash UnrealTournament99/ut99server restart
+    - bash UnrealTournament99/ut99server monitor
+    - bash UnrealTournament99/ut99server email-test
+    - bash UnrealTournament99/ut99server details
+
+    - bash TeamSpeak3/ts3server start
+    - bash TeamSpeak3/ts3server stop
+    - bash TeamSpeak3/ts3server restart
+    - bash TeamSpeak3/ts3server update
+    - bash TeamSpeak3/ts3server monitor
+    - bash TeamSpeak3/ts3server email-test
+    - bash TeamSpeak3/ts3server details

+ 12 - 1
7DaysToDie/sdtdserver

@@ -17,7 +17,18 @@ steamuser="username"
 steampass="password"
 steampass="password"
 
 
 # Start Variables
 # Start Variables
-ip="0.0.0.0"
+ip="0.0.0.0"  # can leave to answer on any IP
+
+# Mod Variables
+
+# If you are using or want to use Alloc's Server Fixes,
+# uncomment the variable below
+# *****Note: It has happened where the core gets updated, but
+# Alloc's fixes weren't updated yet. If this happens
+# you may need to comment out or set to false temporarily
+# until Alloc's patch is updated.  Please see 7 Days To Die
+# forum for details.  Many people use this patch.
+allocsfixes=true  # set to true if you want installed, false or comment if not
 
 
 # http://7daystodie.gamepedia.com/Server
 # http://7daystodie.gamepedia.com/Server
 fn_parms(){
 fn_parms(){

BIN
Insurgency/dependencies/libm.so.6


+ 1 - 1
LICENSE

@@ -1,6 +1,6 @@
 The MIT License (MIT)
 The MIT License (MIT)
 
 
-Copyright (c) 2014 Daniel Gibbs
+Copyright (c) 2015 Daniel Gibbs
 
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
 of this software and associated documentation files (the "Software"), to deal

BIN
NS2Combat/dependencies/libc.so.6


BIN
NS2Combat/dependencies/libm.so.6


BIN
NS2Combat/dependencies/libstdc++.so.6


+ 103 - 0
NS2Combat/ns2cserver

@@ -0,0 +1,103 @@
+#!/bin/bash
+# NS2: Combat
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: http://danielgibbs.co.uk
+# Version: 210115
+
+#### Variables ####
+
+# Notification Email
+# (on|off)
+emailnotification="off"
+email="email@example.com"
+
+# Steam login
+steamuser="username"
+steampass="password"
+
+# Start Variables
+defaultmap="co_core"
+port="27015"
+maxplayers="24"
+ip="0.0.0.0"
+servername="NS2C Server"
+webadminuser="admin"
+webadminpass="admin"
+webadminport="8080"
+configpath="server1"
+modstorage="server1/Workshop"
+mods=""
+password=""
+# Add the following line to the parms if you want a private server. Ensuring
+# that the password variable above is not left empty.
+# -password \"${password}\"
+
+# http://wiki.unknownworlds.com/ns2/Dedicated_Server
+fn_parms(){
+parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser ${webadminuser} -webpassword \"${webadminpass}\" -webport ${webadminport} -map ${defaultmap} -limit ${maxplayers} -config_path \"${rootdir}/${configpath}\" -modstorage \"${rootdir}/${modstorage}\" -mods \"${mods}\""
+}
+
+#### Advanced Variables ####
+
+# Steam
+appid="313900"
+
+# Server Details
+servicename="ns2c-server"
+gamename="NS2: Combat"
+engine="spark"
+
+# Directories
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+selfname="$(basename $0)"
+lockselfname=".${servicename}.lock"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}"
+executabledir="${filesdir}/ia32"
+executable="./ns2combatserver_linux32"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${systemdir}/logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+
+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"
+
+##### Script #####
+# Do not edit
+
+fn_runfunction(){
+# Functions are downloaded and run with this function
+if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
+	cd "${rootdir}"
+	if [ ! -d "functions" ]; then
+		mkdir functions
+	fi
+	cd functions
+	echo -e "loading ${functionfile}...\c"
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	chmod +x "${functionfile}"
+	cd "${rootdir}"
+	sleep 1
+fi
+source "${rootdir}/functions/${functionfile}"
+}
+
+fn_functions(){
+# Functions are defined in fn_functions.
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
+fn_functions
+
+getopt=$1
+fn_getopt

+ 92 - 0
ProjectZomboid/pzserver

@@ -0,0 +1,92 @@
+#!/bin/bash
+# Project Zomboid
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: http://danielgibbs.co.uk
+# Version: 150415
+
+#### Variables ####
+
+# Notification Email
+# (on|off)
+emailnotification="off"
+email="email@example.com"
+
+# Steam login
+steamuser="anonymous"
+steampass=""
+
+# Start Variables
+ip="0.0.0.0"
+
+fn_parms(){
+parms=""
+}
+
+#### Advanced Variables ####
+
+# Steam
+appid="108600"
+
+# Server Details
+servicename="pz-server"
+gamename="Project Zomboid"
+engine="projectzomboid"
+
+# Directories
+rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+selfname="$(basename $0)"
+lockselfname=".${servicename}.lock"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/projectzomboid"
+executabledir="${filesdir}"
+executable="./projectzomboid-dedi-server.sh"
+servercfgdir="${rootdir}/Zomboid/Server"
+servercfg="servertest.ini"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+defaultcfg="${servercfgdir}/servertest.ini"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${HOME}/Zomboid/Logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+
+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"
+
+##### Script #####
+# Do not edit
+
+fn_runfunction(){
+# Functions are downloaded and run with this function
+if [ ! -f "${rootdir}/functions/${functionfile}" ]; then
+	cd "${rootdir}"
+	if [ ! -d "functions" ]; then
+		mkdir functions
+	fi
+	cd functions
+	echo -e "loading ${functionfile}...\c"
+	wget -N --no-check-certificate /dev/null https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/functions/${functionfile} 2>&1 | grep -F HTTP | cut -c45-
+	chmod +x "${functionfile}"
+	cd "${rootdir}"
+	sleep 1
+fi
+source "${rootdir}/functions/${functionfile}"
+}
+
+fn_functions(){
+# Functions are defined in fn_functions.
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
+fn_functions
+
+getopt=$1
+fn_getopt

+ 17 - 11
README.md

@@ -1,7 +1,13 @@
-<h1>Linux Game Server Managers_ <a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Install</a></h1>
-<a href="http://gameservermanagers.com"><img src="http://wiki.gameservermanagers.com/w//images/9/9d/Lgsm_full-2.png" alt="linux Game Server Managers" width="600" /></a>
+<h1>Linux Game Server Managers_</h1>
+<a href="http://gameservermanagers.com"><img src="https://github.com/dgibbs64/linuxgsm/blob/master/images/logo/lgsm-full-light.png" alt="linux Game Server Managers" width="600" /></a>
+
+[![Build Status](https://travis-ci.org/dgibbs64/linuxgsm.svg?branch=master)](https://travis-ci.org/dgibbs64/linuxgsm)
 
 
 The Linux Game Server Managers are command line tools for quick, simple deployment and management of various dedicated game servers and voice comms servers.
 The Linux Game Server Managers are command line tools for quick, simple deployment and management of various dedicated game servers and voice comms servers.
+
+<h2>Hassle Free Dedicated Servers</h2>
+Game servers traditionally are not easy to manage yourself. Admins often have to spend hours just messing around trying to get there server working. LGSM is designed to be a simple as possible allowing Admins to spend less time on management and more time on the fun stuff.
+
 <h2>Main features</h2>
 <h2>Main features</h2>
 <ul>
 <ul>
 	<li>Backup</li>
 	<li>Backup</li>
@@ -21,13 +27,13 @@ The Linux Game Server Managers are tested to work on the following Linux distros
 Other distros are likely to work but are not fully tested.
 Other distros are likely to work but are not fully tested.
 <h3>Specific Requirements</h3>
 <h3>Specific Requirements</h3>
 <ul>
 <ul>
-	<li><a href="http://wiki.gameservermanagers.com/wiki/Glibc">GLIBC</a> >= 2.15 recommended [<a href="http://wiki.gameservermanagers.com/wiki/Glibc#Server_Requirements">specific requirements</a>].</li>
-	<li><a href="http://wiki.gameservermanagers.com/wiki/Tmux">Tmux</a> >= 1.6 recommended (Avoid Tmux 1.8).</li>
+	<li><a href="https://github.com/dgibbs64/linuxgsm/wiki/Glibc">GLIBC</a> >= 2.15 recommended [<a href="https://github.com/dgibbs64/linuxgsm/wiki/Glibc#server-requirements">specific requirements</a>].</li>
+	<li><a href="https://github.com/dgibbs64/linuxgsm/wiki/Tmux">Tmux</a> >= 1.6 recommended (Avoid Tmux 1.8).</li>
 </ul>
 </ul>
 <h2>FAQ</h2>
 <h2>FAQ</h2>
 All FAQ can be found here.
 All FAQ can be found here.
 
 
-<a href="http://wiki.gameservermanagers.com/wiki/FAQ">http://wiki.gameservermanagers.com/wiki/FAQ</a>
+<a href="https://github.com/dgibbs64/linuxgsm/wiki/FAQ">https://github.com/dgibbs64/linuxgsm/wiki/FAQ</a>
 <h2>Donate</h2>
 <h2>Donate</h2>
 If you want to donate to the project you can via PayPal, Flattr or Gratipay. I have had a may kind people show there support by sending me a donation. Any donations you send help cover my server costs and buy me a drink. Cheers!
 If you want to donate to the project you can via PayPal, Flattr or Gratipay. I have had a may kind people show there support by sending me a donation. Any donations you send help cover my server costs and buy me a drink. Cheers!
 <ul>
 <ul>
@@ -36,11 +42,11 @@ If you want to donate to the project you can via PayPal, Flattr or Gratipay. I h
 <h2>Useful Links</h2>
 <h2>Useful Links</h2>
 <ul>
 <ul>
 	<li><a href="http://gameservermanagers.com">Homepage</li>
 	<li><a href="http://gameservermanagers.com">Homepage</li>
-	<li><a href="http://gameservermanagers.com">Wiki</li>
+	<li><a href="https://github.com/dgibbs64/linuxgsm/wiki">Wiki</li>
 	<li><a href="https://github.com/dgibbs64/linuxgsm">GitHub Code</li>
 	<li><a href="https://github.com/dgibbs64/linuxgsm">GitHub Code</li>
 	<li><a href="https://github.com/dgibbs64/linuxgsm/issues">GitHub Issues</li>
 	<li><a href="https://github.com/dgibbs64/linuxgsm/issues">GitHub Issues</li>
-	<li><a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Steam Group</li>
-	<li><a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Twitter</li>
-	<li><a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Facebook</li>
-	<li><a href="http://wiki.gameservermanagers.com/wiki/Getting_Started">Google+</li>
-</ul>
+	<li><a href="http://steamcommunity.com/groups/linuxgsm">Steam Group</li>
+	<li><a href="https://twitter.com/dangibbsuk">Twitter</li>
+	<li><a href="https://www.facebook.com/linuxgsm">Facebook</li>
+	<li><a href="https://plus.google.com/+Gameservermanagers1">Google+</li>
+</ul>

+ 3 - 1
functions/fn_check_ip

@@ -2,7 +2,7 @@
 # LGSM fn_check_ip function
 # LGSM fn_check_ip function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 260115
+# Version: 170415
 
 
 # Description: Automatically identifies the server interface IP.
 # Description: Automatically identifies the server interface IP.
 # If multiple interfaces are detected the user will need to manualy set using ip="0.0.0.0".
 # If multiple interfaces are detected the user will need to manualy set using ip="0.0.0.0".
@@ -21,6 +21,8 @@ if [ "${ip}" == "0.0.0.0" ]||[ "${ip}" == "" ]; then
 		echo -en "Manually specify the IP you want to use within the ${selfname} script.\n"
 		echo -en "Manually specify the IP you want to use within the ${selfname} script.\n"
 		echo -en "Set ip=\"0.0.0.0\" to one of the following:\n"
 		echo -en "Set ip=\"0.0.0.0\" to one of the following:\n"
 		echo -en "${getip}\n"
 		echo -en "${getip}\n"
+		echo -en ""
+		echo -en "http://gameservermanagers.com/network-interfaces"
 		exit
 		exit
 	else
 	else
 		ip=${getip}
 		ip=${getip}

+ 10 - 1
functions/fn_check_logs

@@ -2,7 +2,7 @@
 # LGSM fn_check_logs function
 # LGSM fn_check_logs function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 230215
+# Version: 160415
 # Description: Checks that log files exist on server start
 # Description: Checks that log files exist on server start
 
 
 # Create dir's for the script and console logs
 # Create dir's for the script and console logs
@@ -17,6 +17,12 @@ if [ ! -f "${scriptlog}" ]; then
 	touch "${scriptlog}"
 	touch "${scriptlog}"
 	mkdir -v "${consolelogdir}"
 	mkdir -v "${consolelogdir}"
 	touch "${consolelog}"
 	touch "${consolelog}"
+
+	# If a server is Project Zomboid create a symbolic link to the game server logs
+	if [ "${engine}" == "projectzomboid" ]; then
+		ln -nfsv "${gamelogdir}" "${rootdir}/log/server"
+	fi
+
 	# If a server is source or goldsource create a symbolic link to the game server logs
 	# If a server is source or goldsource create a symbolic link to the game server logs
 	if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
 	if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
 		if [ ! -h "${rootdir}/log/server" ]; then
 		if [ ! -h "${rootdir}/log/server" ]; then
@@ -25,6 +31,7 @@ if [ ! -f "${scriptlog}" ]; then
 			echo "Symbolic link ${gamelogdir} => ${rootdir}/log/server already exists!"
 			echo "Symbolic link ${gamelogdir} => ${rootdir}/log/server already exists!"
 		fi
 		fi
 	fi
 	fi
+
 	# If a server is unreal2 or unity3d create a dir
 	# If a server is unreal2 or unity3d create a dir
 	if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]; then
 	if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]; then
 		mkdir -pv "${gamelogdir}"
 		mkdir -pv "${gamelogdir}"
@@ -34,6 +41,7 @@ if [ ! -f "${scriptlog}" ]; then
 			ln -nfsv "${filesdir}/7DaysToDie_Data/output_log.txt" "${gamelogdir}/output_log.txt"
 			ln -nfsv "${filesdir}/7DaysToDie_Data/output_log.txt" "${gamelogdir}/output_log.txt"
 		fi
 		fi
 	fi
 	fi
+
 	# If a server is starbound create a symbolic link to the game server logs
 	# If a server is starbound create a symbolic link to the game server logs
 	if [ "${engine}" == "starbound" ]; then
 	if [ "${engine}" == "starbound" ]; then
 		if [ ! -h "${rootdir}/log/server" ]; then
 		if [ ! -h "${rootdir}/log/server" ]; then
@@ -42,6 +50,7 @@ if [ ! -f "${scriptlog}" ]; then
 			echo "Symbolic link ${gamelogdir} => ${rootdir}/log/server already exists!"
 			echo "Symbolic link ${gamelogdir} => ${rootdir}/log/server already exists!"
 		fi
 		fi
 	fi
 	fi
+
 	# If server uses SteamCMD create a symbolic link to the Steam logs
 	# If server uses SteamCMD create a symbolic link to the Steam logs
 	if [ -d "${rootdir}/Steam/logs" ]; then
 	if [ -d "${rootdir}/Steam/logs" ]; then
 		if [ ! -h "${rootdir}/log/steamcmd" ]; then
 		if [ ! -h "${rootdir}/log/steamcmd" ]; then

+ 5 - 3
functions/fn_check_tmux

@@ -2,17 +2,19 @@
 # LGSM fn_check_tmux function
 # LGSM fn_check_tmux function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 110315
+# Version: 170415
 
 
 # Checks if tmux is installed as too many users do not RTFM or know how to use Google.
 # Checks if tmux is installed as too many users do not RTFM or know how to use Google.
 
 
-if [ -z "$(command -v tmux)" ]; then
+if [ "$(command -v tmux)" ]||[ "$(which tmux)" ]||[ -f "/usr/bin/tmux" ]||[ -f "/bin/tmux" ]; then
+	:
+else
 	fn_printfailnl "Tmux not installed"
 	fn_printfailnl "Tmux not installed"
 	sleep 1
 	sleep 1
 	fn_scriptlog "Tmux is not installed"
 	fn_scriptlog "Tmux is not installed"
 	echo "	* Tmux is required to run this server."
 	echo "	* Tmux is required to run this server."
 	# Suitable passive agressive message
 	# Suitable passive agressive message
 	echo "	* Please see the the following link."
 	echo "	* Please see the the following link."
-	echo "  * http://gameservermanagers.com/dependencies"
+	echo "  * http://gameservermanagers.com/tmux"
 	exit
 	exit
 fi
 fi

+ 5 - 1
functions/fn_debug

@@ -2,7 +2,7 @@
 # LGSM fn_debug function
 # LGSM fn_debug function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 160415
 
 
 # Description: Runs the server without tmux. Runs direct from the terminal.
 # Description: Runs the server without tmux. Runs direct from the terminal.
 
 
@@ -10,6 +10,7 @@ local modulename="Debug"
 fn_check_root
 fn_check_root
 fn_check_systemdir
 fn_check_systemdir
 fn_check_ip
 fn_check_ip
+fn_check_logs
 fn_details_distro
 fn_details_distro
 fn_parms
 fn_parms
 echo ""
 echo ""
@@ -53,6 +54,9 @@ sleep 1
 echo -en "\n"
 echo -en "\n"
 cd "${executabledir}"
 cd "${executabledir}"
 if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
 if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
+	if [ "${gamename}" == "Insurgency" ]; then
+		fn_insfix
+	fi
 	${executable} ${parms} -debug
 	${executable} ${parms} -debug
 else
 else
 	${executable} ${parms}
 	${executable} ${parms}

+ 31 - 2
functions/fn_details

@@ -2,7 +2,7 @@
 # LGSM fn_details function
 # LGSM fn_details function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 230214
+# Version: 190414
 
 
 # Description: Displays server infomation.
 # Description: Displays server infomation.
 
 
@@ -168,6 +168,33 @@ rm -f .fn_details_ports
 fn_details_statusbottom
 fn_details_statusbottom
 }
 }
 
 
+fn_details_projectzomboid(){
+fn_check_ip
+fn_details_config
+fn_details_distro
+fn_details_os
+fn_details_performance
+fn_details_disk
+fn_details_gameserver
+fn_details_backup
+pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
+echo -e ""
+echo -e "\e[92mPorts\e[0m"
+printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
+echo -e "Change ports by editing the command-line"
+echo -e "parameters in ${selfname}."
+echo -e ""
+echo -e "Useful port diagnostic command:"
+echo -e "netstat -atunp | grep java"
+echo -e ""
+echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL" >> .fn_details_ports
+echo -e "> Game/RCON\tINBOUND\t${port}\tudp" >> .fn_details_ports
+column -s $'\t' -t .fn_details_ports
+rm -f .fn_details_ports
+fn_details_statusbottom
+}
+
+
 fn_details_realvirtuality(){
 fn_details_realvirtuality(){
 fn_check_ip
 fn_check_ip
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
 pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l)
@@ -397,7 +424,7 @@ echo -e ""
 echo -e "\e[92m${servername} Telnet\e[0m"
 echo -e "\e[92m${servername} Telnet\e[0m"
 printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
 printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
 echo -e "\e[34mTelnet enabled:\t\e[0m${telnetenabled}" >> .fn_details_ports
 echo -e "\e[34mTelnet enabled:\t\e[0m${telnetenabled}" >> .fn_details_ports
-echo -e "\e[34mTelnet address:\t\e[0m${ip}:${telnetport}" >> .fn_details_ports
+echo -e "\e[34mTelnet address:\t\e[0m${ip} ${telnetport}" >> .fn_details_ports
 echo -e "\e[34mTelnet password:\t\e[0m${telnetpass}" >> .fn_details_ports
 echo -e "\e[34mTelnet password:\t\e[0m${telnetpass}" >> .fn_details_ports
 column -s $'\t' -t .fn_details_ports
 column -s $'\t' -t .fn_details_ports
 rm -f .fn_details_ports
 rm -f .fn_details_ports
@@ -463,6 +490,8 @@ fn_details_statusbottom
 
 
 if [ "${engine}" == "avalanche" ]; then
 if [ "${engine}" == "avalanche" ]; then
 	fn_details_avalanche
 	fn_details_avalanche
+elif [ "${engine}" == "projectzomboid" ]; then
+	fn_details_projectzomboid
 elif [ "${engine}" == "realvirtuality" ]; then
 elif [ "${engine}" == "realvirtuality" ]; then
 	fn_details_realvirtuality
 	fn_details_realvirtuality
 elif [ "${engine}" == "seriousengine35" ]; then
 elif [ "${engine}" == "seriousengine35" ]; then

+ 7 - 2
functions/fn_details_config

@@ -2,12 +2,16 @@
 # LGSM fn_details_config function
 # LGSM fn_details_config function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 080215
+# Version: 160415
 
 
 # Description: Gets specific details from config files.
 # Description: Gets specific details from config files.
 
 
 if [ "${engine}" == "avalanche" ]; then
 if [ "${engine}" == "avalanche" ]; then
-	 servername=$(grep -s Name "${servercfgfullpath}"|sed 's/Name//g' | tr -d '=\"; '|sed 's/,//g')
+	 servername=$(grep -s Name "${servercfgfullpath}"|sed 's/Name//g'|tr -d '=\"; '|sed 's/,//g')
+
+elif [ "${engine}" == "projectzomboid" ]; then
+	servername=$(grep -s PublicName= "${servercfgfullpath}"|sed 's/PublicName=//g'|tr -d '=\";'|sed 's/,//g')
+	port=$(grep -s DefaultPort= "${servercfgfullpath}"|sed 's/DefaultPort=//g'|tr -cd [:digit:])
 
 
 elif [ "${engine}" == "realvirtuality" ]; then
 elif [ "${engine}" == "realvirtuality" ]; then
 	servername=$(grep -s hostname "${servercfgfullpath}"| grep -v //|sed -e 's/\<hostname\>//g'| tr -d '=\"; ')
 	servername=$(grep -s hostname "${servercfgfullpath}"| grep -v //|sed -e 's/\<hostname\>//g'| tr -d '=\"; ')
@@ -39,6 +43,7 @@ elif [ "${gamename}" == "Teamspeak 3" ]; then
 		queryport="10011"
 		queryport="10011"
 		fileport="30033"
 		fileport="30033"
 	fi
 	fi
+
 elif [ "${engine}" == "unity3d" ]; then
 elif [ "${engine}" == "unity3d" ]; then
 	servername=$(grep ServerName "${servercfgfullpath}"|sed 's/^.*value="//'|cut -f1 -d"\"")
 	servername=$(grep ServerName "${servercfgfullpath}"|sed 's/^.*value="//'|cut -f1 -d"\"")
 	port=$(grep ServerPort "${servercfgfullpath}"|tr -cd [:digit:])
 	port=$(grep ServerPort "${servercfgfullpath}"|tr -cd [:digit:])

+ 6 - 1
functions/fn_functions

@@ -2,7 +2,7 @@
 # LGSM fn_functions function
 # LGSM fn_functions function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 190215
+# Version: 110415
 
 
 # Description: Defines all functions to allow download and execution of functions using fn_runfunction.
 # Description: Defines all functions to allow download and execution of functions using fn_runfunction.
 # This function is called first before any other function. Without this file other functions would not load.
 # This function is called first before any other function. Without this file other functions would not load.
@@ -101,6 +101,11 @@ functionfile="${FUNCNAME}"
 fn_runfunction
 fn_runfunction
 }
 }
 
 
+fn_insfix(){
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
 fn_logs(){
 fn_logs(){
 functionfile="${FUNCNAME}"
 functionfile="${FUNCNAME}"
 fn_runfunction
 fn_runfunction

+ 5 - 21
functions/fn_getopt

@@ -2,7 +2,7 @@
 # LGSM fn_getopt function
 # LGSM fn_getopt function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 150314
+# Version: 150414
 
 
 # Description: getopt arguments.
 # Description: getopt arguments.
 
 
@@ -15,16 +15,9 @@ case "$getopt" in
 	restart)
 	restart)
 		fn_restart;;
 		fn_restart;;
 	update)
 	update)
-		norestart=1;
-		fn_update_check;;
-	update-restart)
 		fn_update_check;;
 		fn_update_check;;
 	validate)
 	validate)
 		fn_validate;;
 		fn_validate;;
-	validate-restart)
-		fn_stop
-		fn_validate
-		fn_start;;
 	monitor)
 	monitor)
 		fn_monitor;;
 		fn_monitor;;
 	email-test)
 	email-test)
@@ -42,7 +35,7 @@ case "$getopt" in
 	auto-install)
 	auto-install)
 		fn_autoinstall;;
 		fn_autoinstall;;
 	*)
 	*)
-	echo "Usage: $0 {start|stop|restart|update|update-restart|validate|validate-restart|monitor|email-test|details|backup|console|debug|install|auto-install} $appendextra"
+	echo "Usage: $0 {start|stop|restart|update|validate|monitor|email-test|details|backup|console|debug|install|auto-install} $appendextra"
 	exit 1;;
 	exit 1;;
 esac
 esac
 exit
 exit
@@ -58,8 +51,6 @@ case "$getopt" in
 		fn_restart;;
 		fn_restart;;
 	update)
 	update)
 		fn_update_check;;
 		fn_update_check;;
-	backup)
-		fn_backup;;
 	monitor)
 	monitor)
 		fn_monitor;;
 		fn_monitor;;
 	email-test)
 	email-test)
@@ -69,7 +60,7 @@ case "$getopt" in
 	backup)
 	backup)
 		fn_backup;;
 		fn_backup;;
 	*)
 	*)
-		echo "Usage: $0 {start|stop|restart|backup|monitor|email-test|details|backup} $appendextra"
+		echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup} $appendextra"
 		exit 1;;
 		exit 1;;
 esac
 esac
 exit
 exit
@@ -116,16 +107,9 @@ case "$getopt" in
 	restart)
 	restart)
 		fn_restart;;
 		fn_restart;;
 	update)
 	update)
-		norestart=1;
-		fn_update_check;;
-	update-restart)
 		fn_update_check;;
 		fn_update_check;;
 	validate)
 	validate)
 		fn_validate;;
 		fn_validate;;
-	validate-restart)
-		fn_stop
-		fn_validate
-		fn_start;;
 	monitor)
 	monitor)
 		fn_monitor;;
 		fn_monitor;;
 	email-test)
 	email-test)
@@ -145,7 +129,7 @@ case "$getopt" in
 	map-compressor)
 	map-compressor)
 		fn_compress_unreal2maps;;
 		fn_compress_unreal2maps;;
 	*)
 	*)
-	echo "Usage: $0 {start|stop|restart|update|update-restart|validate|validate-restart|monitor|email-test|details|backup|console|debug|install|auto-install|map-compressor} $appendextra"
+	echo "Usage: $0 {start|stop|restart|update|validate|monitor|email-test|details|backup|console|debug|install|auto-install|map-compressor} $appendextra"
 	exit 1;;
 	exit 1;;
 esac
 esac
 exit
 exit
@@ -194,4 +178,4 @@ elif [ "${engine}" == "unreal" ]; then
 	fn_getopt_unreal
 	fn_getopt_unreal
 else
 else
 	fn_getopt_generic
 	fn_getopt_generic
-fi
+fi

+ 9 - 0
functions/fn_insfix

@@ -0,0 +1,9 @@
+#!/bin/bash
+# LGSM fn_insfix function
+# Author: Daniel Gibbs
+# Website: http://danielgibbs.co.uk
+# Version: 110415
+
+# Description: Resolves ./srcds_linux: error while loading shared libraries: libtier0.so: cannot open shared object file: No such file or directory
+
+export LD_LIBRARY_PATH=:${filesdir}:${filesdir}/bin:{$LD_LIBRARY_PATH}

+ 2 - 1
functions/fn_install_glibcfix

@@ -2,7 +2,7 @@
 # LGSM fn_install_glibcfix function
 # LGSM fn_install_glibcfix function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://gameservermanagers.com
 # Website: http://gameservermanagers.com
-# Version: 220315
+# Version: 110415
 
 
 fn_glibcfixmsg(){
 fn_glibcfixmsg(){
 echo ""
 echo ""
@@ -79,6 +79,7 @@ elif [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt 215
 		fn_glibcfixmsg
 		fn_glibcfixmsg
 		cd "${filesdir}/bin"
 		cd "${filesdir}/bin"
 		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libc.so.6
 		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libc.so.6
+		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libm.so.6
 		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/librt.so.1
 		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/librt.so.1
 		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libpthread.so.0
 		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgsm/raw/master/Insurgency/dependencies/libpthread.so.0
 	# Natural Selection 2
 	# Natural Selection 2

+ 2 - 2
functions/fn_install_gsquery

@@ -2,12 +2,12 @@
 # LGSM fn_install_gsquery function
 # LGSM fn_install_gsquery function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 100415
 
 
 fn_dlgsquery(){
 fn_dlgsquery(){
 cd "${rootdir}"
 cd "${rootdir}"
 echo -e "downloading gsquery.py...\c"
 echo -e "downloading gsquery.py...\c"
-wget -N --no-check-certificate /dev/null "http://danielgibbs.co.uk/dl/gsquery.py" 2>&1 | grep -F "HTTP" | grep -v "Moved Permanently" | cut -c45- | uniq
+wget -N --no-check-certificate /dev/null "http://gameservermanagers.com/dl/gsquery.py" 2>&1 | grep -F "HTTP" | grep -v "Moved Permanently" | cut -c45- | uniq
 chmod +x gsquery.py
 chmod +x gsquery.py
 }
 }
 
 

+ 10 - 1
functions/fn_install_logs

@@ -2,7 +2,7 @@
 # LGSM fn_install_logs function
 # LGSM fn_install_logs function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 230215
+# Version: 160415
 
 
 echo ""
 echo ""
 echo "Creating log directorys"
 echo "Creating log directorys"
@@ -14,6 +14,12 @@ mkdir -v "${scriptlogdir}"
 touch "${scriptlog}"
 touch "${scriptlog}"
 mkdir -v "${consolelogdir}"
 mkdir -v "${consolelogdir}"
 touch "${consolelog}"
 touch "${consolelog}"
+
+# If a server is Project Zomboid create a symbolic link to the game server logs
+if [ "${engine}" == "projectzomboid" ]; then
+	ln -nfsv "${gamelogdir}" "${rootdir}/log/server"
+fi
+
 # If a server is source or goldsource create a symbolic link to the game server logs
 # If a server is source or goldsource create a symbolic link to the game server logs
 if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
 if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
 	if [ ! -h "${rootdir}/log/server" ]; then
 	if [ ! -h "${rootdir}/log/server" ]; then
@@ -22,6 +28,7 @@ if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
 		echo "Symbolic link ${gamelogdir} => ${rootdir}/log/server already exists!"
 		echo "Symbolic link ${gamelogdir} => ${rootdir}/log/server already exists!"
 	fi
 	fi
 fi
 fi
+
 # If a server is unreal2 or unity3d create a dir
 # If a server is unreal2 or unity3d create a dir
 if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]; then
 if [ "${engine}" == "unreal2" ]||[ "${engine}" == "unity3d" ]; then
 	mkdir -pv "${gamelogdir}"
 	mkdir -pv "${gamelogdir}"
@@ -31,6 +38,7 @@ if [ "${gamename}" == "7 Days To Die" ]; then
 		ln -nfsv "${filesdir}/7DaysToDie_Data/output_log.txt" "${gamelogdir}/output_log.txt"
 		ln -nfsv "${filesdir}/7DaysToDie_Data/output_log.txt" "${gamelogdir}/output_log.txt"
 	fi
 	fi
 fi
 fi
+
 # If a server is starbound create a symbolic link to the game server logs
 # If a server is starbound create a symbolic link to the game server logs
 if [ "${engine}" == "starbound" ]; then
 if [ "${engine}" == "starbound" ]; then
 	if [ ! -h "${rootdir}/log/server" ]; then
 	if [ ! -h "${rootdir}/log/server" ]; then
@@ -39,6 +47,7 @@ if [ "${engine}" == "starbound" ]; then
 		echo "Symbolic link ${gamelogdir} => ${rootdir}/log/server already exists!"
 		echo "Symbolic link ${gamelogdir} => ${rootdir}/log/server already exists!"
 	fi
 	fi
 fi
 fi
+
 # If server uses SteamCMD create a symbolic link to the Steam logs
 # If server uses SteamCMD create a symbolic link to the Steam logs
 if [ -d "${rootdir}/Steam/logs" ]; then
 if [ -d "${rootdir}/Steam/logs" ]; then
 	if [ ! -h "${rootdir}/log/steamcmd" ]; then
 	if [ ! -h "${rootdir}/log/steamcmd" ]; then

+ 4 - 0
functions/fn_logs

@@ -36,9 +36,13 @@ if [ $(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l) -ne "0" ]; then
 		gamecount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l)
 		gamecount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l)
 	fi
 	fi
 	scriptcount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l)
 	scriptcount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l)
+	echo "${consolelog}"
 	if [ -n "${consolelog}" ]; then
 	if [ -n "${consolelog}" ]; then
 		consolecount=$(find "${consolelogdir}"/* -mtime +${logdays}|wc -l)
 		consolecount=$(find "${consolelogdir}"/* -mtime +${logdays}|wc -l)
+	else
+		consolecount=0
 	fi
 	fi
+
 	count=$((${scriptcount} + ${consolecount}))
 	count=$((${scriptcount} + ${consolecount}))
 	if [ "${engine}" == "unreal2" ]; then
 	if [ "${engine}" == "unreal2" ]; then
 		count=$((${scriptcount} + ${consolecount} + ${gamecount}))
 		count=$((${scriptcount} + ${consolecount} + ${gamecount}))

+ 3 - 3
functions/fn_monitor

@@ -2,7 +2,7 @@
 # LGSM fn_monitor function
 # LGSM fn_monitor function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 080215
+# Version: 230315
 
 
 # Description: Monitors server by checking for running proccesses
 # Description: Monitors server by checking for running proccesses
 # then passes to fn_monitor_query.
 # then passes to fn_monitor_query.
@@ -66,7 +66,7 @@ if [ ! -f "${lockselfname}" ]; then
 	fn_scriptlog "Disabled: No lock file found"
 	fn_scriptlog "Disabled: No lock file found"
 	sleep 1
 	sleep 1
 	echo -en "\n"
 	echo -en "\n"
-	echo "To enable monitor run ${selfname} start"
+	echo "To enable monitor run ./${selfname} start"
 	exit
 	exit
 fi
 fi
 
 
@@ -76,7 +76,7 @@ if [ "${updatecheck}" = "0" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "$
 	fn_printdots "Checking session: CHECKING"
 	fn_printdots "Checking session: CHECKING"
 	fn_scriptlog "Checking session: CHECKING"
 	fn_scriptlog "Checking session: CHECKING"
 	sleep 1
 	sleep 1
-	tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -E "^${servicename}:"|wc -l)
+	tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:")
 	if [ "${tmuxwc}" -eq 1 ]; then
 	if [ "${tmuxwc}" -eq 1 ]; then
 		fn_printok "Checking session: OK"
 		fn_printok "Checking session: OK"
 		fn_scriptlog "Checking session: OK"
 		fn_scriptlog "Checking session: OK"

+ 57 - 16
functions/fn_start

@@ -2,7 +2,7 @@
 # LGSM fn_start function
 # LGSM fn_start function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 160214
+# Version: 220415
 
 
 # Description: Starts the server.
 # Description: Starts the server.
 
 
@@ -10,14 +10,14 @@ local modulename="Starting"
 
 
 fn_start_teamspeak3(){
 fn_start_teamspeak3(){
 # Create any missing log dirs
 # Create any missing log dirs
-if [ ! -d ${scriptlogdir} ];then
-	mkdir ${rootdir}/log
-	mkdir ${scriptlogdir}
+if [ ! -d "${scriptlogdir}" ];then
+	mkdir "${rootdir}/log"
+	mkdir "${scriptlogdir}"
 	fn_printinfo  "Creating log directorys ${scriptlogdir}"
 	fn_printinfo  "Creating log directorys ${scriptlogdir}"
 	fn_scriptlog "Creating log directorys ${scriptlogdir}"
 	fn_scriptlog "Creating log directorys ${scriptlogdir}"
 fi
 fi
-if [ ! -h ${rootdir}/log/server ]; then
-	ln -sv ${gamelogdir} ${rootdir}/log/server
+if [ ! -h "${rootdir}/log/server" ]; then
+	ln -sv "${gamelogdir} ${rootdir}/log/server"
 fi
 fi
 
 
 fn_check_root
 fn_check_root
@@ -30,7 +30,7 @@ if [ "${ts3status}" = "Server is running" ]; then
 	echo -en "\n"
 	echo -en "\n"
 	exit
 	exit
 fi
 fi
-if [ ! -e ${servercfgfullpath} ]; then
+if [ ! -e "${servercfgfullpath}" ]; then
 	fn_printwarn "${servercfgfullpath} is missing"
 	fn_printwarn "${servercfgfullpath} is missing"
 	fn_scriptlog "${servercfgfullpath} is missing"
 	fn_scriptlog "${servercfgfullpath} is missing"
 	sleep 1
 	sleep 1
@@ -50,7 +50,7 @@ mv "${scriptlog}" "${scriptlogdate}"
 # Create lock file
 # Create lock file
 date > "${rootdir}/${lockselfname}"
 date > "${rootdir}/${lockselfname}"
 cd "${executabledir}"
 cd "${executabledir}"
-./ts3server_startscript.sh start inifile=${servercfgfullpath} > /dev/null 2>&1
+./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1
 sleep 1
 sleep 1
 fn_check_ts3status
 fn_check_ts3status
 if [ "${ts3status}" = "Server seems to have died" ] || [ "${ts3status}"	= "No server running (ts3server.pid is missing)" ];then
 if [ "${ts3status}" = "Server seems to have died" ] || [ "${ts3status}"	= "No server running (ts3server.pid is missing)" ];then
@@ -74,6 +74,9 @@ if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then
 	startfix=1
 	startfix=1
 	fn_csgofix
 	fn_csgofix
 fi
 fi
+if [ "${gamename}" == "Insurgency" ]; then
+	fn_insfix
+fi
 fn_details_config
 fn_details_config
 fn_parms
 fn_parms
 fn_logs
 fn_logs
@@ -116,21 +119,59 @@ else
 fi
 fi
 sleep 1
 sleep 1
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:")
 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:")
+
+# If the server fails to start
 if [ "${tmuxwc}" -eq 0 ]; then
 if [ "${tmuxwc}" -eq 0 ]; then
-	fn_printfailnl "Unable to start ${servername}"
+	fn_printfail "Unable to start ${servername}"
 	fn_scriptlog "Unable to start ${servername}"
 	fn_scriptlog "Unable to start ${servername}"
-	echo -e "	Check log files: ${rootdir}/log"
-	echo -en "	Run debug mode: ./${selfname} debug"
+	sleep 1
 	if [ -s "${scriptlogdir}/.${servicename}-tmux-error.tmp" ]; then
 	if [ -s "${scriptlogdir}/.${servicename}-tmux-error.tmp" ]; then
+		fn_printfail "Unable to start ${servername}: Tmux returned the following error:"
 		fn_scriptlog "tmux returned the following error"
 		fn_scriptlog "tmux returned the following error"
+		sleep 1
+		echo -en "\n"
+		echo ""
+		cat "${scriptlogdir}/.${servicename}-tmux-error.tmp"
 		cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" >> "${scriptlog}"
 		cat "${scriptlogdir}/.${servicename}-tmux-error.tmp" >> "${scriptlog}"
+		sleep 1
+		echo ""
+		# Detected error http://gameservermanagers.com/issues
+		if [ $(grep -c "Operation not permitted" "${scriptlogdir}/.${servicename}-tmux-error.tmp") ];then
+			if [ ! $(grep "tty:" /etc/group|grep "$(whoami)") ];then
+				echo "================================="
+				echo "$(whoami) is not part of the tty group."
+				fn_scriptlog "$(whoami) is not part of the tty group."
+				group=$(grep tty /etc/group)
+				echo ""
+				echo "	${group}"
+				fn_scriptlog "${group}"
+				echo ""
+				echo "Run the following command with root privileges."
+				echo ""
+				echo "	usermod -G tty $(whoami)"
+				echo ""
+				echo "http://gameservermanagers.com/tmux-op-perm"
+				fn_scriptlog "http://gameservermanagers.com/tmux-op-perm"
+				echo "================================="
+			else
+				echo "$(whoami) is part of the tty group."
+				group=$(grep tty /etc/group)
+				echo ""
+				echo "	${group}"
+				fn_scriptlog "${group}"
+				echo ""
+				echo "No known fix currently."
+				fn_scriptlog "No known fix currently."
+				echo "http://gameservermanagers.com/issues"
+				fn_scriptlog "http://gameservermanagers.com/issues"
+			fi
+		fi
+	else
+		fn_printok "${servername}"
+		fn_scriptlog "Started ${servername}"
 	fi
 	fi
-else
-	fn_printok "${servername}"
-	fn_scriptlog "Started ${servername}"
 fi
 fi
-rm "${scriptlogdir}/.${servicename}-tmux-error.tmp"
-sleep 1
+#rm "${scriptlogdir}/.${servicename}-tmux-error.tmp"
 echo -en "\n"
 echo -en "\n"
 }
 }
 
 

+ 99 - 18
functions/fn_stop

@@ -8,6 +8,27 @@
 
 
 local modulename="Stopping"
 local modulename="Stopping"
 
 
+sdtd_telnet(){
+    sdtdshutdown=$( expect -c '
+    proc abort {} {
+        puts "Timeout or EOF\n"
+        exit 1
+    }
+    spawn telnet '"${telnetip}"' '"${telnetport}"'
+    expect {
+        "password:"     { send "'"${telnetpass}"'\r" }
+        default         abort
+    }
+    expect {
+        "session."  { send "shutdown\r" }
+        default         abort
+    }
+    expect { eof }
+    puts "Completed.\n"
+    ')
+}
+
+
 fn_stop_teamspeak3(){
 fn_stop_teamspeak3(){
 fn_check_root
 fn_check_root
 fn_check_systemdir
 fn_check_systemdir
@@ -16,12 +37,12 @@ fn_scriptlog "${servername}"
 sleep 1
 sleep 1
 fn_check_ts3status
 fn_check_ts3status
 if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ];then
 if [ "${ts3status}" = "No server running (ts3server.pid is missing)" ];then
-	fn_printfail "${servername} is already stopped"
-	fn_scriptlog "${servername} is already stopped"
+    fn_printfail "${servername} is already stopped"
+    fn_scriptlog "${servername} is already stopped"
 else
 else
-	${filesdir}/ts3server_startscript.sh stop inifile=${ini} > /dev/null 2>&1
-	fn_printok "${servername}"
-	fn_scriptlog "Stopped ${servername}"
+    ${filesdir}/ts3server_startscript.sh stop inifile=${ini} > /dev/null 2>&1
+    fn_printok "${servername}"
+    fn_scriptlog "Stopped ${servername}"
 fi
 fi
 # Remove lock file
 # Remove lock file
 rm -f "${rootdir}/${lockselfname}"
 rm -f "${rootdir}/${lockselfname}"
@@ -37,23 +58,83 @@ fn_printdots "${servername}"
 fn_scriptlog "${servername}"
 fn_scriptlog "${servername}"
 sleep 1
 sleep 1
 fn_check_tmux
 fn_check_tmux
-pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:")
-if [ "${pid}" == "0" ]; then
-	fn_printfail "${servername} is already stopped"
-	fn_scriptlog "${servername} is already stopped"
+
+if [ "${gamename}" == "7 Days To Die" ] ; then
+    # if game is 7 Days To Die, we need special, graceful shutdown via telnet connection.
+    # Set below variable to be called for expect to operate correctly..
+    fn_printdots "Attempting graceful shutdown via telnet"
+    fn_scriptlog "Attempting graceful shutdown via telnet"
+    sleep 1
+
+
+    telnetip=127.0.0.1
+    sdtd_telnet
+
+    # If failed using localhost will use servers ip
+    refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF")
+    if [ -n "${refused}" ]; then
+        fn_check_ip
+        telnetip=${ip}
+        fn_printwarn "Attempting graceful shutdown via telnet: localhost failed"
+        fn_scriptlog "Warning! Attempting graceful shutdown failed using localhost"
+        sleep 5
+        echo -en "\n"
+        fn_printdots "Attempting graceful shutdown via telnet: using ${telnetip}"
+        fn_scriptlog "Attempting graceful shutdown via telnet using ${telnetip}"
+        sdtd_telnet
+        sleep 1
+    fi
+
+    refused=$(echo -en "\n ${sdtdshutdown}"| grep "Timeout or EOF")
+    completed=$(echo -en "\n ${sdtdshutdown}"| grep "Completed.")
+    if [ -n "${refused}" ]; then
+        fn_printfail "Attempting graceful shutdown via telnet"
+         fn_scriptlog "Attempting graceful shutdown failed"
+         fn_scriptlog "${refused}"
+    elif [ -n "${completed}" ]; then
+        fn_printok "Attempting graceful shutdown via telnet"
+        fn_scriptlog "Attempting graceful shutdown succeeded"
+    else
+         fn_printfail "Attempting graceful shutdown via telnet: Unknown error"
+         fn_scriptlog "Attempting graceful shutdown failed"
+         fn_scriptlog "Unknown error"
+    fi
+    sleep 1
+    echo -en "\n\n"
+    echo -en "Telnet output:"
+    echo -en "\n ${sdtdshutdown}"
+    echo -en "\n\n"
+    sleep 1
+    fn_printdots "${servername}"
+    fn_scriptlog "${servername}"
+    sleep 5
+    pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:")
+    if [ "${pid}" == "0" ]; then
+        fn_printok "${servername} is already stopped using graceful shutdown"
+        fn_scriptlog "${servername} is already stopped using graceful shutdown"
+    else
+        tmux kill-session -t ${servicename}
+        fn_printok "${servername}"
+        fn_scriptlog "Stopped ${servername}"
+    fi
+
 else
 else
-	tmux kill-session -t ${servicename}
-	fn_printok "${servername}"
-	fn_scriptlog "Stopped ${servername}"
+    pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -Ec "^${servicename}:")
+    if [ "${pid}" == "0" ]; then
+        fn_printfail "${servername} is already stopped"
+        fn_scriptlog "${servername} is already stopped"
+    else
+        tmux kill-session -t ${servicename}
+        fn_printok "${servername}"
+        fn_scriptlog "Stopped ${servername}"
+    fi
 fi
 fi
-# Remove lock file
-rm -f "${rootdir}/${lockselfname}"
-sleep 1
-echo -en "\n"
+    sleep 1
+    echo -en "\n"
 }
 }
 
 
 if [ "${gamename}" == "Teamspeak 3" ]; then
 if [ "${gamename}" == "Teamspeak 3" ]; then
-	fn_stop_teamspeak3
+    fn_stop_teamspeak3
 else
 else
-	fn_stop_tmux
+    fn_stop_tmux
 fi
 fi

+ 34 - 9
functions/fn_update_check

@@ -2,7 +2,7 @@
 # LGSM fn_update_check function
 # LGSM fn_update_check function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 150315
+# Version: 220415
 
 
 # Description: Checks if a server update is available.
 # Description: Checks if a server update is available.
 
 
@@ -84,12 +84,13 @@ if [ "${requestrestart}" -ge "1" ]; then
 	echo -ne "Applying update...\r"
 	echo -ne "Applying update...\r"
 	sleep 1
 	sleep 1
 	echo -ne "\n"
 	echo -ne "\n"
-	if [ ! -z "${norestart}" ]; then
-		fn_update_dl
-	else
+	tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:")
+	if [ "${tmuxwc}" -eq 1 ]; then
 		fn_stop
 		fn_stop
 		fn_update_dl
 		fn_update_dl
 		fn_start
 		fn_start
+	else
+		fn_update_dl
 	fi
 	fi
 else
 else
 	fn_printok "Checking for update: Server logs: No update requested"
 	fn_printok "Checking for update: Server logs: No update requested"
@@ -145,12 +146,14 @@ if [ "${currentbuild}" -ne "${availablebuild}" ]; then
 	fn_scriptlog "Current build: ${currentbuild}"
 	fn_scriptlog "Current build: ${currentbuild}"
 	fn_scriptlog "Available build: ${availablebuild}"
 	fn_scriptlog "Available build: ${availablebuild}"
 	fn_scriptlog "${currentbuild} > ${availablebuild}"
 	fn_scriptlog "${currentbuild} > ${availablebuild}"
-	if [ ! -z "${norestart}" ]; then
-		fn_update_dl
-	else
+
+	tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:")
+	if [ "${tmuxwc}" -eq 1 ]; then
 		fn_stop
 		fn_stop
 		fn_update_dl
 		fn_update_dl
 		fn_start
 		fn_start
+	else
+		fn_update_dl
 	fi
 	fi
 else
 else
 	echo -e "\n"
 	echo -e "\n"
@@ -200,17 +203,29 @@ currentbuild=$(cat $(find ./* -name 'ts3server*_0.log' 2> /dev/null | sort | egr
 ts3arch=$(ls $(find ${filesdir}/ -name 'ts3server_*_*' 2> /dev/null | grep -v 'ts3server_minimal_runscript.sh' | sort | tail -1) | egrep -o '(amd64|x86)' | tail -1)
 ts3arch=$(ls $(find ${filesdir}/ -name 'ts3server_*_*' 2> /dev/null | grep -v 'ts3server_minimal_runscript.sh' | sort | tail -1) | egrep -o '(amd64|x86)' | tail -1)
 
 
 # Gets availablebuild info
 # Gets availablebuild info
-wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '<a href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers.tmp
+
+# Grabs all version numbers not in correct order
+wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '<a href=\".*\/\">.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > .ts3_version_numbers_unsorted.tmp
+
+# removes digits to allow sorting of numbers
+cat .ts3_version_numbers_unsort.tmp |tr -cd "[:digit:][*\n]" > .ts3_version_numbers_digit.tmp
+# Sorts numbers in to correct order
+# merges two files in to one with two columns sorts the numbers in to order then only outputs the second to the ts3_version_numbers.tmp
+paste .ts3_version_numbers_digit.tmp .ts3_version_numbers_unsorted.tmp |sort -rn|awk '{ print $2 }' > .ts3_version_numbers.tmp
+
 # Finds directory with most recent server version.
 # Finds directory with most recent server version.
 while read ts3_version_number; do
 while read ts3_version_number; do
 	wget --spider -q "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux-${ts3arch}-${ts3_version_number}.tar.gz"
 	wget --spider -q "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux-${ts3arch}-${ts3_version_number}.tar.gz"
 	if [[ $? == 0 ]]; then
 	if [[ $? == 0 ]]; then
 		availablebuild="${ts3_version_number}"
 		availablebuild="${ts3_version_number}"
 		# Break while-loop, if the latest release could be found
 		# Break while-loop, if the latest release could be found
+		echo "http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux-${ts3arch}-${ts3_version_number}.tar.g"
 		break
 		break
 	fi
 	fi
 done < .ts3_version_numbers.tmp
 done < .ts3_version_numbers.tmp
-rm .ts3_version_numbers.tmp
+rm -f .ts3_version_numbers_digit.tmp
+rm -f .ts3_version_numbers_unsorted.tmp
+rm -f .ts3_version_numbers.tmp
 
 
 # Checks availablebuild info is available
 # Checks availablebuild info is available
 if [ -z "${availablebuild}" ]; then
 if [ -z "${availablebuild}" ]; then
@@ -268,6 +283,16 @@ fi
 fn_printdots "Checking for update"
 fn_printdots "Checking for update"
 if [ "${gamename}" == "Teamspeak 3" ]; then
 if [ "${gamename}" == "Teamspeak 3" ]; then
 	fn_teamspeak3_check
 	fn_teamspeak3_check
+elif [ "${engine}" == "goldsource" ]; then
+	# Goldsource servers bypass checks as fn_steamcmdcheck does not work for appid 90 servers.
+	tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:")
+	if [ "${tmuxwc}" -eq 1 ]; then
+		fn_stop
+		fn_update_dl
+		fn_start
+	else
+		fn_update_dl
+	fi
 else
 else
 	fn_logupdaterequest
 	fn_logupdaterequest
 	fn_steamcmdcheck
 	fn_steamcmdcheck

+ 3 - 3
functions/fn_update_dl

@@ -32,7 +32,7 @@ sleep 1
 fn_printoknl "Updating ${servername}"
 fn_printoknl "Updating ${servername}"
 fn_scriptlog "Updating ${servername}"
 fn_scriptlog "Updating ${servername}"
 sleep 1
 sleep 1
-cd ${rootdir}
+cd "${rootdir}"
 echo -e "downloading teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz...\c"
 echo -e "downloading teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz...\c"
 fn_scriptlog "Downloading teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz"
 fn_scriptlog "Downloading teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz"
 wget -N --no-check-certificate /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux-${ts3arch}-${ts3_version_number}.tar.gz 2>&1 | grep -F HTTP | cut -c45-| uniq
 wget -N --no-check-certificate /dev/null http://dl.4players.de/ts/releases/${ts3_version_number}/teamspeak3-server_linux-${ts3arch}-${ts3_version_number}.tar.gz 2>&1 | grep -F HTTP | cut -c45-| uniq
@@ -55,7 +55,7 @@ else
 fi
 fi
 echo -e "copying to ${filesdir}...\c"
 echo -e "copying to ${filesdir}...\c"
 fn_scriptlog "Copying to ${filesdir}"
 fn_scriptlog "Copying to ${filesdir}"
-cp -R ${rootdir}/teamspeak3-server_linux-${ts3arch}/* "${filesdir}" 2> "${scriptlogdir}/.${servicename}-cp-error.tmp"
+cp -R "${rootdir}/teamspeak3-server_linux-${ts3arch}/*" "${filesdir}" 2> "${scriptlogdir}/.${servicename}-cp-error.tmp"
 local status=$?
 local status=$?
 if [ ${status} -eq 0 ]; then
 if [ ${status} -eq 0 ]; then
 	echo "OK"
 	echo "OK"
@@ -70,7 +70,7 @@ else
 	exit
 	exit
 fi
 fi
 rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
 rm -f teamspeak3-server_linux-${ts3arch}-${availablebuild}.tar.gz
-rm -rf ${rootdir}/teamspeak3-server_linux-${ts3arch}
+rm -rf "${rootdir}/teamspeak3-server_linux-${ts3arch}"
 }
 }
 
 
 if [ "${gamename}" == "Teamspeak 3" ]; then
 if [ "${gamename}" == "Teamspeak 3" ]; then

+ 16 - 4
functions/fn_validate

@@ -2,13 +2,13 @@
 # LGSM fn_validate function
 # LGSM fn_validate function
 # Author: Daniel Gibbs
 # Author: Daniel Gibbs
 # Website: http://danielgibbs.co.uk
 # Website: http://danielgibbs.co.uk
-# Version: 210115
+# Version: 150415
 
 
 # Description: Runs a server validation.
 # Description: Runs a server validation.
 
 
 local modulename="Validate"
 local modulename="Validate"
-fn_check_root
-fn_check_systemdir
+
+fn_validation(){
 fn_printwarn "Validating may overwrite some customised files."
 fn_printwarn "Validating may overwrite some customised files."
 sleep 1
 sleep 1
 echo -en "\n"
 echo -en "\n"
@@ -23,4 +23,16 @@ sleep 1
 cd "${rootdir}"
 cd "${rootdir}"
 cd "steamcmd"
 cd "steamcmd"
 ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" validate +quit|tee -a "${scriptlog}"
 ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${filesdir}" +app_update "${appid}" validate +quit|tee -a "${scriptlog}"
-fn_scriptlog "Checking complete"
+fn_scriptlog "Checking complete"
+}
+
+fn_check_root
+fn_check_systemdir
+tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -Ec "^${servicename}:")
+if [ "${tmuxwc}" -eq 1 ]; then
+    fn_stop
+    fn_validation
+    fn_start
+else
+    fn_validation
+fi

BIN
images/icons/centos-icon-32.png


BIN
images/icons/debian-icon-32.png


BIN
images/icons/ubuntu-icon-32.png


+ 3 - 0
images/logo/README.md

@@ -0,0 +1,3 @@
+# LGSM - Official Logos
+For Reference the original design can be found here.
+http://twolofbees.com/artwork.php?iid=870

BIN
images/logo/assets/lgsm-font-pt_sans.zip


BIN
images/logo/assets/lgsm-square.xcf


BIN
images/logo/assets/lgsm.xcf


BIN
images/logo/assets/lgsm_full.xcf


BIN
images/logo/lgsm-250x143-dark.png


BIN
images/logo/lgsm-250x143-light.png


BIN
images/logo/lgsm-full-dark.png


BIN
images/logo/lgsm-full-light.png


BIN
images/logo/lgsm-site-foot.png


BIN
images/logo/lgsm-site-head.png


BIN
images/logo/lgsm-square-114-dark.png


BIN
images/logo/lgsm-square-114-light.png


BIN
images/logo/lgsm-square-16-dark.png


BIN
images/logo/lgsm-square-16-light.png


BIN
images/logo/lgsm-square-184-dark.png


BIN
images/logo/lgsm-square-184-light.png


BIN
images/logo/lgsm-square-24-dark.png


BIN
images/logo/lgsm-square-24-light.png


BIN
images/logo/lgsm-square-32-dark.png


BIN
images/logo/lgsm-square-32-light.png


BIN
images/logo/lgsm-square-512-dark.png


BIN
images/logo/lgsm-square-512-light.png


BIN
images/logo/lgsm-square-64-dark.png


BIN
images/logo/lgsm-square-64-light.png


BIN
images/screens/Tmux.png