statistics.html/gws.html: Show gwinfo version of gateways

This requires changes to the MySQL database!

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
Adrian Schmutzler 2018-11-23 16:35:47 +01:00
parent 0bdb90d020
commit f26f01f73c
5 changed files with 14 additions and 9 deletions

View File

@ -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
""")

View File

@ -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 = {}

View File

@ -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 (

View File

@ -67,7 +67,7 @@
<tbody>
{%- for gw, value in gws.items() %}
<tr>
<td class="firstrow"><p style="margin:0">{{ value["name"] }}</p></td>
<td class="firstrow"><p style="margin:0">{{ value["name"] }}{%- if value["version"] %} <span style="font-size:12px">({{ value["version"] }})</span>{%- endif %}</p></td>
<td class="success" data-order="{{ (value["selected"]["online"] or 0) + (value["others"]["online"] or 0) }}"><span style="font-weight:bold">{{ value["selected"]["online"] or 0 }}</span> / {{ value["others"]["online"] or 0 }}</td>
<td class="danger" data-order="{{ (value["selected"]["offline"] or 0) + (value["others"]["offline"] or 0) }}"><span style="font-weight:bold">{{ value["selected"]["offline"] or 0 }}</span> / {{ value["others"]["offline"] or 0 }}</td>
<td class="warning" data-order="{{ (value["selected"]["unknown"] or 0) + (value["others"]["unknown"] or 0) }}"><span style="font-weight:bold">{{ value["selected"]["unknown"] or 0 }}</span> / {{ value["others"]["unknown"] or 0 }}</td>

View File

@ -206,6 +206,7 @@
{%- for a in gws_admin %}
<tr><th>Admin</th><td>{{ a }}</td></tr>
{%- endfor %}
<tr><th>gwinfo version</th><td>{{ gws_info[selectgwint]["version"] if gws_info[selectgwint]["version"] else "< 1.4 or custom" }}</td></tr>
</table>
</div>
</div>