Browse Source

Merge pull request #667 from dgibbs64/deps-detect

feature: deps detect #433
pull/668/head
Daniel Gibbs 9 years ago
parent
commit
b4dea07479
  1. 10
      functions/check.sh
  2. 200
      functions/check_deps.sh
  3. 6
      functions/command_dev_detect_deps.sh
  4. 2
      functions/command_install.sh
  5. 7
      functions/core_functions.sh
  6. 6
      functions/fn_update_functions
  7. 1
      functions/update_check.sh
  8. 6
      functions/update_functions.sh

10
functions/check.sh

@ -2,7 +2,7 @@
# LGSM fn_check function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="060116"
lgsm_version="170116"
# Description: Overall function for managing checks.
# Runs checks that will either halt on or fix an issue.
@ -33,6 +33,14 @@ do
fi
done
local allowed_commands_array=( command_debug.sh command_start.sh command_stop.sh )
for allowed_command in "${allowed_commands_array[@]}"
do
if [ "${allowed_command}" == "${function_selfname}" ]; then
check_deps.sh
fi
done
local allowed_commands_array=( command_debug.sh command_details.sh command_monitor.sh command_start.sh command_stop.sh )
for allowed_command in "${allowed_commands_array[@]}"
do

200
functions/check_deps.sh

@ -0,0 +1,200 @@
#!/bin/bash
# LGSM check_deps.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="310116"
# Description: Checks that the requires dependencies are installed for LGSM.
fn_deps_detector(){
# Checks if dependency is missing
if [ -n "$(command -v dpkg-query)" ]; then
dpkg-query -W -f='${Status}' ${deptocheck} 2>/dev/null| grep -q -P '^install ok installed$'
depstatus=$?
elif [ -n "$(command -v yum)" ]; then
yum -q list installed ${deptocheck} > /dev/null 2>&1
depstatus=$?
fi
if [ "${depstatus}" == "0" ]; then
missingdep=0
if [ "${function_selfname}" == "command_install.sh" ]; then
echo -e "\e[0;32m${deptocheck}\e[0m"
sleep 0.5
fi
else
# if missing dependency is found
missingdep=1
if [ "${function_selfname}" == "command_install.sh" ]; then
echo -e "\e[0;31m${deptocheck}\e[0m"
sleep 0.5
fi
fi
# Missing dependencies are added to array_deps_missing
if [ "${missingdep}" == "1" ]; then
array_deps_missing+=("${deptocheck}")
fi
}
fn_deps_email(){
# Adds postfix to required dependencies if email notification is enabled
if [ "${emailnotification}" == "on" ]; then
if [ -n "$(command -v dpkg-query)" ]; then
array_deps_required+=( mailutils postfix )
elif [ -n "$(command -v yum)" ]; then
array_deps_required+=( mailx postfix )
fi
fi
}
fn_found_missing_deps(){
if [ "${#array_deps_missing[@]}" != "0" ]; then
fn_printdots "Checking dependencies"
sleep 2
fn_printwarn "Checking dependencies: Dependency missing: \e[0;31m${array_deps_missing[@]}\e[0m"
sleep 1
echo -e ""
sudo -n true > /dev/null 2>&1
if [ $? -eq 0 ]; then
fn_printinfonl "Attempting to install missing dependencies automatically"
echo -en ".\r"
sleep 1
echo -en "..\r"
sleep 1
echo -en "...\r"
sleep 1
echo -en " \r"
if [ -n "$(command -v dpkg-query)" ]; then
echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}"
elif [ -n "$(command -v yum)" ]; then
echo "yum install ${array_deps_missing[@]}"
fi
else
echo ""
fn_printinfomationnl "$(whoami) does not have sudo access. manually install dependencies"
echo ""
if [ -n "$(command -v dpkg-query)" ]; then
echo "sudo dpkg --add-architecture i386; sudo apt-get install ${array_deps_missing[@]}"
elif [ -n "$(command -v yum)" ]; then
echo "yum install ${array_deps_missing[@]}"
fi
echo ""
fi
if [ "${function_selfname}" == "command_install.sh" ]; then
sleep 5
fi
fi
}
fn_check_loop(){
# Loop though required depenencies
for deptocheck in "${array_deps_required[@]}"
do
fn_deps_detector
done
# user to be informaed of any missing dependecies
fn_found_missing_deps
}
if [ "${function_selfname}" == "command_install.sh" ]; then
echo ""
echo "Checking Dependecies"
echo "================================="
fi
# Check will only run if using apt-get or yum
if [ -n "$(command -v dpkg-query)" ]; then
# Generate array of missing deps
array_deps_missing=()
# LGSM requirement for curl
array_deps_required=( curl ca-certificates )
# All servers except ts3 require tmux
if [ "${executable}" != "./ts3server_startscript.sh" ]; then
array_deps_required+=( tmux )
fi
# All servers excelts ts3 & mumble require libstdc++6,lib32gcc1
if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then
array_deps_required+=( lib32gcc1 libstdc++6:i386 )
fi
# Game Specific requirements
# Spark
if [ "${engine}" == "spark" ]; then
array_deps_required+=( speex:i386 libtbb2 )
# 7 Days to Die
elif [ "${executable}" == "./7DaysToDie.sh" ]; then
array_deps_required+=( telnet expect )
# No More Room in Hell
elif [ "${gamename}" == "No More Room in Hell" ]; then
array_deps_required+=( lib32tinfo5 )
# Brainbread 2 and Don't Starve Together
elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then
array_deps_required+=( libcurl4-gnutls-dev:i386 )
elif [ "${engine}" == "projectzomboid" ]; then
array_deps_required+=( openjdk-7-jre )
# Unreal engine
elif [ "${executable}" == "./ucc-bin" ]; then
#UT2K4
if [ -f "${executabledir}/ut2004-bin" ]; then
array_deps_required+=( libsdl1.2debian libstdc++5:i386 bzip2 unzip )
#UT99
else
array_deps_required+=( libsdl1.2debian bzip2 )
fi
fi
fn_deps_email
fn_check_loop
elif [ -n "$(command -v yum)" ]; then
# Generate array of missing deps
array_deps_missing=()
# LGSM requirement for curl
array_deps_required=( curl )
# All servers except ts3 require tmux
if [ "${executable}" != "./ts3server_startscript.sh" ]; then
array_deps_required+=( tmux )
fi
# All servers excelts ts3 & mumble require libstdc++6,lib32gcc1
if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then
array_deps_required+=( glibc.i686 libstdc++.i686 )
fi
# Game Specific requirements
# Spark
if [ "${engine}" == "spark" ]; then
array_deps_required+=( speex.i686 tbb.i686 )
# 7 Days to Die
elif [ "${executable}" == "./7DaysToDie.sh" ]; then
array_deps_required+=( telnet expect )
# No More Room in Hell
elif [ "${gamename}" == "No More Room in Hell" ]; then
array_deps_required+=( ncurses-libs.i686 )
# Brainbread 2 and Don't Starve Together
elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then
array_deps_required+=( libcurl.i686 )
elif [ "${engine}" == "projectzomboid" ]; then
array_deps_required+=( java-1.7.0-openjdk )
# Unreal engine
elif [ "${executable}" == "./ucc-bin" ]; then
#UT2K4
if [ -f "${executabledir}/ut2004-bin" ]; then
array_deps_required+=( compat-libstdc++-33.i686 SDL.i686 bzip2 unzip )
#UT99
else
array_deps_required+=( SDL.i686 bzip2 )
fi
fi
fn_deps_email
fn_check_loop
fi

