diff --git a/ffmap/routertools.py b/ffmap/routertools.py index d4cbb90..26aed9e 100644 --- a/ffmap/routertools.py +++ b/ffmap/routertools.py @@ -33,7 +33,7 @@ def ban_router(mysql,dbid): mac = mysql.findone(""" SELECT mac FROM router_netif - WHERE router = %s AND netif = 'br-mesh' + WHERE router = %s AND (netif = 'br-mesh' OR netif = 'br-client') """,(dbid,),"mac") added = mysql.utcnow() 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 keepvalues = ['lat','lng','description','position_comment','contact'] + brifs = ('br-mesh','br-client') + router_id = None olddata = False uptime = 0 @@ -180,7 +182,7 @@ def import_nodewatcher_xml(mysql, infdict, mac, xml, banned, hoodsv2, hoodsdict, akeys = [] for n in router_update["netifs"]: 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"] if nkeys: @@ -194,7 +196,7 @@ def import_nodewatcher_xml(mysql, infdict, mac, xml, banned, hoodsv2, hoodsdict, if akeys: adata = mysql.fetchall("SELECT netif, ipv6 FROM router_ipv6 WHERE router = %s",(router_id,)) 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 mysql.execute("DELETE FROM router_ipv6 WHERE router = %s AND netif = %s AND ipv6 = %s",(router_id,a["netif"],a["ipv6"],)) else: diff --git a/ffmap/web/api.py b/ffmap/web/api.py index 7d5782e..7fa55e1 100755 --- a/ffmap/web/api.py +++ b/ffmap/web/api.py @@ -365,7 +365,7 @@ def wifianalhelper(router_data, headline): for router in router_data: if not router['mac']: continue - if router["netif"] == 'br-mesh': + if router["netif"] == 'br-mesh' or router["netif"] == 'br-client': s += int2mac(router["mac"]) + "|Mesh_" + router['hostname'] + "\n" elif router["netif"] == 'w2ap': s += int2mac(router["mac"]) + "|" + router['hostname'] + "\n" @@ -432,7 +432,7 @@ def dnsentries(): return Response(s,mimetype='text/plain') def nodelist_helper(where = "",data=()): - # Suppresses routers without br-mesh + # Suppresses routers without br-client mysql = FreifunkMySQL() 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 @@ -440,7 +440,7 @@ def nodelist_helper(where = "",data=()): INNER JOIN hoods ON router.hood = hoods.id INNER JOIN router_netif ON router.id = router_netif.router LEFT JOIN users ON router.contact = users.email - WHERE netif = 'br-mesh' {} + WHERE (netif = 'br-mesh' OR netif = 'br-client') {} ORDER BY hostname ASC """.format(where),data) router_data = mysql.utcawaretuple(router_data,"last_contact") @@ -470,7 +470,7 @@ def nodelist_helper(where = "",data=()): fastd += 1 elif netif.startswith('l2tp'): 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"] if not router['mac']: @@ -538,7 +538,7 @@ def no_position(): @api.route('/routers') def routers(): - # Suppresses routers without br-mesh + # Suppresses routers without br-client return jsonify(nodelist_helper()) @api.route('/routers_by_nickname/') diff --git a/ffmap/web/application.py b/ffmap/web/application.py index bf5776b..b55c45d 100755 --- a/ffmap/web/application.py +++ b/ffmap/web/application.py @@ -60,7 +60,7 @@ def router_list(): LEFT JOIN ( SELECT router, blocked.mac AS blocked FROM router_netif INNER JOIN blocked ON router_netif.mac = blocked.mac - WHERE netif = 'br-mesh' + WHERE netif = 'br-mesh' OR netif = 'br-client' ) AS b ON router.id = b.router {} @@ -157,7 +157,7 @@ def router_info(dbid): 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") - if n["netif"]=="br-mesh": + if n["netif"] in ("br-mesh","br-client"): mac = n["mac"] netifs.append(n["netif"]) @@ -206,7 +206,7 @@ def router_info(dbid): netif = n["netif"]; desc = None color = None - if netif == 'br-mesh': + if netif in ('br-mesh','br-client'): desc = "Client Bridge" elif netif == 'br-ethmesh': desc = "Ethernet Mesh Bridge" @@ -362,7 +362,7 @@ def router_info(dbid): mysql.close() return redirect(url_for("index")) else: - flash("Router has no br-mesh and thus cannot be banned!", "danger") + flash("Router has no br-client/br-mesh and thus cannot be banned!", "danger") else: flash("You are not authorized to perform this action!", "danger") elif request.form.get("act") == "changeblocked" and mac: @@ -407,7 +407,7 @@ def router_info(dbid): SELECT blocked.mac FROM router_netif AS n 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") mysql.close() @@ -528,7 +528,7 @@ def user_info(nickname): LEFT JOIN ( SELECT router, blocked.mac AS blocked FROM router_netif INNER JOIN blocked ON router_netif.mac = blocked.mac - WHERE netif = 'br-mesh' + WHERE netif = 'br-mesh' OR netif = 'br-client' ) AS b ON router.id = b.router WHERE contact = %s diff --git a/ffmap/web/filters.py b/ffmap/web/filters.py index d0b146a..05772ce 100644 --- a/ffmap/web/filters.py +++ b/ffmap/web/filters.py @@ -246,7 +246,7 @@ def gravatar_url(email): @filters.app_template_filter('webui_addr') 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"]: ipv6 = bintoipv6(ipv6) if not ipv6: diff --git a/ffmap/web/templates/apidoc.html b/ffmap/web/templates/apidoc.html index 9b6dec1..21c5fe3 100644 --- a/ffmap/web/templates/apidoc.html +++ b/ffmap/web/templates/apidoc.html @@ -188,8 +188,8 @@ <vpn_active>WAN-Uplink status, 0 or 1 [0]</vpn_active> </system_data> <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 - <name>netif name [br-mesh]</name> + <br-client> # Example br-client device + <name>netif name [br-client]</name> <mtu>MTU [1500]</mtu> <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> @@ -198,7 +198,7 @@ <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_tx>Total TX traffic bytes [30814227528]</traffic_tx> - </br-mesh> + </br-client> <eth0.1> # Example VLAN device <name>netif name [eth0.1]</name> <mtu>MTU [1500]</mtu> diff --git a/ffmap/web/templates/router.html b/ffmap/web/templates/router.html index 09bf87b..7d40a92 100644 --- a/ffmap/web/templates/router.html +++ b/ffmap/web/templates/router.html @@ -284,11 +284,11 @@