This commit is contained in:
Adrien MALINGREY 2023-07-24 11:46:42 +02:00
parent 13e8586c9f
commit 481f662d8d
2 changed files with 23 additions and 17 deletions

View File

@ -11,6 +11,9 @@ main {
main > table { main > table {
margin: auto; margin: auto;
} }
td {
text-align: left
}
.member { .member {
border-spacing: 0; border-spacing: 0;
margin: 0; margin: 0;
@ -23,7 +26,7 @@ main > table {
.vlans td { .vlans td {
border: 2px inset; border: 2px inset;
} }
.number { .interface {
text-align: center; text-align: center;
min-width: 2em; min-width: 2em;
height: 2em; height: 2em;
@ -50,6 +53,13 @@ main > table {
background-color: lightgray; background-color: lightgray;
color: gray; color: gray;
} }
td { .poe {
text-align: left position: relative;
}
.poe::after {
content: "⚡";
font-size: 0.7em;
position: absolute;
top: 0;
left: 0;
} }

View File

@ -11,7 +11,7 @@ $conf = file_get_contents($path);
preg_match("/ sysname ([\w-]+)/", $conf, $sysname); preg_match("/ sysname ([\w-]+)/", $conf, $sysname);
preg_match("/ip address ([\d.]+)/", $conf, $address); preg_match("/ip address ([\d.]+)/", $conf, $address);
preg_match_all("/(?<=\n)vlan (?P<pvid>\d+)[\r\n]+(?: name (?P<name>.+)[\r\n]+| description (?P<description>.+)[\r\n]+| .*[\r\n]+)*/", $conf, $vlans, PREG_SET_ORDER); preg_match_all("/(?<=\n)vlan (?P<pvid>\d+)[\r\n]+(?: name (?P<name>.+)[\r\n]+| description (?P<description>.+)[\r\n]+| .*[\r\n]+)*/", $conf, $vlans, PREG_SET_ORDER);
preg_match_all("/(?<=\n)interface [\w-]+(?P<member>\d+)\/0\/(?P<port>\d+)[\r\n]+(?: port hybrid vlan (?P<tagged>\d+) tagged[\r\n]+| port hybrid vlan (?P<untagged>\d+)(?: \d+)* untagged[\r\n]+| port (?P<linktype>access|trunk pvid|hybrid pvid) vlan (?P<pvid>\d+)[\r\n]+| (?P<shutdown>shutdown)[\r\n]+| .*[\r\n]+)*/", $conf, $interfaces, PREG_SET_ORDER); preg_match_all("/(?<=\n)interface [\w-]+(?P<member>\d+)\/0\/(?P<port>\d+)[\r\n]+(?: port hybrid vlan (?P<tagged>\d+) tagged[\r\n]+| port hybrid vlan (?P<untagged>\d+)(?: \d+)* untagged[\r\n]+| port (?P<linktype>access|trunk pvid|hybrid pvid) vlan (?P<pvid>\d+)[\r\n]+| (?P<poe>poe) enable[\r\n]+| (?P<shutdown>shutdown)[\r\n]+| .*[\r\n]+)*/", $conf, $interfaces, PREG_SET_ORDER);
$stack = array(); $stack = array();
foreach ($interfaces as $interface) { foreach ($interfaces as $interface) {
if (!isset($stack[$interface["member"]])) { if (!isset($stack[$interface["member"]])) {
@ -38,22 +38,17 @@ foreach ($interfaces as $interface) {
<caption><h2>Interfaces</h2></caption> <caption><h2>Interfaces</h2></caption>
<tbody> <tbody>
<?php <?php
function display_port($interface, $odd) { function display_interface($interface, $odd) {
if ($interface["port"] % 2 == $odd) { if ($interface["port"] % 2 == $odd) {
$shutdown = $interface["shutdown"] ?? ""; echo "<td class='interface ${interface["shutdown"]} ${interface["linktype"]} ${interface["poe"]}' title='${interface[0]}' style='--pvid: ${interface["pvid"]}; --tagged: ${interface["tagged"]}; --untagged: ${interface["untagged"]};'>${interface["port"]}</td>\n";
$linktype = $interface["linktype"] ?? "";
$tagged = $interface["tagged"] ?? "0";
$untagged = $interface["untagged"] ?? "0";
$pvid = $interface["pvid"] ?? "0";
echo "<td class='number $shutdown $linktype' title='${interface[0]}' style='--pvid: $pvid; --tagged: $tagged; --untagged: $untagged;'>${interface["port"]}</td>\n";
} }
} }
foreach ($stack as $member => $interfaces) { foreach ($stack as $member => $interfaces) {
echo "<tr>\n<th>$member</th>\n<td>\n<table class='member'>\n<tbody>\n<tr>\n"; echo "<tr>\n<th>$member</th>\n<td>\n<table class='member'>\n<tbody>\n<tr>\n";
foreach ($interfaces as $interface) display_port($interface, 1); foreach ($interfaces as $interface) display_interface($interface, 1);
echo "</tr>\n<tr>\n"; echo "</tr>\n<tr>\n";
foreach ($interfaces as $interface) display_port($interface, 0); foreach ($interfaces as $interface) display_interface($interface, 0);
echo "</tr>\n</tbody>\n</table>\n</td>\n</tr>\n"; echo "</tr>\n</tbody>\n</table>\n</td>\n</tr>\n";
} }
?> ?>
@ -68,13 +63,14 @@ foreach ($vlans as $vlan) {
if (isset($vlan["pvid"]) and $vlan["pvid"] != 1) { if (isset($vlan["pvid"]) and $vlan["pvid"] != 1) {
$name = $vlan["name"] ?? ""; $name = $vlan["name"] ?? "";
$description = $vlan["description"] ?? ""; $description = $vlan["description"] ?? "";
echo "<tr title='${vlan[0]}'><td class='number pvid' style='--pvid: ${vlan["pvid"]}'>${vlan["pvid"]}</td><td>$name</td><td>$description</td></tr>"; echo "<tr title='${vlan[0]}'><td class='interface pvid' style='--pvid: ${vlan["pvid"]}'>${vlan["pvid"]}</td><td>$name</td><td>$description</td></tr>";
} }
} }
?> ?>
<tr><td class='number trunk'></td><td colspan='2'>Trunk</td></tr> <tr><td class='interface trunk'></td><td colspan='2'>Trunk</td></tr>
<tr><td class='number hybrid' style='--tagged:60; --untagged:0'></td><td colspan='2'>Hybride (tagged/untagged)</td></tr> <tr><td class='interface hybrid' style='--tagged:60; --untagged:0'></td><td colspan='2'>Hybride (tagged/untagged)</td></tr>
<tr><td class='number shutdown'></td><td colspan='2'>Interface désactivée</td></tr> <tr><td class='interface poe'></td><td colspan='2'>Power on Ethernet</td></tr>
<tr><td class='interface shutdown'></td><td colspan='2'>Interface désactivée</td></tr>
</tbody> </tbody>
</table> </table>
</main> </main>