Development
This commit is contained in:
parent
fff0835553
commit
19be151c70
7 changed files with 230 additions and 31 deletions
|
|
@ -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():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue