diff --git a/ffmap/db/gws.py b/ffmap/db/gws.py index 1336595..59322ff 100755 --- a/ffmap/db/gws.py +++ b/ffmap/db/gws.py @@ -13,6 +13,7 @@ mysql.execute(""" `id` smallint(5) UNSIGNED NOT NULL, `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `stats_page` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, + `version` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `last_contact` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci """) diff --git a/ffmap/gwtools.py b/ffmap/gwtools.py index 6f8631a..49a92d1 100644 --- a/ffmap/gwtools.py +++ b/ffmap/gwtools.py @@ -16,17 +16,20 @@ def import_gw_data(mysql, gw_data): if "hostname" in gw_data and "netifs" in gw_data: time = utcnow().strftime('%Y-%m-%d %H:%M:%S') stats_page = gw_data.get("stats_page","") + version = gw_data.get("version","") # Make None if empty (gw_data.get() only checks for existing key) if not stats_page: stats_page = None + if not version: + version = None newid = mysql.findone("SELECT id FROM gw WHERE name = %s LIMIT 1",(gw_data["hostname"],),"id") if newid: mysql.execute(""" UPDATE gw - SET stats_page = %s, last_contact = %s + SET stats_page = %s, version = %s, last_contact = %s WHERE id = %s - """,(stats_page,time,newid,)) + """,(stats_page,version,time,newid,)) mysql.execute(""" UPDATE gw_netif SET ipv4 = NULL, ipv6 = NULL, dhcpstart = NULL, dhcpend = NULL @@ -34,9 +37,9 @@ def import_gw_data(mysql, gw_data): """,(newid,)) else: mysql.execute(""" - INSERT INTO gw (name, stats_page, last_contact) - VALUES (%s, %s, %s) - """,(gw_data["hostname"],stats_page,time,)) + INSERT INTO gw (name, stats_page, version, last_contact) + VALUES (%s, %s, %s, %s) + """,(gw_data["hostname"],stats_page,version,time,)) newid = mysql.cursor().lastrowid nmacs = {} diff --git a/ffmap/stattools.py b/ffmap/stattools.py index 41083ce..958e91d 100644 --- a/ffmap/stattools.py +++ b/ffmap/stattools.py @@ -250,7 +250,7 @@ def hoods_gws(mysql): def gateways(mysql): macs = mysql.fetchall(""" - SELECT router_gw.mac, gw.name, gw.id AS gw, gw_netif.netif + SELECT router_gw.mac, gw.name, gw.id AS gw, gw.version, gw_netif.netif FROM router INNER JOIN router_gw ON router.id = router_gw.router LEFT JOIN (gw_netif INNER JOIN gw ON gw_netif.gw = gw.id) @@ -279,7 +279,7 @@ def gateways(mysql): result = OrderedDict() for m in macs: if not m["gw"] in result: - result[m["gw"]] = {"name":m["name"],"macs":[],"selected":{},"others":{}} + result[m["gw"]] = {"name":m["name"],"version":m["version"],"macs":[],"selected":{},"others":{}} result[m["gw"]]["macs"].append(m["mac"]) for rs in selected: result[rs["gw"]]["selected"][rs["status"]] = rs["count"] @@ -394,7 +394,7 @@ def gws_info(mysql,selecthood=None): tup = () data = mysql.fetchdict(""" - SELECT router_gw.mac AS mac, gw.name AS gw, stats_page, n1.netif AS gwif, n2.netif AS batif, n2.mac AS batmac, n2.ipv4 AS ipv4, n2.ipv6 AS ipv6, n2.dhcpstart AS dhcpstart, n2.dhcpend AS dhcpend + SELECT router_gw.mac AS mac, gw.name AS gw, stats_page, version, n1.netif AS gwif, n2.netif AS batif, n2.mac AS batmac, n2.ipv4 AS ipv4, n2.ipv6 AS ipv6, n2.dhcpstart AS dhcpstart, n2.dhcpend AS dhcpend FROM router INNER JOIN router_gw ON router.id = router_gw.router LEFT JOIN ( diff --git a/ffmap/web/templates/gws.html b/ffmap/web/templates/gws.html index d637ef1..744d11a 100644 --- a/ffmap/web/templates/gws.html +++ b/ffmap/web/templates/gws.html @@ -67,7 +67,7 @@ {%- for gw, value in gws.items() %} -

{{ value["name"] }}

+

{{ value["name"] }}{%- if value["version"] %} ({{ value["version"] }}){%- endif %}

{{ value["selected"]["online"] or 0 }} / {{ value["others"]["online"] or 0 }} {{ value["selected"]["offline"] or 0 }} / {{ value["others"]["offline"] or 0 }} {{ value["selected"]["unknown"] or 0 }} / {{ value["others"]["unknown"] or 0 }} diff --git a/ffmap/web/templates/statistics.html b/ffmap/web/templates/statistics.html index 92f1ce1..58af96e 100644 --- a/ffmap/web/templates/statistics.html +++ b/ffmap/web/templates/statistics.html @@ -206,6 +206,7 @@ {%- for a in gws_admin %} Admin{{ a }} {%- endfor %} + gwinfo version{{ gws_info[selectgwint]["version"] if gws_info[selectgwint]["version"] else "< 1.4 or custom" }}