Development

This commit is contained in:
Matthew Grotke 2026-06-10 10:06:13 -04:00
parent fff0835553
commit 19be151c70
7 changed files with 230 additions and 31 deletions

View file

@ -6,7 +6,8 @@ from flask import session
APP_DIR = _os.path.dirname(_os.path.abspath(__file__))
CONFIGS_DIR = '/routlin_location'
WWW_DIR = '/www'
ACCOUNTS_FILE = f'{APP_DIR}/authorized_accounts.json'
ACCOUNTS_FILE = f'{CONFIGS_DIR}/.dashboard-accounts'
SESSIONS_DB = f'{CONFIGS_DIR}/.dashboard-sessions'
CONFIG_FILE = f'{CONFIGS_DIR}/config.json'
DASHBOARD_QUEUE = f'{CONFIGS_DIR}/.dashboard-queue'
DASHBOARD_DONE = f'{CONFIGS_DIR}/.dashboard-done'
@ -609,6 +610,72 @@ def revert_group_chain(group_uuid):
return errors, succeeded, failed
# Sessions DB =======================================================
def _open_sessions_db():
import sqlite3 as _sq, time as _t
con = _sq.connect(SESSIONS_DB, timeout=5)
con.execute('PRAGMA journal_mode=WAL')
con.executescript('''
CREATE TABLE IF NOT EXISTS sessions (
session_id TEXT PRIMARY KEY,
email TEXT NOT NULL,
access_level TEXT NOT NULL DEFAULT '',
logged_in_at INTEGER NOT NULL,
last_seen INTEGER NOT NULL
);
''')
con.commit()
return con
def record_session_login(session_id, email, access_level):
import time as _t
try:
con = _open_sessions_db()
now = int(_t.time())
con.execute(
'INSERT OR REPLACE INTO sessions(session_id, email, access_level, logged_in_at, last_seen) VALUES(?,?,?,?,?)',
(session_id, email, access_level, now, now)
)
con.commit()
con.close()
except Exception:
pass
def record_session_logout(session_id):
try:
con = _open_sessions_db()
con.execute('DELETE FROM sessions WHERE session_id=?', (session_id,))
con.commit()
con.close()
except Exception:
pass
def record_session_activity(session_id):
import time as _t
try:
con = _open_sessions_db()
con.execute('UPDATE sessions SET last_seen=? WHERE session_id=?', (int(_t.time()), session_id))
con.commit()
con.close()
except Exception:
pass
def get_active_sessions():
import time as _t
cutoff = int(_t.time()) - 31 * 86400
try:
con = _open_sessions_db()
rows = con.execute(
'SELECT email, access_level, logged_in_at, last_seen FROM sessions WHERE last_seen > ? ORDER BY last_seen DESC',
(cutoff,)
).fetchall()
con.close()
return rows
except Exception:
return []
# Misc ==============================================================
def run_apply():