6
functions/command_dev_detect_deps.sh

@ -35,10 +35,12 @@ elif [ "${executable}" == "./ts3server_startscript.sh" ]; then
executable=ts3server_linux_amd64
fi
if [ -n "$(command -v eu-readelf)" ]; then
if [ "$(command -v eu-readelf)" ]; then
readelf=eu-readelf
else
elif [ "$(command -v readelf)" ];
readelf=readelf
else
echo "readelf/eu-readelf not installed"
fi
${readelf} -d ${executable} |grep NEEDED|awk '{ print $5 }'|sed 's/\[//g'|sed 's/\]//g' > "${rootdir}/.depdetect_readelf"

2
functions/command_install.sh

@ -9,7 +9,7 @@ function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
check.sh
install_header.sh
install_serverdir.sh
check_deps.sh
# Download and install
if [ "${gamename}" == "Unreal Tournament 2004" ]; then
install_dl_ut2k4.sh

7
functions/core_functions.sh

@ -2,7 +2,7 @@
# LGSM core_functions.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="060116"
lgsm_version="170116"
# 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.
@ -111,6 +111,11 @@ functionfile="${FUNCNAME}"
fn_runfunction
}
check_deps.sh(){
functionfile="${FUNCNAME}"
fn_runfunction
}
check_ip.sh(){
functionfile="${FUNCNAME}"
fn_runfunction

6
functions/fn_update_functions

@ -2,7 +2,7 @@
# LGSM update_functions.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="230116"
# Description: LEGACY FUNCTION Deletes the functions dir to allow re-downloading of functions from GitHub.
@ -14,9 +14,9 @@ rm -rfv "${rootdir}/functions/"*
exitcode=$?
if [ "${exitcode}" == "0" ]; then
fn_printok "Updating functions"
fn_scriptlog "Successfull! Updating functions"
fn_scriptlog "Success! Updating functions"
else
fn_printokfail "Updating functions"
fn_printfail "Updating functions"
fn_scriptlog "Failure! Updating functions"
fi
echo -ne "\n"

1
functions/update_check.sh

@ -188,7 +188,6 @@ sleep 1
# Checks currentbuild info is available, if fails a server restart will be forced to generate logs
if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
fn_printfail "Checking for update: teamspeak.com"
fn_scriptlog "Checking for update: teamspeak.com"
sleep 1
fn_printfailnl "Checking for update: teamspeak.com: No logs with server version found"
fn_scriptlog "Failure! Checking for update: teamspeak.com: No logs with server version found"

6
functions/update_functions.sh

@ -2,7 +2,7 @@
# LGSM update_functions.sh function
# Author: Daniel Gibbs
# Website: http://gameservermanagers.com
lgsm_version="271215"
lgsm_version="230116"
# Description: Deletes the functions dir to allow re-downloading of functions from GitHub.
@ -16,9 +16,9 @@ rm -rfv "${rootdir}/functions/"*
exitcode=$?
if [ "${exitcode}" == "0" ]; then
fn_printok "Updating functions"
fn_scriptlog "Successfull! Updating functions"
fn_scriptlog "Success! Updating functions"
else
fn_printokfail "Updating functions"
fn_printfail "Updating functions"
fn_scriptlog "Failure! Updating functions"
fi
echo -ne "\n"
Loading…
Cancel
Save