import re from typing import Any, Dict from django.http import HttpRequest from django.views.debug import SafeExceptionReporterFilter class ZulipExceptionReporterFilter(SafeExceptionReporterFilter): def get_post_parameters(self, request: HttpRequest) -> Dict[str, Any]: filtered_post = SafeExceptionReporterFilter.get_post_parameters(self, request).copy() filtered_vars = ['content', 'secret', 'password', 'key', 'api-key', 'subject', 'stream', 'subscriptions', 'to', 'csrfmiddlewaretoken', 'api_key', 'realm_counts', 'installation_counts'] for var in filtered_vars: if var in filtered_post: filtered_post[var] = '**********' return filtered_post def clean_data_from_query_parameters(val: str) -> str: return re.sub(r"([a-z_-]+=)([^&]+)([&]|$)", r"\1******\3", val)