Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(dev): add new developer command for parsing distro details #4523

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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