From patchwork Sun Jul 30 15:08:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: fff-web: Extend switch port assignment display in ports.html From: Adrian Schmutzler X-Patchwork-Id: 414 Message-Id: <1501427309-2325-1-git-send-email-freifunk@adrianschmutzler.de> To: franken-dev@freifunk.net Date: Sun, 30 Jul 2017 17:08:29 +0200 Signed-off-by: Adrian Schmutzler Tested-by: Adrian Schmutzler --- 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='Port Modus geändert! Router startet neu...' 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 "Multi-Link" + elif echo "$clientports" | grep -q "${1}" ; then + echo -n "CLIENT" + elif echo "$batmanports" | grep -q "${1}" ; then + echo -n "BATMAN" + elif echo "$wanports" | grep -q "${1}" ; then + echo -n "WAN" + else + echo -n "Unknown" + fi + echo "
" +} +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 "\"${link}\"

" + format_state "${port}" + echo "$speed
$duplex


" + + 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 "tagged
" + elif echo "$vports" | grep -q "${port}" ; then + echo "untagged
" + else + echo "-
" + fi + done +} + + %> <%in /www/ssl/cgi-bin/header %> <%in /www/ssl/cgi-bin/helpers %> @@ -36,22 +84,55 @@ 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/') - link=$(echo "$line" | sed 's/.* link:\([^ ]*\).*/\1/') + echo "" + echo "" + + 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 "" + 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 "" + done + if [ -n "$portorder" ] ; then + echo "" + 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 "" done %> @@ -60,7 +141,11 @@ fi
" + swconfig dev switch0 show | grep "VLAN\s" | while read line ; do + vid=$(echo "$line" | sed 's/.*VLAN \([^:]*\).*/\1/') + echo "VLAN $vid
" + done + echo "
" - echo "${port}
" - echo "\"${link}\"
" - echo "$speed
$duplex
" + echo "WAN-Port
" + echo "\"${link}\"

" + echo "WAN
" + echo "$speed" + echo "
" + echo "Port #${port}
" + format_port "${line}" + echo "
" + echo "Port #${port}
" + format_port "${line}" echo "
+ <% 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!
+ <% else %> Die Nummerierung und Reihenfolge der Ports entspricht nicht notwendigerweise der der Netzwerkanschlüsse am Router!
+ <% fi %> Einer (oder mehrere) der Ports sind keine Netzwerkanschlüsse am Router sondern binden die Router CPU an den internen Switch an.
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; +}