27 lines
629 B
Python
27 lines
629 B
Python
#!/usr/bin/env python3
|
|
"""Read ban timing from fail2ban SQLite — called via sudo by www-data."""
|
|
import sqlite3, sys, os
|
|
|
|
if len(sys.argv) < 3:
|
|
sys.exit(1)
|
|
|
|
jail = sys.argv[1]
|
|
ip = sys.argv[2]
|
|
db = '/var/lib/fail2ban/fail2ban.sqlite3'
|
|
|
|
if not os.path.isfile(db):
|
|
sys.exit(1)
|
|
|
|
try:
|
|
conn = sqlite3.connect(f'file:{db}?mode=ro', uri=True)
|
|
cur = conn.execute(
|
|
'SELECT timeofban, bantime FROM bans WHERE jail=? AND ip=? ORDER BY timeofban DESC LIMIT 1',
|
|
(jail, ip)
|
|
)
|
|
row = cur.fetchone()
|
|
conn.close()
|
|
if row:
|
|
print(f'{row[0]}|{row[1]}')
|
|
except Exception:
|
|
sys.exit(1)
|