[PATCH] fff-web: Extend switch port assignment display in ports.html
Adrian Schmutzler
freifunk at adrianschmutzler.de
So Jul 30 17:08:29 CEST 2017
Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
Tested-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
src/packages/fff/fff-network/ar71xx/network.cpe210 | 2 +
src/packages/fff/fff-network/ar71xx/network.cpe510 | 2 +
.../fff/fff-network/ar71xx/network.gl-ar150 | 2 +
.../fff/fff-network/ar71xx/network.tl-wr841n-v10 | 2 +
.../fff/fff-network/ar71xx/network.tl-wr841n-v11 | 2 +
.../fff/fff-network/ar71xx/network.tl-wr841n-v8 | 2 +
.../fff/fff-web/files/www/ssl/cgi-bin/ports.html | 109 ++++++++++++++++++---
src/packages/fff/fff-web/files/www/ssl/style.css | 9 ++
8 files changed, 118 insertions(+), 12 deletions(-)
diff --git a/src/packages/fff/fff-network/ar71xx/network.cpe210 b/src/packages/fff/fff-network/ar71xx/network.cpe210
index 6764c64..fe0b985 100644
--- a/src/packages/fff/fff-network/ar71xx/network.cpe210
+++ b/src/packages/fff/fff-network/ar71xx/network.cpe210
@@ -1,3 +1,5 @@
+PORTORDER="5 4"
+
WANDEV=eth0
SWITCHDEV=eth0
CLIENT_PORTS="0t"
diff --git a/src/packages/fff/fff-network/ar71xx/network.cpe510 b/src/packages/fff/fff-network/ar71xx/network.cpe510
index 6764c64..fe0b985 100644
--- a/src/packages/fff/fff-network/ar71xx/network.cpe510
+++ b/src/packages/fff/fff-network/ar71xx/network.cpe510
@@ -1,3 +1,5 @@
+PORTORDER="5 4"
+
WANDEV=eth0
SWITCHDEV=eth0
CLIENT_PORTS="0t"
diff --git a/src/packages/fff/fff-network/ar71xx/network.gl-ar150 b/src/packages/fff/fff-network/ar71xx/network.gl-ar150
index 61ce71a..600f641 100644
--- a/src/packages/fff/fff-network/ar71xx/network.gl-ar150
+++ b/src/packages/fff/fff-network/ar71xx/network.gl-ar150
@@ -1,3 +1,5 @@
+PORTORDER="1"
+
WANDEV=eth0
SWITCHDEV=eth1
WAN_PORTS=
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v10 b/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v10
index 1d3f146..4d22fde 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v10
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v10
@@ -1,3 +1,5 @@
+PORTORDER="4 3 2 1"
+
WANDEV=eth1
SWITCHDEV=eth0
CLIENT_PORTS="1 2 0t"
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v11 b/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v11
index 1d3f146..4d22fde 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v11
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v11
@@ -1,3 +1,5 @@
+PORTORDER="4 3 2 1"
+
WANDEV=eth1
SWITCHDEV=eth0
CLIENT_PORTS="1 2 0t"
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v8 b/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v8
index c0e3817..af79caf 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v8
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr841n-v8
@@ -1,3 +1,5 @@
+PORTORDER="2 3 4 1"
+
WANDEV=eth0
SWITCHDEV=eth1
CLIENT_PORTS="1 4 0t"
diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/ports.html b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/ports.html
index 9d54be7..c0be168 100755
--- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/ports.html
+++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/ports.html
@@ -1,6 +1,6 @@
#!/usr/bin/haserl
-<%
+<%
board_name=$(uci -q get board.model.name)
# write
if [ "$REQUEST_METHOD" == "POST" ] ; then
@@ -22,6 +22,54 @@ if [ "$REQUEST_METHOD" == "POST" ] ; then
MSG='<span class="green">Port Modus geändert! Router startet neu...</span>'
fi
fi
+
+#helpers
+format_state() {
+ batmanports=$(swconfig dev switch0 vlan 3 show | grep 'ports:')
+ clientports=$(swconfig dev switch0 vlan 1 show | grep 'ports:')
+ wanports=$(swconfig dev switch0 vlan 2 show | grep 'ports:')
+
+ if (echo "$clientports" | grep -q "${1}") && (echo "$batmanports" | grep -q "${1}") ; then
+ echo -n "<span class=\"assign\" style=\"color:black\">Multi-Link"
+ elif echo "$clientports" | grep -q "${1}" ; then
+ echo -n "<span class=\"assign\" style=\"color:orange\">CLIENT"
+ elif echo "$batmanports" | grep -q "${1}" ; then
+ echo -n "<span class=\"assign\" style=\"color:green\">BATMAN"
+ elif echo "$wanports" | grep -q "${1}" ; then
+ echo -n "<span class=\"assign\" style=\"color:blue\">WAN"
+ else
+ echo -n "<span class=\"assign\" style=\"color:red\">Unknown"
+ fi
+ echo "</span><br />"
+}
+format_port() {
+ port=$(echo "$1" | sed 's/.* port:\([^ ]*\) .*/\1/')
+ link=$(echo "$1" | sed 's/.* link:\([^ ]*\).*/\1/')
+ if [ "$link" == "up" ] ; then
+ speed=$(echo "$1" | sed 's/.* speed:\([^ ]*\).*/\1/')
+ duplex=$(echo "$1" | sed 's/.* \([^ ]*-duplex\).*/\1/')
+ else
+ speed="no link"
+ duplex=""
+ fi
+ echo "<img src=\"/port_${link}.png\" alt=\"${link}\" /><br /><br />"
+ format_state "${port}"
+ echo "<span class=\"stat\">$speed<br />$duplex</span><br /><br />"
+
+ swconfig dev switch0 show | grep "VLAN\s" | while read line ; do
+ vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/')
+ vports=$(swconfig dev switch0 vlan "$vid" show | grep 'ports:')
+ if echo "$vports" | grep -q "${port}t" ; then
+ echo "<span class=\"vassign\">tagged</span><br />"
+ elif echo "$vports" | grep -q "${port}" ; then
+ echo "<span class=\"vassign\">untagged</span><br />"
+ else
+ echo "<span class=\"vassign\">-</span><br />"
+ fi
+ done
+}
+
+
%>
<%in /www/ssl/cgi-bin/header %>
<%in /www/ssl/cgi-bin/helpers %>
@@ -36,22 +84,55 @@ fi
<table>
<tr>
<%
- swconfig dev switch0 show | grep "\t*link:" | while read line ; do
- line=$(echo "$line" | tr -d '\n' | tr -d '\t')
- port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
- link=$(echo "$line" | sed 's/.* link:\([^ ]*\).*/\1/')
+ echo "<td class=\"swport\" style=\"vertical-align:bottom\">"
+ swconfig dev switch0 show | grep "VLAN\s" | while read line ; do
+ vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/')
+ echo "<span class=\"vassign\" style=\"font-weight:bold;font-style:italic\">VLAN $vid </span><br />"
+ done
+ echo "</td>"
+ echo "<td class=\"swport\" style=\"width:2em\"></td>"
+
+ if [ ! "$(awk -F= '/WANDEV=/ { print $2 }' /etc/network.$board_name)" = "$(awk -F= '/SWITCHDEV=/ { print $2 }' /etc/network.$board_name)" ] ; then
+ wanif=$(uci -q get network.wan.ifname)
+ link=$(cat /sys/class/net/${wanif}/operstate)
if [ "$link" == "up" ] ; then
- speed=$(echo "$line" | sed 's/.* speed:\([^ ]*\).*/\1/')
- duplex=$(echo "$line" | sed 's/.* \([^ ]*-duplex\).*/\1/')
+ speed="connected"
else
speed="no link"
- duplex=""
fi
- port="Port ${port}"
echo "<td class=\"swport\">"
- echo "<span class=\"port\">${port}</span><br />"
- echo "<img src=\"/port_${link}.png\" alt=\"${link}\" /><br />"
- echo "<span class=\"stat\">$speed<br />$duplex</span>"
+ echo "<span class=\"port\" style=\"color:blue\">WAN-Port</span><br />"
+ echo "<img src=\"/port_${link}.png\" alt=\"${link}\" /><br /><br />"
+ echo "<span class=\"assign\" style=\"color:blue\">WAN</span><br />"
+ echo "<span class=\"stat\">$speed</span>"
+ echo "</td>"
+ fi
+
+ if grep -q 'PORTORDER=' /etc/network.$board_name ; then
+ portorder=$(awk -F= '/PORTORDER=/ { print $2 }' /etc/network.$board_name | sed "s/\"//g")
+ fi
+ for internalport in $portorder
+ do
+ line=$(swconfig dev switch0 port "$internalport" show | tr -d '\n' | tr -d '\t')
+ port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
+ echo "<td class=\"swport\">"
+ echo "<span class=\"port\">Port #${port}</span><br />"
+ format_port "${line}"
+ echo "</td>"
+ done
+ if [ -n "$portorder" ] ; then
+ echo "<td class=\"swport\" style=\"width:4em\"></td>"
+ fi
+
+ swconfig dev switch0 show | grep "\t*link:" | while read line ; do
+ line=$(echo "$line" | tr -d '\n' | tr -d '\t')
+ port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
+ if echo "$portorder" | grep -q "$port" ; then
+ continue
+ fi
+ echo "<td class=\"swport\">"
+ echo "<span class=\"port\">Port #${port}</span><br />"
+ format_port "${line}"
echo "</td>"
done
%>
@@ -60,7 +141,11 @@ fi
<table>
<tr><td></td></tr>
<tr><td>
+ <% if [ -n "$portorder" ] ; then %>
+ Dies zeigt die tatsächliche Zuordnung der Ports, wobei der WAN Port auf der linken Seite liegt. Die Nummerierung entspricht der internen Zuordnung!<br />
+ <% else %>
Die Nummerierung und Reihenfolge der Ports entspricht nicht notwendigerweise der der Netzwerkanschlüsse am Router!<br />
+ <% fi %>
Einer (oder mehrere) der Ports sind keine Netzwerkanschlüsse am Router sondern binden die Router CPU an den internen Switch an.
</td></tr>
</table>
diff --git a/src/packages/fff/fff-web/files/www/ssl/style.css b/src/packages/fff/fff-web/files/www/ssl/style.css
index b9e0d9f..d644b3a 100644
--- a/src/packages/fff/fff-web/files/www/ssl/style.css
+++ b/src/packages/fff/fff-web/files/www/ssl/style.css
@@ -218,3 +218,12 @@ pre {
.swport .stat {
font-size: 10px;
}
+
+.swport .assign {
+ font-weight: bold;
+ font-size: 11px;
+}
+
+.swport .vassign {
+ font-style: italic;
+}
--
2.7.4
Mehr Informationen über die Mailingliste franken-dev