mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	For some webhook endpoints where the third-party API requires us to do this, the user's API key might appear in error emails through appearing in the `QUERY_STRING` parameter. Fix that by filtering any actual content from those; what we usually need for debugging is just what set of parameters were provided.
		
			
				
	
	
		
			21 lines
		
	
	
		
			825 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			825 B
		
	
	
	
		
			Python
		
	
	
	
	
	
 | 
						|
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']
 | 
						|
 | 
						|
        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)
 |