diff --git a/ARKSurvivalEvolved/arkserver b/ARKSurvivalEvolved/arkserver
index d236fd9d4..e95f539c6 100644
--- a/ARKSurvivalEvolved/arkserver
+++ b/ARKSurvivalEvolved/arkserver
@@ -40,7 +40,7 @@ ip="0.0.0.0"
updateonstart="off"
fn_parms(){
- parms="TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?ServerAdminPassword=${rconpassword}"
+parms="TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?ServerAdminPassword=${rconpassword}"
}
#### Advanced Variables ####
diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server
index d7801dc2e..9d48326d1 100644
--- a/Left4Dead2/l4d2server
+++ b/Left4Dead2/l4d2server
@@ -25,9 +25,6 @@ email="email@example.com"
pushbulletalert="off"
pushbullettoken="accesstoken"
-# Pushover
-#Push alot
-
# Steam login
steamuser="anonymous"
steampass=""
diff --git a/Mumble/mumbleserver b/Mumble/mumbleserver
index 5f30b6fa8..628a07ad4 100644
--- a/Mumble/mumbleserver
+++ b/Mumble/mumbleserver
@@ -2,6 +2,7 @@
# Mumble
# Server Management Script
# Author: Daniel Gibbs
+# Contributor: UltimateByte
# Website: https://gameservermanagers.com
if [ -f ".dev-debug" ]; then
exec 5>dev-debug.log
@@ -9,7 +10,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
-version="210516"
+version="290716"
#### Variables ####
@@ -25,6 +26,23 @@ email="email@example.com"
pushbulletalert="off"
pushbullettoken="accesstoken"
+# Start Variables
+updateonstart="off"
+
+fn_parms(){
+parms="-fg -ini ${servercfgfullpath}"
+}
+
+#### 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="master"
+
+
# Server Details
gamename="Mumble"
servicename="mumble-server"
@@ -46,7 +64,7 @@ backupdir="${rootdir}/backups"
# Logging
logdays="7"
-logdir="${rootdir}/log"
+gamelogdir="${rootdir}/log"
scriptlogdir="${rootdir}/log/script"
consolelogdir="${rootdir}/log/console"
consolelogging="on"
@@ -58,17 +76,6 @@ 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"
-fn_parms(){
-parms="-fg -ini ${servercfgfullpath}"
-}
-
-# Github Branch Select
-# Allows for the use of different function files
-# from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
-githubbranch="master"
-
##### Script #####
# Do not edit
diff --git a/lgsm/functions/alert.sh b/lgsm/functions/alert.sh
index 5aaf3103e..9cef86e95 100644
--- a/lgsm/functions/alert.sh
+++ b/lgsm/functions/alert.sh
@@ -41,9 +41,9 @@ elif [ "${alert}" == "test" ]; then
fn_alert_test
fi
-if [ "${emailnotification}" == "on" ]||[ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then
+if [ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then
alert_email.sh
-elif [ "${emailnotification}" != "on" ]||[ "${emailalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then
+elif [ "${emailalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then
fn_print_warn_nl "Email alerts not enabled"
fn_script_log_warn "Email alerts not enabled"
elif [ -z "${email}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then
diff --git a/lgsm/functions/check_permissions.sh b/lgsm/functions/check_permissions.sh
index c95a76479..c41f8d67f 100644
--- a/lgsm/functions/check_permissions.sh
+++ b/lgsm/functions/check_permissions.sh
@@ -9,21 +9,23 @@ local commandname="CHECK"
local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
fn_check_ownership(){
- if [ $(find "${filesdir}" -not -user $(whoami)|wc -l) -ne "0" ]||[ $(find "${rootdir}/${selfname}" -not -user $(whoami)|wc -l) -ne "0" ]; then
- fn_print_fail_nl "Permissions issues found"
- fn_script_log_fatal "Permissions issues found"
- fn_print_infomation_nl "The current user ($(whoami)) does not have ownership of the following files:"
- fn_script_log_info "The current user ($(whoami)) does not have ownership of the following files:"
- {
- echo -e "User\tGroup\tFile\n"
- find "${filesdir}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
- } | column -s $'\t' -t | tee -a "${scriptlog}"
- core_exit.sh
+ if [ -d "${filesdir}" ]; then
+ if [ $(find "${filesdir}" -not -user $(whoami)|wc -l) -ne "0" ]||[ $(find "${rootdir}/${selfname}" -not -user $(whoami)|wc -l) -ne "0" ]; then
+ fn_print_fail_nl "Permissions issues found"
+ fn_script_log_fatal "Permissions issues found"
+ fn_print_infomation_nl "The current user ($(whoami)) does not have ownership of the following files:"
+ fn_script_log_info "The current user ($(whoami)) does not have ownership of the following files:"
+ {
+ echo -e "User\tGroup\tFile\n"
+ find "${filesdir}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
+ } | column -s $'\t' -t | tee -a "${scriptlog}"
+ core_exit.sh
+ fi
fi
}
fn_check_permissions(){
- if [ -n "${functionsdir}" ]; then
+ if [ -d "${functionsdir}" ]; then
if [ $(find "${functionsdir}" -type f -not -executable|wc -l) -ne "0" ]; then
fn_print_fail_nl "Permissions issues found"
fn_script_log_fatal "Permissions issues found"
@@ -56,4 +58,4 @@ fn_check_permissions(){
}
fn_check_ownership
-fn_check_permissions
\ No newline at end of file
+fn_check_permissions
diff --git a/lgsm/functions/check_status.sh b/lgsm/functions/check_status.sh
index 0c0c53969..f68fd9a52 100644
--- a/lgsm/functions/check_status.sh
+++ b/lgsm/functions/check_status.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# LGSM check_status.sh function
# Author: Daniel Gibbs
+# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Checks the process status of the server. Either online or offline.
@@ -18,6 +19,16 @@ if [ "${gamename}" == "TeamSpeak 3" ]; then
ts3error="${status}"
status=0
fi
+
+elif [ "${gamename}" == "Mumble" ]; then
+ # 1: Server is listening
+ # 0: Server is not listening, considered closed
+ mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep 64738 | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }')
+ if [ -z "${mumblepid}" ]; then
+ status=0
+ else
+ status=1
+ fi
else
status=$(tmux list-sessions 2>&1 | awk '{print $1}' | grep -Ec "^${servicename}:")
fi
diff --git a/lgsm/functions/command_details.sh b/lgsm/functions/command_details.sh
index 2e3f2f03e..df3e49e6a 100644
--- a/lgsm/functions/command_details.sh
+++ b/lgsm/functions/command_details.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# LGSM command_details.sh function
# Author: Daniel Gibbs
+# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Displays server infomation.
@@ -43,7 +44,7 @@ fn_details_performance(){
# Avg Load: 1.00, 1.01, 0.78
#
# Mem: total used free cached
- # Physical: 741M 656M 85M 256M
+ # Physical: 741M 656M 85M 256M
# Swap: 0B 0B 0B
echo -e ""
@@ -286,7 +287,7 @@ fn_details_ports(){
echo -e "Change ports by editing the parameters in:"
parmslocation="${red}UNKNOWN${default}"
- local ports_edit_array=( "avalanche" "dontstarve" "projectzomboid" "idtech3" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "TeamSpeak 3" "7 Days To Die" )
+ local ports_edit_array=( "avalanche" "dontstarve" "projectzomboid" "idtech3" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "TeamSpeak 3" "Mumble" "7 Days To Die" )
for port_edit in "${ports_edit_array[@]}"
do
if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then
@@ -441,6 +442,16 @@ fn_details_teamspeak3(){
} | column -s $'\t' -t
}
+fn_details_mumble(){
+ echo -e "netstat -atunp | grep murmur"
+ echo -e ""
+ {
+ echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
+ echo -e "> Voice\tINBOUND\t${port}\tudp"
+ echo -e "> ServerQuery\tINBOUND\t${port}\ttcp"
+ } | column -s $'\t' -t
+}
+
fn_details_teeworlds(){
echo -e "netstat -atunp | grep teeworlds_srv"
echo -e ""
@@ -608,6 +619,8 @@ elif [ "${gamename}" == "7 Days To Die" ]; then
fn_details_sdtd
elif [ "${gamename}" == "TeamSpeak 3" ]; then
fn_details_teamspeak3
+elif [ "${gamename}" == "Mumble" ]; then
+ fn_details_mumble
elif [ "${gamename}" == "Rust" ]; then
fn_details_rust
else
diff --git a/lgsm/functions/command_install.sh b/lgsm/functions/command_install.sh
index 33050adc0..ac66e96e4 100644
--- a/lgsm/functions/command_install.sh
+++ b/lgsm/functions/command_install.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# LGSM command_install.sh function
# Author: Daniel Gibbs
+# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Overall function for the installer.
@@ -17,7 +18,7 @@ check_deps.sh
if [ "${gamename}" == "Unreal Tournament 2004" ]; then
install_server_files.sh
install_ut2k4_key.sh
-elif [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "TeamSpeak 3" ]; then
+elif [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]; then
installer=1
install_server_files.sh
elif [ -n "${appid}" ]; then
@@ -35,4 +36,4 @@ fi
fix.sh
install_complete.sh
-core_exit.sh
\ No newline at end of file
+core_exit.sh
diff --git a/lgsm/functions/command_monitor.sh b/lgsm/functions/command_monitor.sh
index f7483c62d..0d9a916c1 100644
--- a/lgsm/functions/command_monitor.sh
+++ b/lgsm/functions/command_monitor.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# LGSM command_monitor.sh function
# Author: Daniel Gibbs
+# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Monitors server by checking for running processes.
# then passes to monitor_gsquery.sh.
@@ -54,6 +55,23 @@ fn_monitor_teamspeak3(){
fi
}
+fn_monitor_mumble(){
+ if [ "${status}" != "0" ]; then
+ fn_print_ok "Checking session: "
+ fn_print_ok_eol_nl
+ fn_script_log_pass "Checking session: OK"
+ else
+ fn_print_error "Checking session: Not listening to port ${port}"
+ fn_print_fail_eol_nl
+ fn_script_log_error "Checking session: Not listening to port ${port}"
+ failurereason="Checking session: Not listening to port ${port}"
+ alert="restart"
+ alert.sh
+ fn_script_log_info "Monitor is starting ${servername}"
+ sleep 1
+ command_restart.sh
+ fi
+}
fn_monitor_tmux(){
# checks that tmux session is running
if [ "${status}" != "0" ]; then
@@ -92,7 +110,9 @@ fn_monitor_check_update
fn_monitor_msg_checking
if [ "${gamename}" == "TeamSpeak 3" ]; then
fn_monitor_teamspeak3
+elif [ "${gamename}" == "Mumble" ]; then
+ fn_monitor_mumble
else
fn_monitor_tmux
fi
-core_exit.sh
\ No newline at end of file
+core_exit.sh
diff --git a/lgsm/functions/command_start.sh b/lgsm/functions/command_start.sh
index 18af0c786..f7f324bf1 100644
--- a/lgsm/functions/command_start.sh
+++ b/lgsm/functions/command_start.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# LGSM command_start.sh function
# Author: Daniel Gibbs
+# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Starts the server.
@@ -182,4 +183,4 @@ if [ "${gamename}" == "TeamSpeak 3" ]; then
else
fn_start_tmux
fi
-core_exit.sh
\ No newline at end of file
+core_exit.sh
diff --git a/lgsm/functions/command_stop.sh b/lgsm/functions/command_stop.sh
index aab090c7b..572225c18 100644
--- a/lgsm/functions/command_stop.sh
+++ b/lgsm/functions/command_stop.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# LGSM command_stop.sh function
# Author: Daniel Gibbs
+# Contributors: UltimateByte
# Website: https://gameservermanagers.com
# Description: Stops the server.
@@ -208,7 +209,24 @@ fn_stop_teamspeak3(){
fn_script_log_pass "Stopped ${servername}"
else
fn_print_fail_nl "Unable to stop ${servername}"
- fn_script_log_fail "Unable to stop ${servername}"
+ fn_script_log_error "Unable to stop ${servername}"
+ fi
+}
+
+fn_stop_mumble(){
+ fn_print_dots "Stopping ${servername}"
+ mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep 64738 | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }')
+ kill ${mumblepid}
+ sleep 1
+ check_status.sh
+ if [ "${status}" == "0" ]; then
+ # Remove lock file
+ rm -f "${rootdir}/${lockselfname}"
+ fn_stop_tmux
+ fn_script_log_pass "Stopped ${servername}"
+ else
+ fn_print_fail_nl "Unable to stop ${servername}"
+ fn_script_log_error "Unable to stop ${servername}"
fi
}
@@ -247,8 +265,14 @@ fn_stop_pre_check(){
else
fn_stop_teamspeak3
fi
+ elif [ "${gamename}" == "Mumble" ]; then
+ if [ "${status}" == "0" ]; then
+ fn_print_info_nl "${servername} is already stopped"
+ fn_script_log_error "${servername} is already stopped"
+ else
+ fn_stop_mumble
+ fi
else
- check_status.sh
if [ "${status}" == "0" ]; then
fn_print_info_nl "${servername} is already stopped"
fn_script_log_error "${servername} is already stopped"
@@ -263,4 +287,4 @@ sleep 1
check.sh
info_config.sh
fn_stop_pre_check
-core_exit.sh
\ No newline at end of file
+core_exit.sh
diff --git a/lgsm/functions/command_update.sh b/lgsm/functions/command_update.sh
index 794964eeb..d282cc432 100644
--- a/lgsm/functions/command_update.sh
+++ b/lgsm/functions/command_update.sh
@@ -15,8 +15,10 @@ check.sh
if [ "${gamename}" == "TeamSpeak 3" ]; then
update_ts3.sh
+elif [ "${gamename}" == "Mumble" ]; then
+ update_mumble.sh
else
update_steamcmd.sh
fi
-core_exit.sh
\ No newline at end of file
+core_exit.sh
diff --git a/lgsm/functions/core_dl.sh b/lgsm/functions/core_dl.sh
index 2b1ff8053..b8764ddf4 100644
--- a/lgsm/functions/core_dl.sh
+++ b/lgsm/functions/core_dl.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# LGSM core_dl.sh function
# Author: Daniel Gibbs
+# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Deals with all downloads for LGSM.
@@ -117,11 +118,11 @@ fn_fetch_file(){
if [ ${filename##*.} == "bz2" ]; then
echo -ne "downloading ${filename}..."
sleep 1
- curlcmd=$(${curlcmd} --progress-bar --fail -o "${filedir}/${filename}" "${fileurl}")
+ curlcmd=$(${curlcmd} --progress-bar --fail -L -o "${filedir}/${filename}" "${fileurl}")
echo -ne "downloading ${filename}..."
else
echo -ne " fetching ${filename}...\c"
- curlcmd=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${fileurl}" 2>&1)
+ curlcmd=$(${curlcmd} -s --fail -L -o "${filedir}/${filename}" "${fileurl}" 2>&1)
fi
local exitcode=$?
if [ ${exitcode} -ne 0 ]; then
@@ -218,4 +219,4 @@ fn_update_function(){
force="noforce"
md5="nomd5"
fn_fetch_file "${fileurl}" "${filedir}" "${filename}" "${executecmd}" "${run}" "${force}" "${md5}"
-}
\ No newline at end of file
+}
diff --git a/lgsm/functions/core_functions.sh b/lgsm/functions/core_functions.sh
index a5d3369e9..f95706549 100644
--- a/lgsm/functions/core_functions.sh
+++ b/lgsm/functions/core_functions.sh
@@ -5,9 +5,13 @@
# Description: Defines all functions to allow download and execution of functions using fn_fetch_function.
# This function is called first before any other function. Without this file other functions will not load.
-# Fix for TeamSpeak 3 scripts using gamename="Teamspeak 3"
-if [ "${gamename}" == "Teamspeak 3" ]; then
- gamename="TeamSpeak 3"
+# Fixes for legacy code
+if [ "${gamename}" == "Teamspeak 3" ]; then
+ gamename="TeamSpeak 3"
+fi
+
+if [ "${emailnotification}" == "on" ]; then
+ emailalert="on"
fi
# Code/functions for legacy servers
@@ -388,6 +392,11 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
+update_mumble.sh(){
+functionfile="${FUNCNAME}"
+fn_fetch_function
+}
+
update_steamcmd.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
diff --git a/lgsm/functions/core_getopt.sh b/lgsm/functions/core_getopt.sh
index 251a198dc..47cfbf1a7 100644
--- a/lgsm/functions/core_getopt.sh
+++ b/lgsm/functions/core_getopt.sh
@@ -138,20 +138,22 @@ case "${getopt}" in
command_stop.sh;;
r|restart)
command_restart.sh;;
+ u|update)
+ command_update.sh;;
uf|update-functions)
command_update_functions.sh;;
m|monitor)
command_monitor.sh;;
ta|test-alert)
command_test_alert.sh;;
+ dt|details)
+ command_details.sh;;
b|backup)
command_backup.sh;;
dev|dev-debug)
command_dev_debug.sh;;
- console)
- command_console.sh;;
- d|debug)
- command_debug.sh;;
+ i|install)
+ command_install.sh;;
dd|depsdetect)
command_dev_detect_deps.sh;;
*)
@@ -168,12 +170,13 @@ case "${getopt}" in
echo -e "${blue}start\t${default}st |Start the server."
echo -e "${blue}stop\t${default}sp |Stop the server."
echo -e "${blue}restart\t${default}r |Restart the server."
+ echo -e "${blue}update\t${default}u |Checks and applies updates from SteamCMD."
echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded."
echo -e "${blue}monitor\t${default}m |Checks that the server is running."
echo -e "${blue}test-alert\t${default}ta |Sends test alert."
+ echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
echo -e "${blue}backup\t${default}b |Create archive of the server."
- echo -e "${blue}console\t${default}c |Console allows you to access the live view of a server."
- echo -e "${blue}debug\t${default}d |See the output of the server directly to your terminal."
+ echo -e "${blue}install\t${default}i |Install the server."
} | column -s $'\t' -t
esac
}
@@ -460,4 +463,4 @@ elif [ "${engine}" == "unreal" ]; then
else
fn_getopt_generic
fi
-core_exit.sh
\ No newline at end of file
+core_exit.sh
diff --git a/lgsm/functions/info_config.sh b/lgsm/functions/info_config.sh
index 7da902a71..1f754d62d 100644
--- a/lgsm/functions/info_config.sh
+++ b/lgsm/functions/info_config.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# LGSM info_config.sh function
# Author: Daniel Gibbs
+# Contributor: UltimateByte
# Website: https://gameservermanagers.com
# Description: Gets specific details from config files.
@@ -220,6 +221,28 @@ fn_info_config_teamspeak3(){
fi
}
+fn_info_config_mumble(){
+ if [ ! -f "${servercfgfullpath}" ]; then
+ port="64738"
+ queryport="${port}"
+ servername="Mumble"
+ else
+ # check if the ip exists in the config file. Failing this will fall back to the default.
+ ipconfigcheck=$(cat "${servercfgfullpath}" | grep "host=" | awk -F'=' '{ print $2}')
+ if [ -n "${ipconfigcheck}" ]; then
+ ip="${ipconfigcheck}"
+ fi
+ port=$(cat "${servercfgfullpath}" | grep 'port=' | awk -F'=' '{ print $2 }')
+ queryport="${port}"
+
+ # Not Set
+ port=${port:-"64738"}
+ queryport=${queryport:-"64738"}
+
+ servername="Mumble Port ${port}"
+ fi
+}
+
fn_info_config_teeworlds(){
if [ ! -f "${servercfgfullpath}" ]; then
servername="unnamed server"
@@ -302,7 +325,7 @@ fn_info_config_unreal(){
webadminpass=${webadminpass:-"NOT SET"}
fi
}
-
+
fn_info_config_sdtd(){
if [ ! -f "${servercfgfullpath}" ]; then
servername="${unavailable}"
@@ -325,7 +348,7 @@ fn_info_config_sdtd(){
queryport=$((port + 1))
webadminenabled=$(grep "ControlPanelEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
- webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
+ webadminport=$(grep "ControlPanelPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
webadminpass=$(grep "ControlPanelPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
@@ -378,6 +401,8 @@ elif [ "${engine}" == "starbound" ]; then
# TeamSpeak 3
elif [ "${gamename}" == "TeamSpeak 3" ]; then
fn_info_config_teamspeak3
+elif [ "${gamename}" == "Mumble" ]; then
+ fn_info_config_mumble
# Teeworlds
elif [ "${engine}" == "teeworlds" ]; then
fn_info_config_teeworlds
diff --git a/lgsm/functions/info_glibc.sh b/lgsm/functions/info_glibc.sh
index 2750d534d..cb1cb3c31 100644
--- a/lgsm/functions/info_glibc.sh
+++ b/lgsm/functions/info_glibc.sh
@@ -71,6 +71,9 @@ elif [ "${engine}" == "unity3d" ]; then
elif [ "${gamename}" == "TeamSpeak 3" ]; then
glibcrequired="NOT REQUIRED"
glibcfix="no"
+elif [ "${gamename}" == "Mumble" ]; then
+ glibcrequired="NOT REQUIRED"
+ glibcfix="no"
else
glibcrequired="UNKNOWN"
glibcfix="no"
diff --git a/lgsm/functions/install_server_files.sh b/lgsm/functions/install_server_files.sh
index 1922cb363..946b1c6d9 100644
--- a/lgsm/functions/install_server_files.sh
+++ b/lgsm/functions/install_server_files.sh
@@ -95,6 +95,8 @@ sleep 1
if [ "${gamename}" == "TeamSpeak 3" ]; then
update_ts3.sh
+elif [ "${gamename}" == "Mumble" ]; then
+ update_mumble.sh
elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then
fn_install_server_files
fi
diff --git a/lgsm/functions/update_mumble.sh b/lgsm/functions/update_mumble.sh
new file mode 100644
index 000000000..ba4b6f3ce
--- /dev/null
+++ b/lgsm/functions/update_mumble.sh
@@ -0,0 +1,165 @@
+#!/bin/bash
+# LGSM update_mumble.sh function
+# Author: Daniel Gibbs
+# Contributor: UltimateByte
+# Website: https://gameservermanagers.com
+# Description: Handles updating of mumble servers.
+
+local commandname="UPDATE"
+local commandaction="Update"
+local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+
+fn_update_mumble_dl(){
+ fn_fetch_file "https://github.com/mumble-voip/mumble/releases/download/${availablebuild}/murmur-static_${mumblearch}-${availablebuild}.tar.bz2" "${lgsmdir}/tmp" "murmur-static_${mumblearch}-${availablebuild}.tar.bz2"
+ fn_dl_extract "${lgsmdir}/tmp" "murmur-static_${mumblearch}-${availablebuild}.tar.bz2" "${lgsmdir}/tmp"
+ echo -e "copying to ${filesdir}...\c"
+ fn_script_log "Copying to ${filesdir}"
+ cp -R "${lgsmdir}/tmp/murmur-static_${mumblearch}-${availablebuild}/"* "${filesdir}"
+ local exitcode=$?
+ if [ ${exitcode} -eq 0 ]; then
+ fn_print_ok_eol_nl
+ else
+ fn_print_fail_eol_nl
+ fi
+}
+
+fn_update_mumble_currentbuild(){
+ # Gets current build info
+ # Checks if current build info is available. If it fails, then a server restart will be forced to generate logs.
+ if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
+ fn_print_error "Checking for update: GitHub"
+ sleep 1
+ fn_print_error_nl "Checking for update: GitHub: No logs with server version found"
+ fn_script_log_error "Checking for update: GitHub: No logs with server version found"
+ sleep 1
+ fn_print_info_nl "Checking for update: GitHub: Forcing server restart"
+ fn_script_log_info "Checking for update: GitHub: Forcing server restart"
+ sleep 1
+ exitbypass=1
+ command_stop.sh
+ exitbypass=1
+ command_start.sh
+ sleep 1
+ # Check again and exit on failure.
+ if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
+ fn_print_fail_nl "Checking for update: GitHub: Still No logs with server version found"
+ fn_script_log_fatal "Checking for update: GitHub: Still No logs with server version found"
+ core_exit.sh
+ fi
+ fi
+
+ # Get current build from logs
+ currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | egrep 'Murmur ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | awk '{print $4}')
+ if [ -z "${currentbuild}" ]; then
+ fn_print_error_nl "Checking for update: GitHub: Current build version not found"
+ fn_script_log_error "Checking for update: GitHub: Current build version not found"
+ sleep 1
+ fn_print_info_nl "Checking for update: GitHub: Forcing server restart"
+ fn_script_log_info "Checking for update: GitHub: Forcing server restart"
+ exitbypass=1
+ command_stop.sh
+ exitbypass=1
+ command_start.sh
+ currentbuild=$(cat "${consolelogdir}"/"${servicename}"-console.log 2> /dev/null | sort | egrep 'Murmur ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | awk '{print $4}')
+ if [ -z "${currentbuild}" ]; then
+ fn_print_fail_nl "Checking for update: GitHub: Current build version still not found"
+ fn_script_log_fatal "Checking for update: GitHub: Current build version still not found"
+ core_exit.sh
+ fi
+ fi
+}
+
+fn_update_mumble_arch(){
+ # Mumble is x86 only for now
+ mumblearch="x86"
+}
+
+fn_update_mumble_availablebuild(){
+ # Gets latest build info.
+ availablebuild=$(curl -s https://api.github.com/repos/mumble-voip/mumble/releases/latest | grep 'murmur-static_x86.*\.bz2"' | tail -1 | awk -F"/" '{ print $8 }')
+ sleep 1
+
+ # Checks if availablebuild variable has been set
+ if [ -z "${availablebuild}" ]; then
+ fn_print_fail "Checking for update: GitHub"
+ sleep 1
+ fn_print_fail "Checking for update: GitHub: Not returning version info"
+ fn_script_log_fatal "Failure! Checking for update: GitHub: Not returning version info"
+ core_exit.sh
+ else
+ fn_print_ok_nl "Checking for update: GitHub"
+ fn_script_log_pass "Checking for update: GitHub"
+ sleep 1
+ fi
+}
+
+fn_update_mumble_compare(){
+ # Removes dots so if can compare version numbers
+ currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
+ availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]')
+
+ if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
+ echo -e "\n"
+ echo -e "Update available:"
+ sleep 1
+ echo -e " Current build: ${red}${currentbuild} ${mumblearch}${default}"
+ echo -e " Available build: ${green}${availablebuild} ${mumblearch}${default}"
+ echo -e ""
+ sleep 1
+ echo ""
+ echo -en "Applying update.\r"
+ sleep 1
+ echo -en "Applying update..\r"
+ sleep 1
+ echo -en "Applying update...\r"
+ sleep 1
+ echo -en "\n"
+ fn_script_log "Update available"
+ fn_script_log "Current build: ${currentbuild}"
+ fn_script_log "Available build: ${availablebuild}"
+ fn_script_log "${currentbuild} > ${availablebuild}"
+
+ unset updateonstart
+
+ check_status.sh
+ if [ "${status}" == "0" ]; then
+ fn_update_mumble_dl
+ exitbypass=1
+ command_start.sh
+ exitbypass=1
+ command_stop.sh
+ else
+ exitbypass=1
+ command_stop.sh
+ fn_update_mumble_dl
+ exitbypass=1
+ command_start.sh
+ fi
+ alert="update"
+ alert.sh
+ else
+ echo -e "\n"
+ echo -e "No update available:"
+ echo -e " Current version: ${green}${currentbuild}${default}"
+ echo -e " Available version: ${green}${availablebuild}${default}"
+ echo -e ""
+ fn_print_ok_nl "No update available"
+ fn_script_log_info "Current build: ${currentbuild}"
+ fn_script_log_info "Available build: ${availablebuild}"
+ fi
+}
+
+
+fn_update_mumble_arch
+if [ "${installer}" == "1" ]; then
+ fn_update_mumble_availablebuild
+ fn_update_mumble_dl
+else
+ # Checks for server update from github.com
+ fn_print_dots "Checking for update: github.com"
+ fn_script_log_info "Checking for update: github.com"
+ sleep 1
+ fn_update_mumble_currentbuild
+ fn_update_mumble_availablebuild
+ fn_update_mumble_compare
+fi
diff --git a/lgsm/functions/update_ts3.sh b/lgsm/functions/update_ts3.sh
index 3745eed49..e4ee2ddc6 100644
--- a/lgsm/functions/update_ts3.sh
+++ b/lgsm/functions/update_ts3.sh
@@ -47,6 +47,7 @@ fn_update_ts3_currentbuild(){
fi
fi
+ # Get current build from logs
currentbuild=$(cat $(find ./* -name 'ts3server*_0.log' 2> /dev/null | sort | egrep -E -v '${rootdir}/.ts3version' | tail -1) | egrep -o 'TeamSpeak 3 Server ((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}' | egrep -o '((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}')
if [ -z "${currentbuild}" ]; then
fn_print_error_nl "Checking for update: teamspeak.com: Current build version not found"
@@ -76,52 +77,52 @@ elif [ "${arch}" == "i386" ]||[ "${arch}" == "i686" ]; then
ts3arch="x86"
else
echo ""
- fn_print_failure "unknown or unsupported architecture: ${arch}"
- fn_script_log_fatal "unknown or unsupported architecture: ${arch}"
+ fn_print_failure "Unknown or unsupported architecture: ${arch}"
+ fn_script_log_fatal "Unknown or unsupported architecture: ${arch}"
core_exit.sh
fi
}
fn_update_ts3_availablebuild(){
-# Gets availablebuild info.
+ # Gets latest build info.
-# Creates tmp dir if missing
-if [ ! -d "${lgsmdir}/tmp" ]; then
- mkdir -p "${lgsmdir}/tmp"
-fi
+ # Creates tmp dir if missing
+ if [ ! -d "${lgsmdir}/tmp" ]; then
+ mkdir -p "${lgsmdir}/tmp"
+ fi
-# Grabs all version numbers but not in correct order.
-wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > "${lgsmdir}/tmp/.ts3_version_numbers_unsorted.tmp"
+ # Grabs all version numbers but not in correct order.
+ wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | egrep -o '.*\/<\/a>' | egrep -o '[0-9\.?]+'|uniq > "${lgsmdir}/tmp/.ts3_version_numbers_unsorted.tmp"
-# Sort version numbers
-cat "${lgsmdir}/tmp/.ts3_version_numbers_unsorted.tmp" | sort -r --version-sort -o "${lgsmdir}/tmp/.ts3_version_numbers_sorted.tmp"
+ # Sort version numbers
+ cat "${lgsmdir}/tmp/.ts3_version_numbers_unsorted.tmp" | sort -r --version-sort -o "${lgsmdir}/tmp/.ts3_version_numbers_sorted.tmp"
-# Finds directory with most recent server version.
-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.bz2"
- if [ $? -eq 0 ]; then
- availablebuild="${ts3_version_number}"
- # Break while-loop, if the latest release could be found.
- break
- fi
-done < "${lgsmdir}/tmp/.ts3_version_numbers_sorted.tmp"
+ # Finds directory with most recent server version.
+ 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.bz2"
+ if [ $? -eq 0 ]; then
+ availablebuild="${ts3_version_number}"
+ # Break while-loop, if the latest release could be found.
+ break
+ fi
+ done < "${lgsmdir}/tmp/.ts3_version_numbers_sorted.tmp"
-# Tidy up
-rm -f "${lgsmdir}/tmp/.ts3_version_numbers_unsorted.tmp"
-rm -f "${lgsmdir}/tmp/.ts3_version_numbers_sorted.tmp"
+ # Tidy up
+ rm -f "${lgsmdir}/tmp/.ts3_version_numbers_unsorted.tmp"
+ rm -f "${lgsmdir}/tmp/.ts3_version_numbers_sorted.tmp"
-# Checks availablebuild info is available
-if [ -z "${availablebuild}" ]; then
- fn_print_fail "Checking for update: teamspeak.com"
- sleep 1
- fn_print_fail "Checking for update: teamspeak.com: Not returning version info"
- fn_script_log_fatal "Failure! Checking for update: teamspeak.com: Not returning version info"
- core_exit.sh
-else
- fn_print_ok_nl "Checking for update: teamspeak.com"
- fn_script_log_pass "Checking for update: teamspeak.com"
- sleep 1
-fi
+ # Checks availablebuild info is available
+ if [ -z "${availablebuild}" ]; then
+ fn_print_fail "Checking for update: teamspeak.com"
+ sleep 1
+ fn_print_fail "Checking for update: teamspeak.com: Not returning version info"
+ fn_script_log_fatal "Failure! Checking for update: teamspeak.com: Not returning version info"
+ core_exit.sh
+ else
+ fn_print_ok_nl "Checking for update: teamspeak.com"
+ fn_script_log_pass "Checking for update: teamspeak.com"
+ sleep 1
+ fi
}
fn_update_ts3_compare(){
@@ -133,8 +134,8 @@ fn_update_ts3_compare(){
echo -e "\n"
echo -e "Update available:"
sleep 1
- echo -e " Current build: ${red}${currentbuild} ${architecture}${default}"
- echo -e " Available build: ${green}${availablebuild} ${architecture}${default}"
+ echo -e " Current build: ${red}${currentbuild} ${ts3arch}${default}"
+ echo -e " Available build: ${green}${availablebuild} ${ts3arch}${default}"
echo -e ""
sleep 1
echo ""