From 25f0f7cd9186b48816efc87857570028c88a2d3f Mon Sep 17 00:00:00 2001 From: adrien Date: Thu, 27 Mar 2025 16:55:18 +0100 Subject: [PATCH] better shutdown and voice-vlan detection --- style.css | 111 +++++++++++++++++++++----------------- vlans.php | 157 ++++++++++++++++++++++++++++++++---------------------- 2 files changed, 154 insertions(+), 114 deletions(-) diff --git a/style.css b/style.css index c894531..49861a6 100644 --- a/style.css +++ b/style.css @@ -1,84 +1,95 @@ :root { - --k: 1353651.53435435; + --k: 1353651.53435435; } body { - text-align: center; + text-align: center; } main { - display: flex; - flex-flow: wrap; + display: flex; + flex-flow: wrap; } main > table { - margin: auto; + margin: auto; } td { - text-align: left + text-align: left; } .member { - border-spacing: 0; - margin: 0; - border: 4px solid #335; + border-spacing: 0; + margin: 0; + border: 4px solid #335; } .legend { - border-spacing: 0; + border-spacing: 0; } .member td, .legend td { - border: 2px inset; + border: 2px inset; } .interface { - position: relative; - text-align: center; - min-width: 2em; - height: 2em; - mix-blend-mode: darken; - padding: 2px; - print-color-adjust: exact; + position: relative; + text-align: center; + min-width: 2em; + height: 2em; + mix-blend-mode: darken; + padding: 2px; + print-color-adjust: exact; } .vlan { - background-color: hsl(calc(var(--k)*var(--pvid)) 100% 60%); + background-color: hsl(calc(var(--k) * var(--pvid)) 100% 60%); } .trunk { - font-weight: bold; - border: 4px solid !important; - border-image-slice: 1 !important; - border-image-source: linear-gradient(127deg, red, orange, yellow, green, blue, violet) !important; - padding: 0; - + font-weight: bold; + border: 4px solid !important; + border-image-slice: 1 !important; + border-image-source: linear-gradient( + 127deg, + red, + orange, + yellow, + green, + blue, + violet + ) !important; + padding: 0; } .hybrid { - background-image: linear-gradient(135deg, hsl(calc(var(--k)*var(--tagged)) 100% 60%) 50%, hsl(calc(var(--k)*var(--untagged)) 100% 60%) 50%); + background-image: linear-gradient( + 135deg, + hsl(calc(var(--k) * var(--tagged)) 100% 60%) 50%, + hsl(calc(var(--k) * var(--untagged)) 100% 60%) 50% + ); } -.shutdown { - background-color: lightgray !important; - background-image: none !important; - color: gray !important; +.shutdown:not([class*="loopback-detection action shutdown"]) { + background-color: lightgray !important; + background-image: none !important; + color: gray !important; } .poe::before { - content: "⚡"; - font-size: 0.7em; - position: absolute; - top: 0; - left: 0; + content: "⚡"; + font-size: 0.7em; + position: absolute; + top: 0; + left: 0; } -.voice-vlan::after { - content: "📞"; - font-size: 0.7em; - position: absolute; - bottom: 0; - left: 0; +.voice_vlan::after { + content: "📞"; + font-size: 0.7em; + position: absolute; + bottom: 0; + left: 0; } footer { - display: flex; - flex-flow: column; - align-items: center; + display: flex; + flex-flow: column; + align-items: center; } #colorSlider { - width: 33%; + width: 33%; } @media print { - #colorSliderLabel, - #colorSlider { - display: none; - } -} \ No newline at end of file + #colorSliderLabel, + #colorSlider { + display: none; + } +} diff --git a/vlans.php b/vlans.php index a0ddedd..5726197 100644 --- a/vlans.php +++ b/vlans.php @@ -11,81 +11,110 @@ $conf = file_get_contents($path); preg_match("/ sysname ([\w-]+)/", $conf, $sysname); preg_match("/ip address ([\d.]+)/", $conf, $address); preg_match_all("/(?<=\n)vlan (?P\d+)[\r\n]+(?: name (?P.+)[\r\n]+| description (?P.+)[\r\n]+| .*[\r\n]+)*/", $conf, $vlans, PREG_SET_ORDER); -preg_match_all("/(?<=\n)interface [\w-]+(?P\d+)\/0\/(?P\d+)[\r\n]+(?: port hybrid (?:pvid )?vlan (?:(?P\d+) tagged|(?P\d+)(?: \d+)* untagged)[\r\n]+| port (?:access |trunk |hybrid |pvid |vlan )*(?P\d+)[\r\n]+| .*[\r\n]+)*(?\d+)\/0\/(?P\d+)[\r\n]+(?: port hybrid (?:pvid )?vlan (?:(?P\d+) tagged|(?P\d+)(?: \d+)* untagged)[\r\n]+| port (?:access |trunk |hybrid |pvid |vlan )*(?P\d+)[\r\n]+| voice-vlan (?P\d+) enable[\r\n]+| .*[\r\n]+)*(?"); */ +echo (""); ?> - -<?=$sysname[1] ?? "Switch sans nom"?> - Tableau des VLANs - - - -
-

-
- -

-
-
- - - -${interface["port"]}\n"; - } -} -foreach ($stack as $member => $interfaces) { - echo "\n\n\n\n"; -} -?> - -

Interfaces

$member\n\n\n\n"; - foreach ($interfaces as $interface) display_interface($interface, 1); - echo "\n\n"; - foreach ($interfaces as $interface) display_interface($interface, 0); - echo "\n\n
\n
- - - - -"; - } -} -?> - - - - - - -

Légende

PVIDNomDescription
${vlan["pvid"]}$name$description
Trunk
Hybride (tagged/untagged)
Power on Ethernet
Voice-VLAN
Interface désactivée
-
-
- - -
+ + <?= $sysname[1] ?? "Switch sans nom" ?> - Tableau des VLANs + + + + +
+

+
+ +

+
+
+ + + + {$interface["port"]}\n"; + } + } + + foreach ($stack as $member => $interfaces) { + echo "\n\n\n\n"; + } + ?> + +
+

Interfaces

+
$member\n\n\n\n"; + foreach ($interfaces as $interface) display_interface($interface, 1); + echo "\n\n"; + foreach ($interfaces as $interface) display_interface($interface, 0); + echo "\n\n
\n
+ + + + + + + + + + + "; + } + } + ?> + + + + + + + + + + + + + + + + + + + + + +
+

Légende

+
PVIDNomDescription
{$vlan["pvid"]}$name$description
Trunk
Hybride (tagged/untagged)
Power on Ethernet
ToIP (voice-vlan)
Interface désactivée
+
+ + \ No newline at end of file