[PATCH v4] fff-web: Extend switch port assignment display in ports.html
Tim Niemeyer
tim at tn-x.org
Fr Nov 3 22:48:39 CET 2017
Hi
Am Donnerstag, den 02.11.2017, 22:21 +0100 schrieb Tim Niemeyer:
> Hi
>
> Ich habs mir angeschaut, habe aber bei einigen Sachen ein bisschen
> Probleme da jetzt "offline" durchzusteigen.
>
> Da das Feature aber grundsätzlich cool ist und die Herangehensweise
> auch
> sehr gut ist, von mir:
> Reviewed-by: Tim Niemeyer <tim at tn-x.org>
>
> Ich würde es begrüßen, wenn jemand das einfach mal auf ein paar
> Geräte
> testet. Noch schöner, wäre es, wenn das nicht immer die selben
> machen.
> Wir haben hier ein schönes Patch, wo man mal ein bisschen in die
> Entwicklung "reinschnuppern" kann.
Leider keine ernsthafte Rückmeldung erhalten.
Und Applied.
Tim
> Tim
>
> Am Sonntag, den 15.10.2017, 18:17 +0200 schrieb Adrian Schmutzler:
> > This adds information to the switch port overview and shows
> > the VLAN configuration. For some routers the port order is
> > provided, so the physical arrangement is resembled in the
> > Web UI.
> >
> > Rebased onto the master from 2017-09-18.
> >
> > Changes in v4:
> > Add portorder for 1043 V4.
> >
> > Changes in v3:
> > Fix VLAN grep to also work on 1043 V1.
> >
> > Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> > ---
> > .../fff/fff-network/ar71xx/network.archer-c25-v1 | 2 +
> > 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-wr1043nd-v4 | 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 ++
> > 10 files changed, 122 insertions(+), 12 deletions(-)
> >
> > diff --git a/src/packages/fff/fff-network/ar71xx/network.archer-
> > c25-v1 b/src/packages/fff/fff-network/ar71xx/network.archer-c25-v1
> > index e524545..d7b95a1 100644
> > --- a/src/packages/fff/fff-network/ar71xx/network.archer-c25-v1
> > +++ b/src/packages/fff/fff-network/ar71xx/network.archer-c25-v1
> > @@ -1,3 +1,5 @@
> > +PORTORDER="4 3 2 1"
> > +
> > WANDEV=eth0
> > SWITCHDEV=eth1
> > CLIENT_PORTS="1 2 0t"
> > 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-
> > wr1043nd-v4 b/src/packages/fff/fff-network/ar71xx/network.tl-
> > wr1043nd-v4
> > index 93772f9..4ffb7b2 100644
> > --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v4
> > +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v4
> > @@ -1,3 +1,5 @@
> > +PORTORDER="5 4 3 2 1"
> > +
> > WANDEV=eth0
> > SWITCHDEV=eth0
> > CLIENT_PORTS="1 2 0t"
> > 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..5912126 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 -E "VLAN\s[0-9]+:[ \t]*$"
> > | 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
> > -E "VLAN\s[0-9]+:[ \t]*$" | 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
> >
>
>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 488 bytes
Beschreibung: This is a digitally signed message part
URL : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20171103/fd54529f/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev