[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