firmware/src/packages/fff/fff-web-ui/files/www/ssl/cgi-bin/ports.html

244 lines
8.8 KiB
HTML
Executable File

#!/usr/bin/haserl
<%
board_name=$(uci -q get board.model.name)
# write
if [ "$REQUEST_METHOD" = "POST" ] ; then
if [ "$POST_change_mode" != "" ] ; then
sed -i '/^.*# set via WebUI/d' /etc/network.config
echo "ETHMODE=\"${POST_mode}\" # set via WebUI" >> /etc/network.config
sed -i '/^FORCEPARSE/d' /etc/network.config
echo "FORCEPARSE='2'" >> /etc/network.config
do_reconfigure=1
MSG='<span class="green">Port Modus wird ge&auml;ndert!</span>'
fi
if [ "$POST_change_twoport" != "" ] ; then
sed -i '/^.*# set via WebUI/d' /etc/network.config
echo "LAN0MODE=\"${POST_mode0}\" # set via WebUI" >> /etc/network.config
echo "LAN1MODE=\"${POST_mode1}\" # set via WebUI" >> /etc/network.config
sed -i '/^FORCEPARSE/d' /etc/network.config
echo "FORCEPARSE='2'" >> /etc/network.config
do_reconfigure=1
MSG='<span class="green">Port Modus wird ge&auml;ndert!</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/include/header %>
<%in /www/include/helpers %>
<% show_msg %>
<form method="post">
<table style="width: 100%;">
<% if swconfig list | grep -q switch0 ; then %>
<%# Device has a switch %>
<tr><td>
<fieldset>
<legend>Switch</legend>
<table>
<tr>
<%
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="connected"
else
speed="no link"
fi
echo "<td class=\"swport\">"
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
. /lib/functions/fff/portorder
portorder=$(get_port_order)
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
%>
</tr>
</table>
<table>
<tr><td></td></tr>
<tr><td>
<% if [ -n "$portorder" ] ; then %>
Dies zeigt die tats&auml;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&uuml;sse am Router!<br />
<% fi %>
Einer (oder mehrere) der Ports sind keine Netzwerkanschl&uuml;sse am Router sondern binden die Router CPU an den internen Switch an.
</td></tr>
</table>
</fieldset>
</td></tr>
<% fi %>
<% if grep -q "ONE_PORT" "/etc/network.$board_name" ; then %>
<%
# Device has a port set by $ETHMODE
. /etc/network.mode
. /etc/network.config
%>
<tr><td>
<fieldset>
<legend>Ethernet Anschluss</legend>
<table>
<tr>
<th style="width: 1em;">Anschluss&nbsp;Modus:</th>
<td>
<select name="mode">
<option value="BATMAN" <% [ "$ETHMODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
<option value="CLIENT" <% [ "$ETHMODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
<% if grep -q "ONE_PORT" "/etc/network.$board_name" ; then %>
<option value="WAN" <% [ "$ETHMODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
<% fi %>
</select>
</td>
</tr>
<tr><td colspan="2"><input type="submit" name="change_mode" /></td></tr>
<tr><td colspan="2"></td></tr>
<tr><td colspan="2">
WAN: Knoten stellt &uuml;ber Ethernet Anschluss Verbindung zum Internet her.<br />
Client: Normale Clients stellen &uuml;ber Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
BATMAN: Knoten stellt &uuml;ber Ethernet Anschluss Verbindung zu anderen MESH Knoten her.<br /><br />
Wenn diese Einstellung ver&auml;ndert wird, wird eine evtl. vorhandene manuelle Netzwerkkonfiguration in der
<tt>/etc/config/network</tt> &uuml;berschrieben.<br />
</td></tr>
</table>
</fieldset>
</td></tr>
<% fi %>
<% if grep -q "TWO_PORT" "/etc/network.$board_name" ; then %>
<%
# Device has two ports
. /etc/network.mode
. /etc/network.config
%>
<tr><td>
<fieldset>
<legend>Ethernet Anschl&uuml;sse</legend>
<table>
<tr>
<th style="width: 15em;text-align:left">Modus&nbsp;Anschluss&nbsp;0:</th>
<th style="width: 15em;text-align:left">Modus&nbsp;Anschluss&nbsp;1:</th>
<th></th>
</tr>
<tr>
<td>
<select name="mode0">
<option value="BATMAN" <% [ "$LAN0MODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
<option value="CLIENT" <% [ "$LAN0MODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
<option value="WAN" <% [ "$LAN0MODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
</select>
</td>
<td>
<select name="mode1">
<option value="BATMAN" <% [ "$LAN1MODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
<option value="CLIENT" <% [ "$LAN1MODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
<option value="WAN" <% [ "$LAN1MODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
</select>
</td>
<td><input type="submit" name="change_twoport" /></td>
</tr>
<tr><td colspan="3"></td></tr>
<tr><td colspan="3">
WAN: Knoten stellt &uuml;ber Ethernet Anschluss Verbindung zum Internet her.<br />
Client: Normale Clients stellen &uuml;ber Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
BATMAN: Knoten stellt &uuml;ber Ethernet Anschluss Verbindung zu anderen MESH Knoten her.<br /><br />
Wenn diese Einstellung ver&auml;ndert wird, wird eine evtl. vorhandene manuelle Netzwerkkonfiguration in der
<tt>/etc/config/network</tt> &uuml;berschrieben.<br />
</td></tr>
</table>
</fieldset>
</td></tr>
<% fi %>
</table>
</form>
<%in /www/include/footer %>
<%
# write
if [ "$do_reconfigure" = "1" ] ; then
configurenetwork
fi
%>