Просмотр исходного кода

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
MicLieg 2 лет назад
Родитель
Сommit
9b62bdeb66

+ 1 - 1
.github/workflows/details-check.yml

@@ -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

+ 0 - 98
lgsm/modules/command_dev_details.sh

@@ -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 - 0
lgsm/modules/command_dev_parse_distro_details.sh

@@ -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 - 0
lgsm/modules/command_dev_parse_game_details.sh

@@ -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

+ 3 - 2
lgsm/modules/core_getopt.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.

+ 6 - 1
lgsm/modules/core_modules.sh

@@ -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
 }