2016-03-13 13:32:12 +01:00
#!/usr/bin/haserl
2017-10-15 18:17:15 +02:00
< %
2017-08-21 18:46:28 +02:00
board_name=$(uci -q get board.model.name)
2016-03-13 13:32:12 +01:00
# write
2018-07-26 19:22:22 +02:00
if [ "$REQUEST_METHOD" = "POST" ] ; then
2017-08-21 18:46:28 +02:00
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_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
sed -i '/^FORCEPARSE/d' /etc/network.config
echo "FORCEPARSE='2'" >> /etc/network.config
do_reboot=1
MSG='< span class = "green" > Port Modus geä ndert! Router startet neu...< / span > '
fi
2016-03-13 13:32:12 +01:00
fi
2017-10-15 18:17:15 +02:00
#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/')
2018-07-26 19:22:22 +02:00
if [ "$link" = "up" ] ; then
2017-10-15 18:17:15 +02:00
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
}
2016-03-13 13:32:12 +01:00
%>
2020-12-12 17:12:30 +01:00
< %in /www/include/header %>
< %in /www/include/helpers %>
2016-03-13 13:32:12 +01:00
< % show_msg %>
2017-08-21 18:46:28 +02:00
< form method = "post" >
2016-03-13 13:32:12 +01:00
< table style = "width: 100%;" >
< % if swconfig list | grep -q switch0 ; then %>
< %# Device has a switch %>
< tr > < td >
< fieldset >
< legend > Switch< / legend >
< table >
< tr >
< %
2017-10-15 18:17:15 +02:00
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)
2018-07-26 19:22:22 +02:00
if [ "$link" = "up" ] ; then
2017-10-15 18:17:15 +02:00
speed="connected"
2016-03-13 13:32:12 +01:00
else
speed="no link"
fi
echo "< td class = \"swport\" > "
2017-10-15 18:17:15 +02:00
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
2020-09-19 01:50:31 +02:00
. /lib/functions/fff/portorder
portorder=$(get_port_order)
2017-10-15 18:17:15 +02:00
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
2020-09-19 01:50:31 +02:00
2017-10-15 18:17:15 +02:00
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}"
2016-03-13 13:32:12 +01:00
echo "< / td > "
done
%>
< / tr >
< / table >
< table >
< tr > < td > < / td > < / tr >
< tr > < td >
2017-10-15 18:17:15 +02:00
< % 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 %>
2016-03-13 13:32:12 +01:00
Die Nummerierung und Reihenfolge der Ports entspricht nicht notwendigerweise der der Netzwerkanschlü sse am Router!< br / >
2017-10-15 18:17:15 +02:00
< % fi %>
2016-03-13 13:32:12 +01:00
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 %>
2017-08-21 18:46:28 +02:00
< % if grep -q "ONE_PORT" "/etc/network.$board_name" || grep -q "ETHPORT" "/etc/network.$board_name" ; then %>
2016-03-13 13:32:12 +01:00
< %
2017-08-21 18:46:28 +02:00
# Device has a port set by $ETHMODE
2016-03-13 13:32:12 +01:00
. /etc/network.mode
2017-08-21 18:46:28 +02:00
. /etc/network.config
2016-03-13 13:32:12 +01:00
%>
< tr > < td >
< fieldset >
< legend > Ethernet Anschluss< / legend >
< table >
< tr >
< th style = "width: 1em;" > Anschluss Modus:< / th >
< td >
< select name = "mode" >
2018-07-26 19:22:22 +02:00
< option value = "BATMAN" < % [ " $ ETHMODE " = " BATMAN " ] & & echo -n ' selected = "selected" ' % > >BATMAN< / option >
< option value = "CLIENT" < % [ " $ ETHMODE " = " CLIENT " ] & & echo -n ' selected = "selected" ' % > >CLIENT< / option >
2017-08-21 18:46:28 +02:00
< % if grep -q "ONE_PORT" "/etc/network.$board_name" ; then %>
2018-07-26 19:22:22 +02:00
< option value = "WAN" < % [ " $ ETHMODE " = " WAN " ] & & echo -n ' selected = "selected" ' % > >WAN< / option >
2017-08-21 18:46:28 +02:00
< % fi %>
2016-03-13 13:32:12 +01:00
< / 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 %>
2017-08-21 18:46:28 +02:00
< % if grep -q "LAN0PORT" "/etc/network.$board_name" || grep -q "LAN1PORT" "/etc/network.$board_name" ; then %>
< %
# Device has two ports
. /etc/network.mode
. /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" >
2018-07-26 19:22:22 +02:00
< 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 >
2017-08-21 18:46:28 +02:00
< / select >
< / td >
< td >
< select name = "mode1" >
2018-07-26 19:22:22 +02:00
< 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 >
2017-08-21 18:46:28 +02:00
< / 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 %>
2016-03-13 13:32:12 +01:00
< / table >
< / form >
2020-12-12 17:12:30 +01:00
< %in /www/include/footer %>
2016-03-13 13:32:12 +01:00
< %
# write
2018-07-26 19:22:22 +02:00
if [ "$do_reboot" = "1" ] ; then
2016-03-13 13:32:12 +01:00
reboot
fi
%>