treewide: add support for br-client
br-mesh has been renamed to br-client in recent firmware. Implement br-client parallel to br-mesh. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
parent
e4977356fc
commit
bd8d0280f6
|
@ -33,7 +33,7 @@ def ban_router(mysql,dbid):
|
||||||
mac = mysql.findone("""
|
mac = mysql.findone("""
|
||||||
SELECT mac
|
SELECT mac
|
||||||
FROM router_netif
|
FROM router_netif
|
||||||
WHERE router = %s AND netif = 'br-mesh'
|
WHERE router = %s AND (netif = 'br-mesh' OR netif = 'br-client')
|
||||||
""",(dbid,),"mac")
|
""",(dbid,),"mac")
|
||||||
added = mysql.utcnow()
|
added = mysql.utcnow()
|
||||||
if mac:
|
if mac:
|
||||||
|
@ -51,6 +51,8 @@ def import_nodewatcher_xml(mysql, infdict, mac, xml, banned, hoodsv2, hoodsdict,
|
||||||
# The following values should stay available after router reset
|
# The following values should stay available after router reset
|
||||||
keepvalues = ['lat','lng','description','position_comment','contact']
|
keepvalues = ['lat','lng','description','position_comment','contact']
|
||||||
|
|
||||||
|
brifs = ('br-mesh','br-client')
|
||||||
|
|
||||||
router_id = None
|
router_id = None
|
||||||
olddata = False
|
olddata = False
|
||||||
uptime = 0
|
uptime = 0
|
||||||
|
@ -180,7 +182,7 @@ def import_nodewatcher_xml(mysql, infdict, mac, xml, banned, hoodsv2, hoodsdict,
|
||||||
akeys = []
|
akeys = []
|
||||||
for n in router_update["netifs"]:
|
for n in router_update["netifs"]:
|
||||||
nkeys.append(n["name"])
|
nkeys.append(n["name"])
|
||||||
if n["name"]=='br-mesh': # Only br-mesh will normally have assigned IPv6 addresses
|
if n["name"] in brifs: # Only br-client will normally have assigned IPv6 addresses
|
||||||
akeys = n["ipv6_addrs"]
|
akeys = n["ipv6_addrs"]
|
||||||
|
|
||||||
if nkeys:
|
if nkeys:
|
||||||
|
@ -194,7 +196,7 @@ def import_nodewatcher_xml(mysql, infdict, mac, xml, banned, hoodsv2, hoodsdict,
|
||||||
if akeys:
|
if akeys:
|
||||||
adata = mysql.fetchall("SELECT netif, ipv6 FROM router_ipv6 WHERE router = %s",(router_id,))
|
adata = mysql.fetchall("SELECT netif, ipv6 FROM router_ipv6 WHERE router = %s",(router_id,))
|
||||||
for a in adata:
|
for a in adata:
|
||||||
if a["netif"]=='br-mesh' and a["ipv6"] in akeys:
|
if a["netif"] in brifs and a["ipv6"] in akeys:
|
||||||
continue
|
continue
|
||||||
mysql.execute("DELETE FROM router_ipv6 WHERE router = %s AND netif = %s AND ipv6 = %s",(router_id,a["netif"],a["ipv6"],))
|
mysql.execute("DELETE FROM router_ipv6 WHERE router = %s AND netif = %s AND ipv6 = %s",(router_id,a["netif"],a["ipv6"],))
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -365,7 +365,7 @@ def wifianalhelper(router_data, headline):
|
||||||
for router in router_data:
|
for router in router_data:
|
||||||
if not router['mac']:
|
if not router['mac']:
|
||||||
continue
|
continue
|
||||||
if router["netif"] == 'br-mesh':
|
if router["netif"] == 'br-mesh' or router["netif"] == 'br-client':
|
||||||
s += int2mac(router["mac"]) + "|Mesh_" + router['hostname'] + "\n"
|
s += int2mac(router["mac"]) + "|Mesh_" + router['hostname'] + "\n"
|
||||||
elif router["netif"] == 'w2ap':
|
elif router["netif"] == 'w2ap':
|
||||||
s += int2mac(router["mac"]) + "|" + router['hostname'] + "\n"
|
s += int2mac(router["mac"]) + "|" + router['hostname'] + "\n"
|
||||||
|
@ -432,7 +432,7 @@ def dnsentries():
|
||||||
return Response(s,mimetype='text/plain')
|
return Response(s,mimetype='text/plain')
|
||||||
|
|
||||||
def nodelist_helper(where = "",data=()):
|
def nodelist_helper(where = "",data=()):
|
||||||
# Suppresses routers without br-mesh
|
# Suppresses routers without br-client
|
||||||
mysql = FreifunkMySQL()
|
mysql = FreifunkMySQL()
|
||||||
router_data = mysql.fetchall("""
|
router_data = mysql.fetchall("""
|
||||||
SELECT router.id, hostname, status, hoods.id AS hoodid, hoods.name AS hood, contact, nickname, hardware, firmware, clients, lat, lng, last_contact, mac, sys_loadavg, fe80_addr
|
SELECT router.id, hostname, status, hoods.id AS hoodid, hoods.name AS hood, contact, nickname, hardware, firmware, clients, lat, lng, last_contact, mac, sys_loadavg, fe80_addr
|
||||||
|
@ -440,7 +440,7 @@ def nodelist_helper(where = "",data=()):
|
||||||
INNER JOIN hoods ON router.hood = hoods.id
|
INNER JOIN hoods ON router.hood = hoods.id
|
||||||
INNER JOIN router_netif ON router.id = router_netif.router
|
INNER JOIN router_netif ON router.id = router_netif.router
|
||||||
LEFT JOIN users ON router.contact = users.email
|
LEFT JOIN users ON router.contact = users.email
|
||||||
WHERE netif = 'br-mesh' {}
|
WHERE (netif = 'br-mesh' OR netif = 'br-client') {}
|
||||||
ORDER BY hostname ASC
|
ORDER BY hostname ASC
|
||||||
""".format(where),data)
|
""".format(where),data)
|
||||||
router_data = mysql.utcawaretuple(router_data,"last_contact")
|
router_data = mysql.utcawaretuple(router_data,"last_contact")
|
||||||
|
@ -470,7 +470,7 @@ def nodelist_helper(where = "",data=()):
|
||||||
fastd += 1
|
fastd += 1
|
||||||
elif netif.startswith('l2tp'):
|
elif netif.startswith('l2tp'):
|
||||||
l2tp += 1
|
l2tp += 1
|
||||||
#elif netif['netif'] == 'br-mesh' and 'mac' in netif:
|
#elif netif['netif'] in ('br-mesh','br-client') and 'mac' in netif:
|
||||||
# mac = netif["mac"]
|
# mac = netif["mac"]
|
||||||
|
|
||||||
if not router['mac']:
|
if not router['mac']:
|
||||||
|
@ -538,7 +538,7 @@ def no_position():
|
||||||
|
|
||||||
@api.route('/routers')
|
@api.route('/routers')
|
||||||
def routers():
|
def routers():
|
||||||
# Suppresses routers without br-mesh
|
# Suppresses routers without br-client
|
||||||
return jsonify(nodelist_helper())
|
return jsonify(nodelist_helper())
|
||||||
|
|
||||||
@api.route('/routers_by_nickname/<nickname>')
|
@api.route('/routers_by_nickname/<nickname>')
|
||||||
|
|
|
@ -60,7 +60,7 @@ def router_list():
|
||||||
LEFT JOIN (
|
LEFT JOIN (
|
||||||
SELECT router, blocked.mac AS blocked FROM router_netif
|
SELECT router, blocked.mac AS blocked FROM router_netif
|
||||||
INNER JOIN blocked ON router_netif.mac = blocked.mac
|
INNER JOIN blocked ON router_netif.mac = blocked.mac
|
||||||
WHERE netif = 'br-mesh'
|
WHERE netif = 'br-mesh' OR netif = 'br-client'
|
||||||
) AS b
|
) AS b
|
||||||
ON router.id = b.router
|
ON router.id = b.router
|
||||||
{}
|
{}
|
||||||
|
@ -157,7 +157,7 @@ def router_info(dbid):
|
||||||
netifs = []
|
netifs = []
|
||||||
for n in router["netifs"]:
|
for n in router["netifs"]:
|
||||||
n["ipv6_addrs"] = mysql.fetchall("""SELECT ipv6 FROM router_ipv6 WHERE router = %s AND netif = %s""",(dbid,n["netif"],),"ipv6")
|
n["ipv6_addrs"] = mysql.fetchall("""SELECT ipv6 FROM router_ipv6 WHERE router = %s AND netif = %s""",(dbid,n["netif"],),"ipv6")
|
||||||
if n["netif"]=="br-mesh":
|
if n["netif"] in ("br-mesh","br-client"):
|
||||||
mac = n["mac"]
|
mac = n["mac"]
|
||||||
netifs.append(n["netif"])
|
netifs.append(n["netif"])
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ def router_info(dbid):
|
||||||
netif = n["netif"];
|
netif = n["netif"];
|
||||||
desc = None
|
desc = None
|
||||||
color = None
|
color = None
|
||||||
if netif == 'br-mesh':
|
if netif in ('br-mesh','br-client'):
|
||||||
desc = "Client Bridge"
|
desc = "Client Bridge"
|
||||||
elif netif == 'br-ethmesh':
|
elif netif == 'br-ethmesh':
|
||||||
desc = "Ethernet Mesh Bridge"
|
desc = "Ethernet Mesh Bridge"
|
||||||
|
@ -362,7 +362,7 @@ def router_info(dbid):
|
||||||
mysql.close()
|
mysql.close()
|
||||||
return redirect(url_for("index"))
|
return redirect(url_for("index"))
|
||||||
else:
|
else:
|
||||||
flash("<b>Router has no br-mesh and thus cannot be banned!</b>", "danger")
|
flash("<b>Router has no br-client/br-mesh and thus cannot be banned!</b>", "danger")
|
||||||
else:
|
else:
|
||||||
flash("<b>You are not authorized to perform this action!</b>", "danger")
|
flash("<b>You are not authorized to perform this action!</b>", "danger")
|
||||||
elif request.form.get("act") == "changeblocked" and mac:
|
elif request.form.get("act") == "changeblocked" and mac:
|
||||||
|
@ -407,7 +407,7 @@ def router_info(dbid):
|
||||||
SELECT blocked.mac
|
SELECT blocked.mac
|
||||||
FROM router_netif AS n
|
FROM router_netif AS n
|
||||||
LEFT JOIN blocked ON n.mac = blocked.mac
|
LEFT JOIN blocked ON n.mac = blocked.mac
|
||||||
WHERE n.router = %s AND n.netif = 'br-mesh'
|
WHERE n.router = %s AND (n.netif = 'br-mesh' OR n.netif = 'br-client')
|
||||||
""",(dbid,),"mac")
|
""",(dbid,),"mac")
|
||||||
mysql.close()
|
mysql.close()
|
||||||
|
|
||||||
|
@ -528,7 +528,7 @@ def user_info(nickname):
|
||||||
LEFT JOIN (
|
LEFT JOIN (
|
||||||
SELECT router, blocked.mac AS blocked FROM router_netif
|
SELECT router, blocked.mac AS blocked FROM router_netif
|
||||||
INNER JOIN blocked ON router_netif.mac = blocked.mac
|
INNER JOIN blocked ON router_netif.mac = blocked.mac
|
||||||
WHERE netif = 'br-mesh'
|
WHERE netif = 'br-mesh' OR netif = 'br-client'
|
||||||
) AS b
|
) AS b
|
||||||
ON router.id = b.router
|
ON router.id = b.router
|
||||||
WHERE contact = %s
|
WHERE contact = %s
|
||||||
|
|
|
@ -246,7 +246,7 @@ def gravatar_url(email):
|
||||||
|
|
||||||
@filters.app_template_filter('webui_addr')
|
@filters.app_template_filter('webui_addr')
|
||||||
def webui_addr(router_netifs):
|
def webui_addr(router_netifs):
|
||||||
for br_mesh in filter(lambda n: n["netif"] == "br-mesh", router_netifs):
|
for br_mesh in filter(lambda n: n["netif"] in ("br-mesh","br-client"), router_netifs):
|
||||||
for ipv6 in br_mesh["ipv6_addrs"]:
|
for ipv6 in br_mesh["ipv6_addrs"]:
|
||||||
ipv6 = bintoipv6(ipv6)
|
ipv6 = bintoipv6(ipv6)
|
||||||
if not ipv6:
|
if not ipv6:
|
||||||
|
|
|
@ -188,8 +188,8 @@
|
||||||
<vpn_active>WAN-Uplink status, 0 or 1 [0]</vpn_active>
|
<vpn_active>WAN-Uplink status, 0 or 1 [0]</vpn_active>
|
||||||
</system_data>
|
</system_data>
|
||||||
<interface_data> # List of interfaces with interface name as node name; one interface with mac address is required for identification of device
|
<interface_data> # List of interfaces with interface name as node name; one interface with mac address is required for identification of device
|
||||||
<br-mesh> # Example br-mesh device
|
<br-client> # Example br-client device
|
||||||
<name>netif name [br-mesh]</name>
|
<name>netif name [br-client]</name>
|
||||||
<mtu>MTU [1500]</mtu>
|
<mtu>MTU [1500]</mtu>
|
||||||
<mac_addr>netif MAC address [aa:bb:cc:dd:ee:f1]</mac_addr>
|
<mac_addr>netif MAC address [aa:bb:cc:dd:ee:f1]</mac_addr>
|
||||||
<ipv4_addr>Device's IPv4 address in FFF network [10.83.999.1]</ipv4_addr>
|
<ipv4_addr>Device's IPv4 address in FFF network [10.83.999.1]</ipv4_addr>
|
||||||
|
@ -198,7 +198,7 @@
|
||||||
<ipv6_link_local_addr>Device's link-local address [fe80::a8bb:ccff:fedd:eef1/64]</ipv6_link_local_addr>
|
<ipv6_link_local_addr>Device's link-local address [fe80::a8bb:ccff:fedd:eef1/64]</ipv6_link_local_addr>
|
||||||
<traffic_rx>Total RX traffic bytes [1033114334]</traffic_rx>
|
<traffic_rx>Total RX traffic bytes [1033114334]</traffic_rx>
|
||||||
<traffic_tx>Total TX traffic bytes [30814227528]</traffic_tx>
|
<traffic_tx>Total TX traffic bytes [30814227528]</traffic_tx>
|
||||||
</br-mesh>
|
</br-client>
|
||||||
<eth0.1> # Example VLAN device
|
<eth0.1> # Example VLAN device
|
||||||
<name>netif name [eth0.1]</name>
|
<name>netif name [eth0.1]</name>
|
||||||
<mtu>MTU [1500]</mtu>
|
<mtu>MTU [1500]</mtu>
|
||||||
|
|
|
@ -284,11 +284,11 @@
|
||||||
<div id="netstat" class="graph"></div>
|
<div id="netstat" class="graph"></div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="list-group" id="netif-list">
|
<ul class="list-group" id="netif-list">
|
||||||
{# make sure that br-mesh is on top of the list #}
|
{# make sure that br-client is on top of the list #}
|
||||||
{%- for netif in router.netifs if netif.netif == 'br-mesh' %}
|
{%- for netif in router.netifs if netif.netif in ('br-client','br-mesh') %}
|
||||||
<li class="list-group-item active" data-name="{{ netif.netif|replace('.', '')|replace('$', '') }}">
|
<li class="list-group-item active" data-name="{{ netif.netif|replace('.', '')|replace('$', '') }}">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-7 col-sm-7"><h4 class="list-group-item-heading">br-mesh: <span class="netifdesc">Bridge</span></h4></div>
|
<div class="col-xs-7 col-sm-7"><h4 class="list-group-item-heading">{{ netif.netif }}: <span class="netifdesc">Client Bridge</span></h4></div>
|
||||||
<div class="col-xs-5 col-sm-5 text-right" style="text-transform: uppercase;"><h4 class="list-group-item-heading">{{ netif.mac|int2mac }}</h4></div>
|
<div class="col-xs-5 col-sm-5 text-right" style="text-transform: uppercase;"><h4 class="list-group-item-heading">{{ netif.mac|int2mac }}</h4></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -314,7 +314,7 @@
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- for netif in router.netifs if netif.netif != 'br-mesh' %}
|
{%- for netif in router.netifs if not netif.netif in ('br-client','br-mesh') %}
|
||||||
<li class="list-group-item" data-name="{{ netif.netif|replace('.', '')|replace('$', '') }}">
|
<li class="list-group-item" data-name="{{ netif.netif|replace('.', '')|replace('$', '') }}">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-7 col-sm-7"><h4 class="list-group-item-heading" style="{%- if netif.color -%}color:{{ netif.color }}{%- endif -%}">{{ netif.netif }}{%- if netif.description -%}: <span class="netifdesc">{{ netif.description }}</span>{%- endif %}</h4></div>
|
<div class="col-xs-7 col-sm-7"><h4 class="list-group-item-heading" style="{%- if netif.color -%}color:{{ netif.color }}{%- endif -%}">{{ netif.netif }}{%- if netif.description -%}: <span class="netifdesc">{{ netif.description }}</span>{%- endif %}</h4></div>
|
||||||
|
@ -468,7 +468,7 @@
|
||||||
load_netif_stats(netif);
|
load_netif_stats(netif);
|
||||||
$(this).addClass("active");
|
$(this).addClass("active");
|
||||||
});
|
});
|
||||||
load_netif_stats("br-mesh");
|
load_netif_stats("br-client");
|
||||||
});
|
});
|
||||||
{%- if router.neighbours|length > 0 %}
|
{%- if router.neighbours|length > 0 %}
|
||||||
function load_neigh_stats() {
|
function load_neigh_stats() {
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
#
|
#
|
||||||
# designed for GATEWAY FIRMWARE
|
# designed for GATEWAY FIRMWARE
|
||||||
#
|
#
|
||||||
|
# v1.4.7 - 2021-02-22
|
||||||
|
# - Use br-client instead of br-mesh
|
||||||
|
#
|
||||||
# v1.4.6 - 2018-10-17
|
# v1.4.6 - 2018-10-17
|
||||||
# - Fix IPv4/IPv6 sed (leading space in match pattern)
|
# - Fix IPv4/IPv6 sed (leading space in match pattern)
|
||||||
#
|
#
|
||||||
|
@ -47,6 +50,7 @@
|
||||||
# Config
|
# Config
|
||||||
api_urls="https://monitoring.freifunk-franken.de/api/gwinfo" # space-separated list of addresses (api_urls="url1 url2")
|
api_urls="https://monitoring.freifunk-franken.de/api/gwinfo" # space-separated list of addresses (api_urls="url1 url2")
|
||||||
batctlpath=/usr/sbin/batctl
|
batctlpath=/usr/sbin/batctl
|
||||||
|
brif=br-client
|
||||||
hostname="$(uci -q get system.@system[0].hostname)"
|
hostname="$(uci -q get system.@system[0].hostname)"
|
||||||
statslink="$(uci -q get gateway.@gateway[0].statslink)"
|
statslink="$(uci -q get gateway.@gateway[0].statslink)"
|
||||||
|
|
||||||
|
@ -67,10 +71,10 @@ for netif in $(ls /sys/class/net); do
|
||||||
dhcpstart=""
|
dhcpstart=""
|
||||||
dhcpend=""
|
dhcpend=""
|
||||||
if [ "$netif" = "bat0" ]; then
|
if [ "$netif" = "bat0" ]; then
|
||||||
ipv4="$(ip -4 addr show dev br-mesh | grep " 10\." | sed 's/.* \(10\.[^ ]*\/[^ ]*\) .*/\1/')"
|
ipv4="$(ip -4 addr show dev "$brif" | grep " 10\." | sed 's/.* \(10\.[^ ]*\/[^ ]*\) .*/\1/')"
|
||||||
ipv6="$(ip -6 addr show dev br-mesh | grep " fd43" | grep '::' | sed 's/.* \(fd43[^ ]*\) .*/\1/')"
|
ipv6="$(ip -6 addr show dev "$brif" | grep " fd43" | grep '::' | sed 's/.* \(fd43[^ ]*\) .*/\1/')"
|
||||||
[ "$(echo "$ipv6" | wc -l)" = "1" ] || ipv6=""
|
[ "$(echo "$ipv6" | wc -l)" = "1" ] || ipv6=""
|
||||||
dhcpstart="$(uci -q get dhcp.mesh.start)"
|
dhcpstart="$(uci -q get dhcp.client.start)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$comma{\"mac\":\"$mac\",\"netif\":\"$netif\",\"vpnif\":\"$batctl\",\"ipv4\":\"$ipv4\",\"ipv6\":\"$ipv6\",\"dhcpstart\":\"$dhcpstart\",\"dhcpend\":\"$dhcpend\"}" >> $tmp
|
echo "$comma{\"mac\":\"$mac\",\"netif\":\"$netif\",\"vpnif\":\"$batctl\",\"ipv4\":\"$ipv4\",\"ipv6\":\"$ipv6\",\"dhcpstart\":\"$dhcpstart\",\"dhcpend\":\"$dhcpend\"}" >> $tmp
|
||||||
|
|
Loading…
Reference in New Issue