forked from freifunk-franken/firmware
242 lines
8.5 KiB
HTML
Executable File
242 lines
8.5 KiB
HTML
Executable File
#!/usr/bin/haserl
|
|
|
|
<%
|
|
|
|
. /lib/functions/fff/interfaces
|
|
|
|
# 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
|
|
do_reboot=1
|
|
MSG='<span class="green">Port Modus geändert! Router startet neu...</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
|
|
do_reboot=1
|
|
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/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 [ ! "$WANDEV" = "$SWITCHDEV" ] ; 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ä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>
|
|
</fieldset>
|
|
</td></tr>
|
|
<% fi %>
|
|
<% if [ -n "$ONE_PORT" ] || [ -n "$ETHPORT" ] ; then %>
|
|
<%
|
|
# Device has a port set by $ETHMODE
|
|
. /etc/network.config
|
|
%>
|
|
<tr><td>
|
|
<fieldset>
|
|
<legend>Ethernet Anschluss</legend>
|
|
<table>
|
|
<tr>
|
|
<th style="width: 1em;">Anschluss 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 [ -n "$ONE_PORT" ] ; 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 über Ethernet Anschluss Verbindung zum Internet her.<br />
|
|
Client: Normale Clients stellen über Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
|
|
BATMAN: Knoten stellt über Ethernet Anschluss Verbindung zu anderen MESH Knoten her.<br /><br />
|
|
|
|
Wenn diese Einstellung verändert wird, wird eine evtl. vorhandene manuelle Netzwerkkonfiguration in der
|
|
<tt>/etc/config/network</tt> überschrieben.<br />
|
|
Anschließend wird der Router neugestartet.
|
|
</td></tr>
|
|
</table>
|
|
</fieldset>
|
|
</td></tr>
|
|
<% fi %>
|
|
<% if [ -n "$TWO_PORT" ] ; then %>
|
|
<%
|
|
# Device has two ports
|
|
. /etc/network.config
|
|
%>
|
|
<tr><td>
|
|
<fieldset>
|
|
<legend>Ethernet Anschlüsse</legend>
|
|
<table>
|
|
<tr>
|
|
<th style="width: 15em;text-align:left">Modus Anschluss 0:</th>
|
|
<th style="width: 15em;text-align:left">Modus Anschluss 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 über Ethernet Anschluss Verbindung zum Internet her.<br />
|
|
Client: Normale Clients stellen über Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
|
|
BATMAN: Knoten stellt über Ethernet Anschluss Verbindung zu anderen MESH Knoten her.<br /><br />
|
|
|
|
Wenn diese Einstellung verändert wird, wird eine evtl. vorhandene manuelle Netzwerkkonfiguration in der
|
|
<tt>/etc/config/network</tt> überschrieben.<br />
|
|
Anschließend wird der Router neugestartet.
|
|
</td></tr>
|
|
</table>
|
|
</fieldset>
|
|
</td></tr>
|
|
<% fi %>
|
|
</table>
|
|
</form>
|
|
<%in /www/include/footer %>
|
|
<%
|
|
# write
|
|
if [ "$do_reboot" = "1" ] ; then
|
|
reboot
|
|
fi
|
|
%>
|