Collect Linux distribution and version telemetry across forwarders and web UI
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 2m7s
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 2m7s
This commit is contained in:
+33
-11
@@ -469,6 +469,9 @@ class WebUIRenderer:
|
||||
|
||||
# OS classification badge & display name
|
||||
ost_lower = ost.lower()
|
||||
distro_val = str(info.get("distro") or "").strip()
|
||||
distro_ver_val = str(info.get("distro_version") or "").strip()
|
||||
|
||||
if "server" in ost_lower or is_srv:
|
||||
if "windows" in ost_lower or "win" in ost_lower:
|
||||
filter_cat = "windows_server"
|
||||
@@ -478,9 +481,11 @@ class WebUIRenderer:
|
||||
os_display_name = html.escape(os_name or "Windows Server")
|
||||
else:
|
||||
filter_cat = "linux"
|
||||
os_badge_html = f'<span class="badge badge-os" title="{html.escape(os_name or "Linux Node")}">🐧 LINUX</span>'
|
||||
os_badge_full = '<span class="badge badge-os" style="font-size:10px;">🐧 LINUX SERVER</span>'
|
||||
os_display_name = html.escape(os_name or "Linux Node")
|
||||
lbl = distro_val.upper() if distro_val else "LINUX"
|
||||
disp_name = os_name if os_name else (f"{distro_val} {distro_ver_val}".strip() or "Linux Server")
|
||||
os_badge_html = f'<span class="badge badge-os" title="{html.escape(disp_name)}">🐧 {html.escape(lbl)}</span>'
|
||||
os_badge_full = f'<span class="badge badge-os" style="font-size:10px;">🐧 {html.escape(lbl)} SERVER</span>'
|
||||
os_display_name = html.escape(disp_name)
|
||||
elif "windows" in ost_lower or "win" in ost_lower:
|
||||
filter_cat = "windows_client"
|
||||
os_badge_html = f'<span class="badge badge-os" title="{html.escape(os_name or "Windows Client")}">🖥️ WINDOWS</span>'
|
||||
@@ -488,19 +493,36 @@ class WebUIRenderer:
|
||||
os_display_name = html.escape(os_name or "Windows Workstation")
|
||||
elif "linux" in ost_lower:
|
||||
filter_cat = "linux"
|
||||
os_badge_html = f'<span class="badge badge-os" title="{html.escape(os_name or "Linux Node")}">🐧 LINUX</span>'
|
||||
os_badge_full = '<span class="badge badge-os" style="font-size:10px;">🐧 LINUX</span>'
|
||||
os_display_name = html.escape(os_name or "Linux Node")
|
||||
lbl = distro_val.upper() if distro_val else "LINUX"
|
||||
disp_name = os_name if os_name else (f"{distro_val} {distro_ver_val}".strip() or "Linux Node")
|
||||
os_badge_html = f'<span class="badge badge-os" title="{html.escape(disp_name)}">🐧 {html.escape(lbl)}</span>'
|
||||
os_badge_full = f'<span class="badge badge-os" style="font-size:10px;">🐧 {html.escape(lbl)}</span>'
|
||||
os_display_name = html.escape(disp_name)
|
||||
else:
|
||||
filter_cat = "other"
|
||||
os_badge_html = f'<span class="badge badge-os">{esc_ost.upper()}</span>'
|
||||
os_badge_full = f'<span class="badge badge-os" style="font-size:10px;">{html.escape(ost.upper())}</span>'
|
||||
os_display_name = html.escape(os_name or ost)
|
||||
|
||||
edition_str = html.escape(str(info.get("edition") or ""))
|
||||
build_str = html.escape(str(info.get("build") or ""))
|
||||
arch_str = html.escape(str(info.get("architecture") or ""))
|
||||
specs_sub = f"{edition_str} • Build {build_str} • {arch_str}".strip(" •") if (edition_str or build_str or arch_str) else ""
|
||||
edition_str = html.escape(str(info.get("edition") or "").strip())
|
||||
build_str = html.escape(str(info.get("build") or "").strip())
|
||||
arch_str = html.escape(str(info.get("architecture") or "").strip())
|
||||
distro_ver_str = html.escape(distro_ver_val)
|
||||
codename_str = html.escape(str(info.get("distro_codename") or "").strip())
|
||||
|
||||
if "linux" in ost_lower:
|
||||
sub_parts = []
|
||||
if distro_ver_str and distro_ver_str not in os_display_name:
|
||||
sub_parts.append(f"v{distro_ver_str}")
|
||||
if codename_str:
|
||||
sub_parts.append(f"({codename_str})")
|
||||
if build_str:
|
||||
sub_parts.append(f"Kernel {build_str}")
|
||||
if arch_str:
|
||||
sub_parts.append(arch_str)
|
||||
specs_sub = " • ".join(sub_parts)
|
||||
else:
|
||||
specs_sub = f"{edition_str} • Build {build_str} • {arch_str}".strip(" •") if (edition_str or build_str or arch_str) else ""
|
||||
|
||||
# Roles badges
|
||||
role_badges = []
|
||||
@@ -602,7 +624,7 @@ class WebUIRenderer:
|
||||
|
||||
# 2. Server Roles Row (Tab 2)
|
||||
server_roles_rows.append(f"""
|
||||
<tr class="node-row" data-category="{filter_cat}" data-search="{esc_host.lower()} {esc_cid.lower()} {os_display_name.lower()} {' '.join(str(x).lower() for x in roles)} {ip_str.lower()}">
|
||||
<tr class="node-row" data-category="{filter_cat}" data-search="{esc_host.lower()} {esc_cid.lower()} {os_display_name.lower()} {html.escape(distro_val).lower()} {html.escape(distro_ver_val).lower()} {' '.join(str(x).lower() for x in roles)} {ip_str.lower()}">
|
||||
<td><span class="badge {badge_cls}">{esc_st.upper()}</span></td>
|
||||
<td>
|
||||
<div style="font-weight:700; color:#fff; font-size:13px;">{esc_host}{host_tag}</div>
|
||||
|
||||
Reference in New Issue
Block a user