Skip to content

Commit

Permalink
feat(dev): add new developer command for parsing distro details (#4523)
Browse files Browse the repository at this point in the history
* feat(dev): add new developer command for parsing distro details

* Updated details-check action to match new command name
  • Loading branch information
MicLieg authored Mar 9, 2024
1 parent 181c845 commit 9b62bde
Show file tree
Hide file tree
Showing 6 changed files with 284 additions and 102 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/details-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
98 changes: 0 additions & 98 deletions lgsm/modules/command_dev_details.sh

This file was deleted.

114 changes: 114 additions & 0 deletions lgsm/modules/command_dev_parse_distro_details.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 160 additions & 0 deletions lgsm/modules/command_dev_parse_game_details.sh
Original file line number Diff line number Diff line change
@@ -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
Loading

0 comments on commit 9b62bde

Please sign in to comment.