<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    ¿öY¼  ã               @   sx   d Z ddlmZ ddlZddlmZmZ ddlmZ G dd„ de	ƒZ
G dd	„ d	e
ƒZG d
d„ de
ƒZG dd„ de
ƒZdS )z§
raven.core.processors
~~~~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
é    )Úabsolute_importN)Ústring_typesÚ	text_type)Úvarmapc               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú	Processorc             C   s
   || _ d S )N)Úclient)Úselfr   © r	   úA/opt/alt/python37/lib/python3.7/site-packages/raven/processors.pyÚ__init__   s    zProcessor.__init__c             K   s   d S )Nr	   )r   ÚdataÚkwargsr	   r	   r
   Úget_data   s    zProcessor.get_datac             K   sŽ   | j |f|Ž}|r|}d|krZd|d krZx.|d  dg ¡D ]}d|kr<|  |d ¡ q<W d|krp|  |d ¡ d|krŠ|  |d ¡|d< |S )NÚ	exceptionÚvaluesZ
stacktraceZrequestÚextra)r   ÚgetÚfilter_stacktraceÚfilter_httpÚfilter_extra)r   r   r   ZrespÚvaluer	   r	   r
   Úprocess   s    zProcessor.processc             C   s   d S )Nr	   )r   r   r	   r	   r
   r   *   s    zProcessor.filter_stacktracec             C   s   d S )Nr	   )r   r   r	   r	   r
   r   -   s    zProcessor.filter_httpc             C   s   |S )Nr	   )r   r   r	   r	   r
   r   0   s    zProcessor.filter_extraN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r	   r	   r	   r
   r      s   r   c               @   s   e Zd ZdZdd„ ZdS )ÚRemovePostDataProcessorzRemoves HTTP post data.c             K   s   |  dd ¡ d S )Nr   )Úpop)r   r   r   r	   r	   r
   r   7   s    z#RemovePostDataProcessor.filter_httpN)r   r   r   Ú__doc__r   r	   r	   r	   r
   r   4   s   r   c               @   s   e Zd ZdZdd„ ZdS )ÚRemoveStackLocalsProcessorz1Removes local context variables from stacktraces.c             K   s&   x |  dg ¡D ]}| dd ¡ qW d S )NÚframesÚvars)r   r   )r   r   r   Úframer	   r	   r
   r   >   s    z,RemoveStackLocalsProcessor.filter_stacktraceN)r   r   r   r   r   r	   r	   r	   r
   r   ;   s   r   c            	   @   s^   e Zd ZdZdZeddddddd	d
gƒZe d¡Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚSanitizePasswordsProcessorz„
    Asterisk out things that look like passwords, credit card numbers,
    and API keys in frames, http, and basic extra data.
    z********ÚpasswordZsecretÚpasswdZauthorizationZapi_keyZapikeyZ
sentry_dsnZaccess_tokenz^(?:\d[ -]*?){13,16}$c             C   sz   |d krd S t |tƒr(| j |¡r(| jS |s0|S t |tƒrH| dd¡}nt|ƒ}| ¡ }x| j	D ]}||kr`| jS q`W |S )Nzutf-8Úreplace)
Ú
isinstancer   Ú	VALUES_REÚmatchÚMASKÚbytesÚdecoder   ÚlowerÚFIELDS)r   Úkeyr   Úfieldr	   r	   r
   ÚsanitizeV   s    

z#SanitizePasswordsProcessor.sanitizec             C   s8   x2|  dg ¡D ]"}d|krqt| j|d ƒ|d< qW d S )Nr   r    )r   r   r0   )r   r   r!   r	   r	   r
   r   n   s    z,SanitizePasswordsProcessor.filter_stacktracec             C   s¢   xœdD ]”}||krqt || tƒrVd|| krV|dkr<d}nd}|  || |¡||< qt| j|| ƒ||< |dkrd|| kr|  || d d¡|| d< qW d S )N)r   ÚcookiesÚheadersÚenvZquery_stringú=r1   ú;ú&r2   ÚCookie)r&   r   Ú_sanitize_keyvalsr   r0   )r   r   ÚnÚ	delimiterr	   r	   r
   r   t   s    
z&SanitizePasswordsProcessor.filter_httpc             C   s   t | j|ƒS )N)r   r0   )r   r   r	   r	   r
   r   ‰   s    z'SanitizePasswordsProcessor.filter_extrac             C   sf   g }xL|  |¡D ]>}|  d¡}t|ƒdkrD| |d | j|Ž f¡ q| |¡ qW | dd„ |D ƒ¡S )Nr4   é   r   c             s   s   | ]}d   |¡V  qdS )r4   N)Újoin)Ú.0Úkeyvalr	   r	   r
   ú	<genexpr>•   s    z?SanitizePasswordsProcessor._sanitize_keyvals.<locals>.<genexpr>)ÚsplitÚlenÚappendr0   r<   )r   Zkeyvalsr:   Zsanitized_keyvalsr>   r	   r	   r
   r8   Œ   s    
z,SanitizePasswordsProcessor._sanitize_keyvalsN)r   r   r   r   r)   Ú	frozensetr-   ÚreÚcompiler'   r0   r   r   r   r8   r	   r	   r	   r
   r"   C   s"   
r"   )r   Ú
__future__r   rD   Zraven.utils.compatr   r   Zraven.utilsr   Úobjectr   r   r   r"   r	   r	   r	   r
   Ú<module>   s   $