Files
docker-mods-uptime-kuma-tim…/root/dashboard/swag-f2b.py
T
2022-03-19 14:51:51 +02:00

33 lines
1.0 KiB
Python

import json
import os
import sqlite3
def _get_f2b_data(db_path):
if not os.path.isfile(db_path):
return []
con = sqlite3.connect(db_path)
cur = con.cursor()
results = cur.execute("""
SELECT jails.name,
COUNT(bans.ip) AS bans,
(SELECT DISTINCT bans.ip from bans where jails.name = bans.jail ORDER BY timeofban DESC) as last_ban,
(SELECT DISTINCT bans.data from bans where jails.name = bans.jail ORDER BY timeofban DESC) as data
FROM jails
LEFT JOIN bans ON jails.name=bans.jail
GROUP BY jails.name
""").fetchall()
con.close()
return [{
"name": name,
"bans": bans,
"last_ban": last_ban,
"data": json.dumps(json.loads(data), indent=4, sort_keys=True) if data else None
} for (name, bans, last_ban, data) in results]
swag_f2b = _get_f2b_data("/config/fail2ban/fail2ban.sqlite3")
host_f2b = _get_f2b_data("/dashboard/fail2ban/fail2ban.sqlite3")
output = json.dumps(swag_f2b + host_f2b, sort_keys=True)
print(output)