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:
parent
0bdb90d020
commit
f26f01f73c
|
@ -13,6 +13,7 @@ mysql.execute("""
|
||||||
`id` smallint(5) UNSIGNED NOT NULL,
|
`id` smallint(5) UNSIGNED NOT NULL,
|
||||||
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
|
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
|
||||||
`stats_page` varchar(200) COLLATE utf8_unicode_ci DEFAULT 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
|
`last_contact` datetime NOT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
|
||||||
""")
|
""")
|
||||||
|
|
|
@ -16,17 +16,20 @@ def import_gw_data(mysql, gw_data):
|
||||||
if "hostname" in gw_data and "netifs" in gw_data:
|
if "hostname" in gw_data and "netifs" in gw_data:
|
||||||
time = utcnow().strftime('%Y-%m-%d %H:%M:%S')
|
time = utcnow().strftime('%Y-%m-%d %H:%M:%S')
|
||||||
stats_page = gw_data.get("stats_page","")
|
stats_page = gw_data.get("stats_page","")
|
||||||
|
version = gw_data.get("version","")
|
||||||
|
|
||||||
# Make None if empty (gw_data.get() only checks for existing key)
|
# Make None if empty (gw_data.get() only checks for existing key)
|
||||||
if not stats_page:
|
if not stats_page:
|
||||||
stats_page = None
|
stats_page = None
|
||||||
|
if not version:
|
||||||
|
version = None
|
||||||
newid = mysql.findone("SELECT id FROM gw WHERE name = %s LIMIT 1",(gw_data["hostname"],),"id")
|
newid = mysql.findone("SELECT id FROM gw WHERE name = %s LIMIT 1",(gw_data["hostname"],),"id")
|
||||||
if newid:
|
if newid:
|
||||||
mysql.execute("""
|
mysql.execute("""
|
||||||
UPDATE gw
|
UPDATE gw
|
||||||
SET stats_page = %s, last_contact = %s
|
SET stats_page = %s, version = %s, last_contact = %s
|
||||||
WHERE id = %s
|
WHERE id = %s
|
||||||
""",(stats_page,time,newid,))
|
""",(stats_page,version,time,newid,))
|
||||||
mysql.execute("""
|
mysql.execute("""
|
||||||
UPDATE gw_netif
|
UPDATE gw_netif
|
||||||
SET ipv4 = NULL, ipv6 = NULL, dhcpstart = NULL, dhcpend = NULL
|
SET ipv4 = NULL, ipv6 = NULL, dhcpstart = NULL, dhcpend = NULL
|
||||||
|
@ -34,9 +37,9 @@ def import_gw_data(mysql, gw_data):
|
||||||
""",(newid,))
|
""",(newid,))
|
||||||
else:
|
else:
|
||||||
mysql.execute("""
|
mysql.execute("""
|
||||||
INSERT INTO gw (name, stats_page, last_contact)
|
INSERT INTO gw (name, stats_page, version, last_contact)
|
||||||
VALUES (%s, %s, %s)
|
VALUES (%s, %s, %s, %s)
|
||||||
""",(gw_data["hostname"],stats_page,time,))
|
""",(gw_data["hostname"],stats_page,version,time,))
|
||||||
newid = mysql.cursor().lastrowid
|
newid = mysql.cursor().lastrowid
|
||||||
|
|
||||||
nmacs = {}
|
nmacs = {}
|
||||||
|
|
|
@ -250,7 +250,7 @@ def hoods_gws(mysql):
|
||||||
|
|
||||||
def gateways(mysql):
|
def gateways(mysql):
|
||||||
macs = mysql.fetchall("""
|
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
|
FROM router
|
||||||
INNER JOIN router_gw ON router.id = router_gw.router
|
INNER JOIN router_gw ON router.id = router_gw.router
|
||||||
LEFT JOIN (gw_netif INNER JOIN gw ON gw_netif.gw = gw.id)
|
LEFT JOIN (gw_netif INNER JOIN gw ON gw_netif.gw = gw.id)
|
||||||
|
@ -279,7 +279,7 @@ def gateways(mysql):
|
||||||
result = OrderedDict()
|
result = OrderedDict()
|
||||||
for m in macs:
|
for m in macs:
|
||||||
if not m["gw"] in result:
|
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"])
|
result[m["gw"]]["macs"].append(m["mac"])
|
||||||
for rs in selected:
|
for rs in selected:
|
||||||
result[rs["gw"]]["selected"][rs["status"]] = rs["count"]
|
result[rs["gw"]]["selected"][rs["status"]] = rs["count"]
|
||||||
|
@ -394,7 +394,7 @@ def gws_info(mysql,selecthood=None):
|
||||||
tup = ()
|
tup = ()
|
||||||
|
|
||||||
data = mysql.fetchdict("""
|
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
|
FROM router
|
||||||
INNER JOIN router_gw ON router.id = router_gw.router
|
INNER JOIN router_gw ON router.id = router_gw.router
|
||||||
LEFT JOIN (
|
LEFT JOIN (
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
{%- for gw, value in gws.items() %}
|
{%- for gw, value in gws.items() %}
|
||||||
<tr>
|
<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="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="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>
|
<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>
|
||||||
|
|
|
@ -206,6 +206,7 @@
|
||||||
{%- for a in gws_admin %}
|
{%- for a in gws_admin %}
|
||||||
<tr><th>Admin</th><td>{{ a }}</td></tr>
|
<tr><th>Admin</th><td>{{ a }}</td></tr>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
|
<tr><th>gwinfo version</th><td>{{ gws_info[selectgwint]["version"] if gws_info[selectgwint]["version"] else "< 1.4 or custom" }}</td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue