forked from username/flaskpaste
feat: add observability and CLI enhancements
Audit logging: - audit_log table with event tracking - app/audit.py module with log_event(), query_audit_log() - GET /audit endpoint (admin only) - configurable retention and cleanup Prometheus metrics: - app/metrics.py with custom counters - paste create/access/delete, rate limit, PoW, dedup metrics - instrumentation in API routes CLI clipboard integration: - fpaste create -C/--clipboard (read from clipboard) - fpaste create --copy-url (copy result URL) - fpaste get -c/--copy (copy content) - cross-platform: xclip, xsel, pbcopy, wl-copy Shell completions: - completions/ directory with bash/zsh/fish scripts - fpaste completion --shell command
This commit is contained in:
@@ -13,11 +13,13 @@ _cleanup_times: dict[str, float] = {
|
||||
"pastes": 0.0,
|
||||
"hashes": 0.0,
|
||||
"rate_limits": 0.0,
|
||||
"audit": 0.0,
|
||||
}
|
||||
_CLEANUP_INTERVALS = {
|
||||
"pastes": 3600, # 1 hour
|
||||
"hashes": 900, # 15 minutes
|
||||
"rate_limits": 300, # 5 minutes
|
||||
"audit": 86400, # 24 hours
|
||||
}
|
||||
|
||||
|
||||
@@ -61,5 +63,15 @@ def run_scheduled_cleanup():
|
||||
if count > 0:
|
||||
current_app.logger.info(f"Cleaned up {count} rate limit entries")
|
||||
|
||||
# Cleanup old audit logs
|
||||
if now - _cleanup_times["audit"] >= _CLEANUP_INTERVALS["audit"]:
|
||||
_cleanup_times["audit"] = now
|
||||
if current_app.config.get("AUDIT_ENABLED", True):
|
||||
from app.audit import cleanup_old_audit_logs
|
||||
|
||||
count = cleanup_old_audit_logs()
|
||||
if count > 0:
|
||||
current_app.logger.info(f"Cleaned up {count} old audit log entries")
|
||||
|
||||
|
||||
from app.api import routes # noqa: E402, F401
|
||||
|
||||
Reference in New Issue
Block a user