mirror of
https://github.com/GameServerManagers/LinuxGSM.git
synced 2025-01-09 04:27:35 +08:00
Further work completed.
Working on menus currently
This commit is contained in:
parent
6fa873ba58
commit
8d78b19fbc
186
lgsminstall.sh
186
lgsminstall.sh
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user