<!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%                 @   s   d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlZddlmZ ddlmZ eeZG d	d
 d
e
ZG dd deZdS )z
raven.contrib.zope
~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2013 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
    )absolute_import)getouterframescurrentframegetinnerframes)SentryHandler)FactoryN)nobody)iter_stack_framesc               @   s$   e Zd Zdd Zdd Zdd ZdS )ZopeSentryHandlerFactoryc             C   s   | j jS )N)sectionlevel)self r   L/opt/alt/python37/lib/python3.7/site-packages/raven/contrib/zope/__init__.pygetLevel   s    z!ZopeSentryHandlerFactory.getLevelc             C   s   t f | jjS )N)ZopeSentryHandlerr   __dict__)r   r   r   r   create   s    zZopeSentryHandlerFactory.createc             C   s   t |  || _d S )N)r   __init__r   )r   r   r   r   r   r      s    
z!ZopeSentryHandlerFactory.__init__N)__name__
__module____qualname__r   r   r   r   r   r   r   r
      s   r
   c                   s4   e Zd ZdZ fddZdd Z fddZ  ZS )r   z
    Zope unfortunately eats the stack trace information.
    To get the stack trace information and other useful information
    from the request object, this class looks into the different stack
    frames when the emit method is invoked.
    c                s.   t t| j|| |dtj}| | d S )Nr   )superr   r   getloggingERRORsetLevel)r   argskwr   )	__class__r   r   r   *   s    zZopeSentryHandler.__init__c             C   s   |j dkp|j d S )Nraven)zsentry.errorszraven.)name
startswith)r   recordr   r   r   
can_record/   s    
zZopeSentryHandler.can_recordc          	      s  |j tjkr| |rd }d }xtt D ]}|d }|s|jdd }|s|jdd }yt|dd }W n t	k
r   d }Y nX |s|jdd }t
|dsd }|r.|r.P q.W |r||_tt|d |_|ry|j }|jd |j }|j| t|j| |j|jdd|d	}	d
|	d krZd|	d krZ|	d d
 |	d d< d|	d krx|	d d |	d< t|d|	 |dd }
|
d k	r|
tkr|
 |
dpdd}ni }t|d| W n( ttfk
r   tjddd Y nX tt | !|S )Nr   requestr   exc_info__getitem__   ZREMOTE_ADDR )headersurlmethodhostdataZHTTP_USER_AGENTr*   z
User-AgentZQUERY_STRINGZquery_stringZAUTHENTICATED_USERemail)idr/   userz#Could not extract data from requestT)r&   )"levelnor   r   r$   r   r   f_localsr   getattrRuntimeErrorhasattrr&   r	   r   stackstdintellseekreaddictenvironZgetURLr,   setattrr   ZgetIdgetPropertyAttributeErrorKeyErrorloggerwarningr   r   emit)r   r#   r%   r&   Z
frame_infoframeviewZbody_posbodyhttpr1   Z	user_dict)r   r   r   rD   5   s`    



zZopeSentryHandler.emit)r   r   r   __doc__r   r$   rD   __classcell__r   r   )r   r   r   "   s   r   )rI   
__future__r   inspectr   r   r   Zraven.handlers.loggingr   Z!ZConfig.components.logger.factoryr   r   ZAccessControl.usersr   Zraven.utils.stacksr	   	getLoggerr   rB   r
   r   r   r   r   r   <module>   s   
