B ¿öY¼ã@sxdZddlmZddlZddlmZmZddlmZGdd„de ƒZ Gdd „d e ƒZ Gd d „d e ƒZ Gd d „d e ƒZ dS)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<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú ProcessorcCs ||_dS)N)Úclient)Úselfr©r úA/opt/alt/python37/lib/python3.7/site-packages/raven/processors.pyÚ__init__szProcessor.__init__cKsdS)Nr )rÚdataÚkwargsr r r Úget_dataszProcessor.get_datacKsŽ|j|f|Ž}|r|}d|krZd|dkrZx.|d dg¡D]}d|kr<| |d¡qsz,RemoveStackLocalsProcessor.filter_stacktraceN)rrrrrr r r r r;src @s^eZdZdZdZeddddddd d gƒZe d ¡Z d d „Z dd„Z dd„Z dd„Z dd„ZdS)ÚSanitizePasswordsProcessorz„ Asterisk out things that look like passwords, credit card numbers, and API keys in frames, http, and basic extra data. z********ÚpasswordZsecretÚpasswdZ authorizationZapi_keyZapikeyZ sentry_dsnZ access_tokenz^(?:\d[ -]*?){13,16}$cCsz|dkr dSt|tƒr(|j |¡r(|jS|s0|St|tƒrH| dd¡}nt|ƒ}| ¡}x|j D]}||kr`|jSq`W|S)Nzutf-8Úreplace) Ú isinstancerÚ VALUES_REÚmatchÚMASKÚbytesÚdecoderÚlowerÚFIELDS)rÚkeyrÚfieldr r r ÚsanitizeVs   z#SanitizePasswordsProcessor.sanitizecCs8x2| dg¡D]"}d|krqt|j|dƒ|d<qWdS)Nrr )rrr0)rr r!r r r rnsz,SanitizePasswordsProcessor.filter_stacktracecCs¢xœdD]”}||krqt||tƒrVd||krV|dkr}| d¡}t|ƒdkrD| |d|j|Žf¡q| |¡qW| dd„|Dƒ¡S)Nr4ércss|]}d |¡VqdS)r4N)Újoin)Ú.0Úkeyvalr r r ú •sz?SanitizePasswordsProcessor._sanitize_keyvals..)ÚsplitÚlenÚappendr0r<)rZkeyvalsr:Zsanitized_keyvalsr>r r r r8Œs  z,SanitizePasswordsProcessor._sanitize_keyvalsN)rrrrr)Ú frozensetr-ÚreÚcompiler'r0rrrr8r r r r r"Cs" r")rÚ __future__rrDZraven.utils.compatrrZ raven.utilsrÚobjectrrrr"r r r r Ús  $