fix(logs): redact sensitive payloads in storage and export
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user