Răsfoiți Sursa

Merge pull request #369 from dgibbs64/ilijamt-config-select

Ilijamt config select
Daniel Gibbs 11 ani în urmă
părinte
comite
1f0c45f8cf

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+*.db

+ 7 - 0
CounterStrikeGlobalOffensive/csgoserver

@@ -111,5 +111,12 @@ fn_runfunction
 
 
 fn_functions
 fn_functions
 
 
+# init the getopt function variables
 getopt=$1
 getopt=$1
+
+# init the select function variables
+usesrvcfg=1
+getsrvcfg=$2
+
+fn_select
 fn_getopt
 fn_getopt

+ 1 - 1
functions/fn_details_distro

@@ -29,7 +29,7 @@ glibcv=$(ldd --version |grep ldd|awk '{print $NF}')
 # e.g: tmux 1.6
 # e.g: tmux 1.6
 if [ -z "$(command -v tmux)" ]; then
 if [ -z "$(command -v tmux)" ]; then
 	tmuxv="\e[0;31mNOT INSTALLED!\e[0m"
 	tmuxv="\e[0;31mNOT INSTALLED!\e[0m"
-elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd [:digit:])" -lt "16" ]; then
+elif [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')" -lt "16" ]; then
 	tmuxv="$(tmux -V) (>= 1.6 required for console log)"
 	tmuxv="$(tmux -V) (>= 1.6 required for console log)"
 else
 else
 	tmuxv=$(tmux -V)
 	tmuxv=$(tmux -V)

+ 5 - 0
functions/fn_functions

@@ -273,5 +273,10 @@ functionfile="${FUNCNAME}"
 fn_runfunction
 fn_runfunction
 }
 }
 
 
+fn_select(){
+functionfile="${FUNCNAME}"
+fn_runfunction
+}
+
 # Calls on-screen messages
 # Calls on-screen messages
 fn_messages
 fn_messages

+ 5 - 5
functions/fn_getopt

@@ -41,7 +41,7 @@ case "$getopt" in
 	auto-install)
 	auto-install)
 		fn_autoinstall;;
 		fn_autoinstall;;
 	*)
 	*)
-	echo "Usage: $0 {start|stop|restart|update|force-update|validate|monitor|email-test|details|backup|console|debug|install|auto-install}"
+	echo "Usage: $0 {start|stop|restart|update|force-update|validate|monitor|email-test|details|backup|console|debug|install|auto-install} $appendextra"
 	exit 1;;
 	exit 1;;
 esac
 esac
 exit
 exit
@@ -66,7 +66,7 @@ case "$getopt" in
 	backup)
 	backup)
 		fn_backup;;
 		fn_backup;;
 	*)
 	*)
-		echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup}"
+		echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup} $appendextra"
 		exit 1;;
 		exit 1;;
 esac
 esac
 exit
 exit
@@ -97,7 +97,7 @@ case "$getopt" in
 	map-compressor)
 	map-compressor)
 		fn_compress_ut99maps;;
 		fn_compress_ut99maps;;
 	*)
 	*)
-	echo "Usage: $0 {start|stop|restart|monitor|email-test|details|backup|console|debug|install|map-compressor}"
+	echo "Usage: $0 {start|stop|restart|monitor|email-test|details|backup|console|debug|install|map-compressor} $appendextra"
 	exit 1;;
 	exit 1;;
 esac
 esac
 exit
 exit
@@ -135,7 +135,7 @@ case "$getopt" in
 	map-compressor)
 	map-compressor)
 		fn_compress_unreal2maps;;
 		fn_compress_unreal2maps;;
 	*)
 	*)
-	echo "Usage: $0 {start|stop|restart|update|validate|monitor|email-test|details|backup|console|debug|install|auto-install|map-compressor}"
+	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
@@ -167,7 +167,7 @@ case "$getopt" in
 	map-compressor)
 	map-compressor)
 		fn_compress_unreal2maps;;
 		fn_compress_unreal2maps;;
 	*)
 	*)
-	echo "Usage: $0 {start|stop|restart|monitor|email-test|details|backup|console|debug|install|map-compressor}"
+	echo "Usage: $0 {start|stop|restart|monitor|email-test|details|backup|console|debug|install|map-compressor} $appendextra"
 	exit 1;;
 	exit 1;;
 esac
 esac
 exit
 exit

+ 84 - 0
functions/fn_select

@@ -0,0 +1,84 @@
+#!/bin/bash
+# LGSM fn_select function
+# Author: Ilija Matoski (ilijamt@gmail.com)
+# Website: https://matoski.com
+# Version: 010316
+
+# Description: Automatically selects a created server from the available ones defined in the root
+# If no server files found <name>.<appid> it will default to the data in the game file
+
+if [ $usesrvcfg -eq 1 ]; then
+
+    if [ -z "$appid" ]; then
+      fn_printwarn "appid not found for $gamename, this is not supported.\n\n"
+      exit
+    fi
+
+    # get all the available configs for the appid
+    cfgs=()
+    filelist=(`find $rootdir -type f -name "*.$appid"`)
+    for file in "${filelist[@]}"; do
+      cfg=${file:${#rootdir}+1}
+      cfg=${cfg:0:${#cfg} - 4}
+      cfgs+=("$cfg")
+    done
+
+    # create the append extra list for the options
+    appendextra=$(printf "|%s" "${cfgs[@]}")
+    appendextra=${appendextra:1}
+    loadcfg=
+    invalidcfg=0
+    reinit=0
+
+    # if we don't have any config files proced as normal so skip the next part
+    if [ ${#cfgs[@]} -eq 1 ]; then
+        # we have only one config file so we load that one only unless the user specifies it manually, then we verify
+        loadcfg="${cfgs[0]}";
+        if [ ! -z "$getsrvcfg" ] && [ ! -f "${getsrvcfg}.${appid}" ]; then
+            invalidcfg=1
+        fi
+    elif [ ${#cfgs[@]} -gt 0 ]; then
+        # we have more than one files available so we continue on the verification if the file is present
+        loadcfg="$getsrvcfg";
+        if [ -z "$getsrvcfg" ] || [ ! -f "${getsrvcfg}.${appid}" ]; then
+            invalidcfg=1
+        fi
+    else
+        # we don't have anything so we need to continue on without touching anything
+        reinit=0
+        loadcfg=
+    fi
+
+    # it's invalid cfg setting
+    if [ $invalidcfg -eq 1 ]; then
+      if [ -z "$getsrvcfg" ]; then
+        fn_printwarn "configuration file not specified, use one of the available ones ($appendextra)\n"
+      else
+        fn_printwarn "$getsrvcfg configuration file does not exist, use one of the available ones ($appendextra)\n"
+      fi
+      getopt=
+      fn_getopt
+    else
+      if [ ! -z "$loadcfg" ] && [ -f "${getsrvcfg}.${appid}" ]; then
+        # everything OK, load the config file and reinit the variables
+        source "${loadcfg}.${appid}"
+        reinit=1
+      fi
+    fi
+
+    if [ $reinit -eq 1 ]; then
+        case "$appid" in
+            *)
+            lockselfname=".${servicename}.lock"
+            servercfg="${servicename}.cfg"
+            servercfgfullpath="${servercfgdir}/${servercfg}"
+            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"
+            ;;
+        esac
+    fi
+
+fi