mirror of
https://github.com/GameServerManagers/LinuxGSM.git
synced 2025-01-08 12:07:37 +08:00
feat(dev): add new developer command for parsing distro details (#4523)
* feat(dev): add new developer command for parsing distro details * Updated details-check action to match new command name
This commit is contained in:
parent
181c84508d
commit
9b62bdeb66
2
.github/workflows/details-check.yml
vendored
2
.github/workflows/details-check.yml
vendored
@ -83,7 +83,7 @@ jobs:
|
||||
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server details
|
||||
|
||||
- name: Detect details
|
||||
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server detect-details
|
||||
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server parse-game-details
|
||||
|
||||
- name: Query Raw
|
||||
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server query-raw
|
||||
|
@ -1,98 +0,0 @@
|
||||
#!/bin/bash
|
||||
# LinuxGSM command_dev_debug.sh module
|
||||
# Author: Daniel Gibbs
|
||||
# Contributors: http://linuxgsm.com/contrib
|
||||
# Website: https://linuxgsm.com
|
||||
# Description: Dev only: Enables debugging log to be saved to dev-debug.log.
|
||||
|
||||
if [ -f "config" ]; then
|
||||
servercfgfullpath="config"
|
||||
fi
|
||||
if [ -f "clusterconfig" ]; then
|
||||
clustercfgfullpath="clusterconfig"
|
||||
fi
|
||||
|
||||
info_game.sh
|
||||
|
||||
carriagereturn=$(file -b "${servercfgfullpath}" | grep -q CRLF && echo "${red}CRLF${default}" || echo "${lightgreen}LF${default}")
|
||||
|
||||
echo -e ""
|
||||
echo -e "${bold}${lightgreen}Server Details${default}"
|
||||
fn_messages_separator
|
||||
|
||||
echo -e ""
|
||||
echo -e "Game: ${gamename}"
|
||||
echo -e "Config type: ${configtype}"
|
||||
echo -e "Config file: ${servercfgfullpath}"
|
||||
if [ -f "${clustercfgfullpath}" ]; then
|
||||
echo -e "Cluster config file: ${clustercfgfullpath}"
|
||||
fi
|
||||
echo -e "Carriage Return: ${carriagereturn}"
|
||||
|
||||
# Create an associative array of the server details.
|
||||
declare -A server_details=(
|
||||
['Admin Password']="${adminpassword}"
|
||||
['API Port']="${apiport}"
|
||||
['Cave']="${cave}"
|
||||
['Cluster']="${cluster}"
|
||||
['Config IP']="${configip}"
|
||||
['Default Map']="${defaultmap}"
|
||||
['Game Mode']="${gamemode}"
|
||||
['Game Type']="${gametype}"
|
||||
['HTTP Enabled']="${httpenabled}"
|
||||
['HTTP IP']="${httpip}"
|
||||
['HTTP Password']="${httppassword}"
|
||||
['HTTP Port']="${httpport}"
|
||||
['HTTP User']="${httpuser}"
|
||||
['Internet IP']="${publicip}"
|
||||
['LAN Port']="${lanport}"
|
||||
['Master Port']="${masterport}"
|
||||
['Master']="${master}"
|
||||
['Maxplayers']="${maxplayers}"
|
||||
['OldQueryPortNumber']="${oldqueryportnumber}"
|
||||
['Port']="${port}"
|
||||
['Query Port']="${queryport}"
|
||||
['RCON Enabled']="${rconenabled}"
|
||||
['RCON Password']="${rconpassword}"
|
||||
['RCON Port']="${rconport}"
|
||||
['Reserved Slots']="${reservedslots}"
|
||||
['Server IP']="${ip}"
|
||||
['Server Password']="${serverpassword}"
|
||||
['Servername']="${servername}"
|
||||
['Shard']="${shard}"
|
||||
['Sharding']="${sharding}"
|
||||
['Steam Auth Port']="${steamauthport}"
|
||||
['Telnet Enabled']="${telnetenabled}"
|
||||
['Telnet IP']="${telnetip}"
|
||||
['Telnet Password']="${telnetpassword}"
|
||||
['Telnet Port']="${telnetport}"
|
||||
['Tickrate']="${tickrate}"
|
||||
['World Name']="${worldname}"
|
||||
['World Type']="${worldtype}"
|
||||
)
|
||||
|
||||
# Initialize a variable to keep track of missing server details.
|
||||
missing_details=""
|
||||
|
||||
# Loop through the server details and output them.
|
||||
echo -e ""
|
||||
echo -e "${bold}${lightgreen}Available Server Details${default}"
|
||||
fn_messages_separator
|
||||
for key in "${!server_details[@]}"; do
|
||||
value=${server_details[$key]}
|
||||
if [ -z "$value" ]; then
|
||||
missing_details+="\n${key}"
|
||||
else
|
||||
echo -e "$key: $value "
|
||||
fi
|
||||
done
|
||||
|
||||
# Output the missing server details if there are any.
|
||||
if [ -n "$missing_details" ]; then
|
||||
echo -e ""
|
||||
echo -e "${lightgreen}Missing Server Details${default}"
|
||||
fn_messages_separator
|
||||
echo -e "${missing_details}"
|
||||
fi
|
||||
|
||||
core_exit.sh
|
114
lgsm/modules/command_dev_parse_distro_details.sh
Normal file
114
lgsm/modules/command_dev_parse_distro_details.sh
Normal file
@ -0,0 +1,114 @@
|
||||
#!/bin/bash
|
||||
# LinuxGSM command_dev_parse_distro_details.sh module
|
||||
# Author: Daniel Gibbs
|
||||
# Contributors: http://linuxgsm.com/contrib
|
||||
# Website: https://linuxgsm.com
|
||||
# Description: Display parsed distro details.
|
||||
|
||||
check_ip.sh
|
||||
check_status.sh
|
||||
info_distro.sh
|
||||
|
||||
# Create an associative array of the server details.
|
||||
declare -A server_details=(
|
||||
['.NET Version']="${dotnetversion}"
|
||||
['Arch']="${arch}"
|
||||
['Backup Count']="${backupcount}"
|
||||
['Backup Last Date']="${lastbackupdate}"
|
||||
['Backup Last Days Ago']="${lastbackupdaysago}"
|
||||
['Backup Last Size']="${lastbackupsize}"
|
||||
['Backup Last']="${lastbackup}"
|
||||
['CPU Average Load']="${load}"
|
||||
['CPU Cores']="${cpucores}"
|
||||
['CPU Frequency']="${cpufreqency}"
|
||||
['CPU Model']="${cpumodel}"
|
||||
['Distro Codename']="${distrocodename}"
|
||||
['Distro ID Like']="${distroidlike}"
|
||||
['Distro ID']="${distroid}"
|
||||
['Distro Kernel']="${kernel}"
|
||||
['Distro Name']="${distroname}"
|
||||
['Distro Version CSV']="${distroversioncsv}"
|
||||
['Distro Version RH']="${distroversionrh}"
|
||||
['Distro Version']="${distroversion}"
|
||||
['Distro-Info Support']="${distrosupport}"
|
||||
['File System']="${filesystem}"
|
||||
['Game Server PID']="${gameserverpid}"
|
||||
['Gameserver CPU Used MHz']="${cpuusedmhz}"
|
||||
['Gameserver CPU Used']="${cpuused}"
|
||||
['Gameserver Mem Used MB']="${memusedmb}"
|
||||
['Gameserver Mem Used Pct']="${memusedpct}"
|
||||
['GLIBC Version']="${glibcversion}"
|
||||
['GLIBC']="${glibc}"
|
||||
['HLDS Linux PID']="${hldslinuxpid}"
|
||||
['Java Version']="${javaversion}"
|
||||
['Mono Version']="${monoversion}"
|
||||
['Network Interface']="${netint}"
|
||||
['Network Link Speed']="${netlink}"
|
||||
['Old Free']="${oldfree}"
|
||||
['Phys Mem Available']="${physmemavailable}"
|
||||
['Phys Mem Buffers KB']="${physmembufferskb}"
|
||||
['Phys Mem Cached']="${physmemcached}"
|
||||
['Phys Mem Free']="${physmemfree}"
|
||||
['Phys Mem Reclaimable KB']="${physmemreclaimablekb}"
|
||||
['Phys Mem Total GB']="${physmemtotalgb}"
|
||||
['Phys Mem Used']="${physmemused}"
|
||||
['Size Backup Dir']="${backupdirdu}"
|
||||
['Size Root Dir ']="${rootdirdu}"
|
||||
['Size Root Dir Excl. Backup']="${rootdirduexbackup}"
|
||||
['Size Serverfiles']="${serverfilesdu}"
|
||||
['SRCDS Linux PID']="${srcdslinuxpid}"
|
||||
['Storage Available']="${availspace}"
|
||||
['Storage Total']="${totalspace}"
|
||||
['Storage Used']="${usedspace}"
|
||||
['Swap Free']="${swapfree}"
|
||||
['Swap Total']="${swaptotal}"
|
||||
['Swap Used']="${swapused}"
|
||||
['Tmux Version']="${tmuxversion}"
|
||||
['Uptime Days']="${days}"
|
||||
['Uptime Hours']="${hours}"
|
||||
['Uptime Minutes']="${minutes}"
|
||||
['Uptime Total Seconds']="${uptime}"
|
||||
['Virtual Environment']="${virtualenvironment}"
|
||||
# ['Distro Info Array']="${distro_info_array}"
|
||||
# ['Distros Unsupported Array']="${distrosunsupported_array}"
|
||||
# ['Distros Unsupported']="${distrosunsupported}"
|
||||
# ['Human Readable']="${humanreadable}"
|
||||
# ['Phys Mem Actual Free KB']="${physmemactualfreekb}"
|
||||
# ['Phys Mem Cached KB']="${physmemcachedkb}"
|
||||
# ['Phys Mem Free KB']="${physmemfreekb}"
|
||||
# ['Phys Mem Total KB']="${physmemtotalkb}"
|
||||
# ['Phys Mem Total MB']="${physmemtotalmb}"
|
||||
# ['SS Info']="${ssinfo}"
|
||||
)
|
||||
|
||||
# Initialize variables to keep track of available and missing distro details.
|
||||
available_details=""
|
||||
missing_details=""
|
||||
|
||||
# Loop through the distro details and store them.
|
||||
for key in "${!server_details[@]}"; do
|
||||
value=${server_details[$key]}
|
||||
if [ -n "$value" ]; then
|
||||
available_details+="${lightblue}${key}: ${default}${value}\n"
|
||||
else
|
||||
missing_details+="${key}\n"
|
||||
fi
|
||||
done
|
||||
|
||||
# Sort and output the available distro details.
|
||||
if [ -n "$available_details" ]; then
|
||||
echo -e ""
|
||||
echo -e "${bold}${lightgreen}Available Distro Details${default}"
|
||||
fn_messages_separator
|
||||
echo -e "${available_details}" | sort
|
||||
fi
|
||||
|
||||
# Sort and output the missing distro details.
|
||||
if [ -n "$missing_details" ]; then
|
||||
echo -e ""
|
||||
echo -e "${lightgreen}Missing or unsupported Distro Details${default}"
|
||||
fn_messages_separator
|
||||
echo -e "${missing_details}" | sort
|
||||
fi
|
||||
|
||||
core_exit.sh
|
160
lgsm/modules/command_dev_parse_game_details.sh
Normal file
160
lgsm/modules/command_dev_parse_game_details.sh
Normal file
@ -0,0 +1,160 @@
|
||||
#!/bin/bash
|
||||
# LinuxGSM command_dev_parse_game_details.sh module
|
||||
# Author: Daniel Gibbs
|
||||
# Contributors: http://linuxgsm.com/contrib
|
||||
# Website: https://linuxgsm.com
|
||||
# Description: Display parsed gameserver details.
|
||||
|
||||
if [ -f "config" ]; then
|
||||
servercfgfullpath="config"
|
||||
fi
|
||||
if [ -f "clusterconfig" ]; then
|
||||
clustercfgfullpath="clusterconfig"
|
||||
fi
|
||||
|
||||
info_game.sh
|
||||
|
||||
carriagereturn=$(file -b "${servercfgfullpath}" | grep -q CRLF && echo "${red}CRLF${default}" || echo "${lightgreen}LF${default}")
|
||||
|
||||
echo -e ""
|
||||
echo -e "${bold}${lightgreen}Server Details${default}"
|
||||
fn_messages_separator
|
||||
|
||||
echo -e ""
|
||||
echo -e "${lightblue}Game: ${default}${gamename}"
|
||||
echo -e "${lightblue}Config type: ${default}${configtype}"
|
||||
echo -e "${lightblue}Config file: ${default}${servercfgfullpath}"
|
||||
if [ -f "${clustercfgfullpath}" ]; then
|
||||
echo -e "${lightblue}Cluster config file: ${default}${clustercfgfullpath}"
|
||||
fi
|
||||
echo -e "${lightblue}Carriage Return: ${default}${carriagereturn}"
|
||||
|
||||
# Create an associative array of the server details.
|
||||
declare -A server_details=(
|
||||
['Admin Password']="${adminpassword}"
|
||||
['Alert IP']="${alertip}"
|
||||
['API Port']="${apiport}"
|
||||
['App Port']="${appport}"
|
||||
['ASE']="${ase}"
|
||||
['Auth Token']="${authtoken}"
|
||||
['BattleEye Port']="${battleeyeport}"
|
||||
['Beacon Port']="${beaconport}"
|
||||
['Cave']="${cave}"
|
||||
['Client Port']="${clientport}"
|
||||
['Cluster']="${cluster}"
|
||||
['Config IP']="${configip}"
|
||||
['Creative Mode']="${creativemode}"
|
||||
['Custom Level URL']="${customlevelurl}"
|
||||
['DB Plugin']="${dbplugin}"
|
||||
['Default Map']="${defaultmap}"
|
||||
['Default Scenario']="${defaultscenario}"
|
||||
['Display Master Server']="${displaymasterserver}"
|
||||
['Epic Settings']="${epicsettings}"
|
||||
['File Port']="${fileport}"
|
||||
['Files Port']="${filesport}"
|
||||
['Game Mode']="${gamemode}"
|
||||
['Game Type']="${gametype}"
|
||||
['Home Kingdom']="${homekingdom}"
|
||||
['Home Server']="${homeserver}"
|
||||
['HTTP Enabled']="${httpenabled}"
|
||||
['HTTP IP']="${httpip}"
|
||||
['HTTP Password']="${httppassword}"
|
||||
['HTTP Port']="${httpport}"
|
||||
['HTTP User']="${httpuser}"
|
||||
['Internet IP']="${publicip}"
|
||||
['LAN Port']="${lanport}"
|
||||
['Login Server']="${loginserver}"
|
||||
['Master Port']="${masterport}"
|
||||
['Master Server']="${masterserver}"
|
||||
['Master']="${master}"
|
||||
['Max Players']="${maxplayers}"
|
||||
['Mod Server Port']="${modserverport}"
|
||||
['OldQueryPortNumber']="${oldqueryportnumber}"
|
||||
['Password']="${password}"
|
||||
['Port 401']="${port401}"
|
||||
['Port IPv6']="${portipv6}"
|
||||
['Port']="${port}"
|
||||
['Query Enabled']="${queryenabled}"
|
||||
['Query HTTP Port']="${queryhttpport}"
|
||||
['Query HTTPS Port']="${queryhttpsport}"
|
||||
['Query Mode']="${querymode}"
|
||||
['Query Port GS']="${queryportgs}"
|
||||
['Query Port']="${queryport}"
|
||||
['Query SSH Port']="${querysshport}"
|
||||
['Queue Enabled']="${queueenabled}"
|
||||
['Queue Port']="${queueport}"
|
||||
['Random Map']="${randommap}"
|
||||
['Raw Port']="${rawport}"
|
||||
['RC Password']="${rcpassword}"
|
||||
['RCON Enabled']="${rconenabled}"
|
||||
['RCON Password']="${rconpassword}"
|
||||
['RCON Port']="${rconport}"
|
||||
['RCON Web']="${rconweb}"
|
||||
['Reserved Slots']="${reservedslots}"
|
||||
['RMI Port']="${rmiport}"
|
||||
['RMI Reg Port']="${rmiregport}"
|
||||
['Salt']="${salt}"
|
||||
['Save Game Interval']="${savegameinterval}"
|
||||
['Save Interval']="${saveinterval}"
|
||||
['Secondary Port']="${port3}"
|
||||
['Seed']="${seed}"
|
||||
['Server Description']="${serverdescription}"
|
||||
['Server IP']="${ip}"
|
||||
['Server Level']="${serverlevel}"
|
||||
['Server Name']="${servername}"
|
||||
['Server Password Enabled']="${serverpasswordenabled}"
|
||||
['Server Password']="${serverpassword}"
|
||||
['Server Version']="${serverversion}"
|
||||
['Shard']="${shard}"
|
||||
['Sharding']="${sharding}"
|
||||
['Shutdown Port']="${shutdownport}"
|
||||
['Stats Port']="${statsport}"
|
||||
['Steam Auth Port']="${steamauthport}"
|
||||
['Steam Port']="${steamport}"
|
||||
['Steamworks Port']="${steamworksport}"
|
||||
['Telnet Enabled']="${telnetenabled}"
|
||||
['Telnet IP']="${telnetip}"
|
||||
['Telnet Password']="${telnetpass}"
|
||||
['Telnet Password']="${telnetpassword}"
|
||||
['Telnet Port']="${telnetport}"
|
||||
['Tickrate']="${tickrate}"
|
||||
['Unknown Port']="${unknownport}"
|
||||
['Version Count']="${versioncount}"
|
||||
['Voice Port']="${voiceport}"
|
||||
['Voice Unused Port']="${voiceunusedport}"
|
||||
['World Name']="${worldname}"
|
||||
['World Size']="${worldsize}"
|
||||
['World Type']="${worldtype}"
|
||||
)
|
||||
|
||||
# Initialize variables to keep track of available and missing server details.
|
||||
available_details=""
|
||||
missing_details=""
|
||||
|
||||
# Loop through the server details and store them.
|
||||
for key in "${!server_details[@]}"; do
|
||||
value=${server_details[$key]}
|
||||
if [ -n "$value" ]; then
|
||||
available_details+="${lightblue}${key}: ${default}${value}\n"
|
||||
else
|
||||
missing_details+="${key}\n"
|
||||
fi
|
||||
done
|
||||
|
||||
# Sort and output the available distro details.
|
||||
if [ -n "$available_details" ]; then
|
||||
echo -e ""
|
||||
echo -e "${bold}${lightgreen}Available Distro Details${default}"
|
||||
fn_messages_separator
|
||||
echo -e "${available_details}" | sort
|
||||
fi
|
||||
|
||||
# Output the missing server details if there are any.
|
||||
if [ -n "$missing_details" ]; then
|
||||
echo -e ""
|
||||
echo -e "${lightgreen}Missing or unsupported Server Details${default}"
|
||||
fn_messages_separator
|
||||
echo -e "${missing_details}" | sort
|
||||
fi
|
||||
|
||||
core_exit.sh
|
@ -50,7 +50,8 @@ cmd_install_squad_license=("li;license" "install_squad_license.sh" "Add your Squ
|
||||
cmd_fastdl=("fd;fastdl" "command_fastdl.sh" "Build a FastDL directory.")
|
||||
# Dev commands.
|
||||
cmd_dev_debug=("dev;developer" "command_dev_debug.sh" "Enable developer Mode.")
|
||||
cmd_dev_details=("ddt;detect-details" "command_dev_details.sh" "Display parsed details.")
|
||||
cmd_dev_parse_game_details=("pgd;parse-game-details" "command_dev_parse_game_details.sh" "Display parsed gameserver details.")
|
||||
cmd_dev_parse_distro_details=("pdd;parse-distro-details" "command_dev_parse_distro_details.sh" "Display parsed distro details.")
|
||||
cmd_dev_detect_deps=("dd;detect-deps" "command_dev_detect_deps.sh" "Detect required dependencies.")
|
||||
cmd_dev_detect_glibc=("dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect required glibc.")
|
||||
cmd_dev_detect_ldd=("dl;detect-ldd" "command_dev_detect_ldd.sh" "Detect required dynamic dependencies.")
|
||||
@ -146,7 +147,7 @@ currentopt+=("${cmd_install[@]}" "${cmd_auto_install[@]}")
|
||||
## Developer commands.
|
||||
currentopt+=("${cmd_dev_debug[@]}")
|
||||
if [ -f ".dev-debug" ]; then
|
||||
currentopt+=("${cmd_dev_details[@]}" "${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" "${cmd_dev_query_raw[@]}" "${cmd_dev_clear_modules[@]}")
|
||||
currentopt+=("${cmd_dev_parse_game_details[@]}" "${cmd_dev_parse_distro_details[@]}" "${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" "${cmd_dev_query_raw[@]}" "${cmd_dev_clear_modules[@]}")
|
||||
fi
|
||||
|
||||
## Sponsor.
|
||||
|
@ -299,7 +299,12 @@ command_dev_debug.sh() {
|
||||
fn_fetch_module
|
||||
}
|
||||
|
||||
command_dev_details.sh() {
|
||||
command_dev_parse_game_details.sh() {
|
||||
modulefile="${FUNCNAME[0]}"
|
||||
fn_fetch_module
|
||||
}
|
||||
|
||||
command_dev_parse_distro_details.sh() {
|
||||
modulefile="${FUNCNAME[0]}"
|
||||
fn_fetch_module
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user