fix(logs): redact sensitive payloads in storage and export

This commit is contained in:
kavore
2026-02-08 21:30:39 +03:00
parent 9a32cab718
commit 199c7797f5
2 changed files with 20 additions and 12 deletions
+11 -4
View File
@@ -364,11 +364,15 @@ async def export_logs_csv_handler(callback: types.CallbackQuery,
_("admin_csv_header_telegram_username"),
_("admin_csv_header_telegram_first_name"),
_("admin_csv_header_event_type"),
_("admin_csv_header_content"),
_("admin_csv_header_is_admin_event"),
_("admin_csv_header_target_user_id"),
_("admin_csv_header_raw_update_preview")
]
include_sensitive_fields = bool(settings.LOG_EXPORT_INCLUDE_SENSITIVE)
if include_sensitive_fields:
headers.extend([
_("admin_csv_header_content"),
_("admin_csv_header_raw_update_preview"),
])
csv_writer.writerow(headers)
# Write data rows
@@ -387,11 +391,14 @@ async def export_logs_csv_handler(callback: types.CallbackQuery,
log.telegram_username or '',
log.telegram_first_name or '',
log.event_type or '',
content_clean,
'Yes' if log.is_admin_event else 'No',
log.target_user_id or '',
raw_update_clean
]
if include_sensitive_fields:
row.extend([
content_clean,
raw_update_clean,
])
csv_writer.writerow(row)
# Create file
+9 -8
View File
@@ -40,13 +40,14 @@ class ActionLoggerMiddleware(BaseMiddleware):
is_admin_event_flag = True
raw_update_snippet = None
try:
raw_update_snippet = event.model_dump_json(exclude_none=True,
indent=None)[:1000]
except AttributeError:
raw_update_snippet = str(event)[:1000]
except Exception:
raw_update_snippet = str(event)[:1000]
if self.settings.LOG_STORE_RAW_UPDATES:
try:
raw_update_snippet = event.model_dump_json(exclude_none=True,
indent=None)[:1000]
except AttributeError:
raw_update_snippet = str(event)[:1000]
except Exception:
raw_update_snippet = str(event)[:1000]
current_event_type = event.event_type
@@ -83,7 +84,7 @@ class ActionLoggerMiddleware(BaseMiddleware):
"telegram_username": telegram_username,
"telegram_first_name": telegram_first_name,
"event_type": current_event_type,
"content": content[:1000] if content else "N/A",
"content": (content[:1000] if content else "N/A") if self.settings.LOG_STORE_MESSAGE_CONTENT else None,
"raw_update_preview": raw_update_snippet,
"is_admin_event": is_admin_event_flag,
"target_user_id": target_user_id_for_log,