Further work completed.

Working on menus currently
This commit is contained in:
Daniel Gibbs 2017-04-10 22:09:21 +01:00
parent 6fa873ba58
commit 8d78b19fbc

View File

@ -17,12 +17,16 @@ fi
version="170305" version="170305"
rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))" rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))" selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
lgsmdir="${rootdir}/lgsm"
tmpdir="${lgsmdir}/tmp"
servicename="${selfname}" servicename="${selfname}"
shortname="core" shortname="core"
shortname="core" servername="core"
shortname="core" gamename="core"
lockselfname=".${servicename}.lock"
lgsmdir="${rootdir}/lgsm"
functionsdir="${lgsmdir}/functions"
libdir="${lgsmdir}/lib"
tmpdir="${lgsmdir}/tmp"
filesdir="${rootdir}/serverfiles"
configdir="${lgsmdir}/config" configdir="${lgsmdir}/config"
gameconfigdir="${configdir}/${servername}" gameconfigdir="${configdir}/${servername}"
@ -33,55 +37,141 @@ githubuser="GameServerManagers"
githubrepo="LinuxGSM" githubrepo="LinuxGSM"
githubbranch="feature/config" githubbranch="feature/config"
# Prevent from running this script as root.
if [ "$(whoami)" = "root" ]; then fn_print_center() {
if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/exit 1" ]; then columns="$(tput cols)"
echo "[ FAIL ] Do NOT run this script as root!" line="$@"
exit 1 printf "%*s\n" $(( (${#line} + columns) / 2)) "$line"
else }
core_functions.sh # Print horizontal line
check_root.sh fn_print_horizontal(){
char="${1:-=}"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "${char}"
}
# Display simple Bash menu
fn_menu_bash() {
local resultvar=$1
title=$2
caption=$3
options=$4
fn_print_horizontal
fn_print_center $title
fn_print_center $caption
fn_print_horizontal
menu_options=()
while read -r line || [[ -n "$line" ]]; do
var=$(echo $line | awk -F "," '{print $2 " - " $3}')
menu_options+=( "${var}" )
done < $options
menu_options+=( "Cancel" )
select option in "${menu_options[@]}"; do
if [ -n "${option}" ] && [ "${option}" != "Cancel" ]; then
eval "$resultvar=\"${option/%\ */}\""
fi
break
done
}
fn_menu() {
local resultvar=$1
local selection=""
title=$2
caption=$3
options=$4
# If this is a list of options as a string, dump it to a file so we can process it
if [ ! -e "${options}" ]; then
echo -ne "${options}\n" > "${cachedir}/menu.options"
options="${cachedir}/menu.options"
fi fi
fi
# Get menu command
# for menucmd in whiptail dialog bash; do
# if [ -x $(which $menucmd) ]; then
# menucmd=$(which $menucmd)
# break
# fi
# done
case "$(basename $menucmd)" in
whiptail|dialog)
fn_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30
;;
*)
fn_menu_bash selection "${title}" "${caption}" "${options}"
;;
esac
eval "$resultvar=\"${selection}\""
echo "$resultvar"
}
fn_serverlist(){
IFS=","
if [ -f "lgsm/data/serverlist.csv" ]; then
serverlist="lgsm/data/serverlist.csv"
server_info_array=($(awk '{ print $2 }' "${serverlist}" | grep "${userinput}" ))
else
serverlist="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/serverlist.csv"
server_info_array=($(awk '{ print $2 }' <(curl -s "${serverlist}") | grep "${userinput}"))
fi
shortname="${server_info_array[0]}"
servername="${server_info_array[1]}"
gamename="${server_info_array[2]}"
echo "$server_info_array"
echo "shortname: $shortname"
echo "servername: $servername"
echo "gamename: $gamename"
}
fn_install_getopt(){
userinput="empty"
echo "Usage: $0 [option]"
echo -e ""
echo "Installer - Linux Game Server Manager - Version ${version}"
echo "https://gameservermanagers.com"
echo -e ""
echo -e "Commands"
echo -e "install |Select server to install."
echo -e "servername |e.g $0 csgoserver. Enter the required servername will install it."
echo -e "list |List all servers available for install."
exit
}
# LinuxGSM installer # LinuxGSM installer
if [ "${shortname}" == "core" ]; then if [ "${shortname}" == "core" ]; then
userinput=$1 userinput=$1
if [ -z "${userinput}" ]; then if [ -z "${userinput}" ]; then
userinput="empty" fn_install_getopt
fi
serverslist=$(grep "${userinput}" <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/serverlist.csv")|awk -F "," '{print $2}')
echo "USERINPUT: $userinput"
echo "SERVERLIST: $serverslist"
if [ "${userinput}" == "${serverslist}" ]; then
echo "installing"
shortname=$(grep ${userinput} <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/serverlist.csv")|awk -F "," '{print $1}')
servername=$(grep ${userinput} <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/serverlist.csv")|awk -F "," '{print $2}')
gamename=$(grep ${userinput} <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/serverlist.csv")|awk -F "," '{print $3}')
if [ -e "${servername}" ]; then
i=2
while [ -e "$servername-$i" ] ; do
let i++
done
servername="${servername}-$i"
fi
cp "${selfname}" "${servername}"
sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${servername}"
sed -i -e "s/servername=\"core\"/servername=\"${servername}\"/g" "${servername}"
sed -i -e "s/gamename=\"core\"/gamename=\"${gamename}\"/g" "${gamename}"
exit
elif [ "${userinput}" == "list" ]; then elif [ "${userinput}" == "list" ]; then
fn_serverlist
{ {
awk -F "," '{print $2 "\t" $3}' <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/data/serverlist.csv") if [ -f "lgsm/data/serverlist.csv" ]; then
} | column -s $'\t' -t awk -F "," '{print $2 "\t" $3}' "${serverlist}"
else
awk -F "," '{print $2 "\t" $3}' <(curl -s "${serverlist}")
fi
} | column -s $'\t' -t | more
exit exit
elif [ "${userinput}" == "install" ]; then
fn_menu result "Linux Game Server Manager" "Select game to install" "lgsm/data/serverlist.csv"
else else
echo "Usage: ./${selfname} list" fn_serverlist
echo "For a complete list of available servers" if [ "${userinput}" == "${server_info_array[1]}" ]; then
echo ""
echo "Usage: ./${selfname} [servername]" if [ -e "${servername}" ]; then
echo "To install a server" i=2
exit while [ -e "$servername-$i" ] ; do
let i++
done
servername="${servername}-$i"
fi
cp "${selfname}" "${servername}"
sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${servername}"
sed -i -e "s/servername=\"core\"/servername=\"${servername}\"/g" "${servername}"
sed -i -e "s/gamename=\"core\"/gamename=\"${gamename}\"/g" "${servername}"
exit
else
fn_install_getopt
fi
fi fi
fi fi
@ -217,6 +307,16 @@ functionfile="${FUNCNAME}"
fn_boostrap_fetch_function fn_boostrap_fetch_function
} }
# Prevent from running this script as root.
if [ "$(whoami)" = "root" ]; then
if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]||[ ! -f "${functionsdir}/exit 1" ]; then
echo "[ FAIL ] Do NOT run this script as root!"
exit 1
else
core_functions.sh
check_root.sh
fi
fi
core_dl.sh core_dl.sh
core_functions.sh core_functions.sh