o
    i                     @   s2  d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ eeZe	dZe
deeee eeef f ZG dd dee ZG dd dee ZG dd dee Z G dd deZ!dS )    )ABC)abstractmethod)Any)Callable)Generic)Optional)Sequence)TypeVar)Union)DEFAULT)
DDWaf_info)DDWaf_result)threading_Lock)
get_logger)PayloadTypeTNc                   @   L   e Zd Zdee deee gdf ddfddZdddZdefd	d
Z	dS )ddwaf_handle_capsulehandlefree_fnNreturnc                 C      || _ || _d S N)r   r   )selfr   r    r   S/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/appsec/_ddwaf/waf_stubs.py__init__      
zddwaf_handle_capsule.__init__c                 C   F   | j r!z| | j  W n ty   tjddd Y nw d | _ d S d S )NzFailed to free handleTexc_info)r   r   	TypeErrorLOGGERdebugr   r   r   r   __del__!      
zddwaf_handle_capsule.__del__c                 C   
   t | jS r   )boolr   r$   r   r   r   __bool__)      
zddwaf_handle_capsule.__bool__r   N
__name__
__module____qualname__typer   r   r   r%   r(   r)   r   r   r   r   r          (
r   c                   @   r   )ddwaf_context_capsulectxr   Nr   c                 C   s   || _ || _d| _t | _d S )N )r3   r   rc_productsr   _lock)r   r3   r   r   r   r   r   .   s   zddwaf_context_capsule.__init__c                 C   r   )NzFailed to free contextTr   )r3   r   r!   r"   r#   r$   r   r   r   r%   9   r&   zddwaf_context_capsule.__del__c                 C   r'   r   )r(   r3   r$   r   r   r   r)   A   r*   zddwaf_context_capsule.__bool__r+   r,   r   r   r   r   r2   -   s    (
r2   c                   @   r   )ddwaf_builder_capsulebuilderr   Nr   c                 C   r   r   )r8   r   )r   r8   r   r   r   r   r   F   r   zddwaf_builder_capsule.__init__c                 C   r   )NzFailed to free builderTr   )r8   r   r!   r"   r#   r$   r   r   r   r%   J   r&   zddwaf_builder_capsule.__del__c                 C   r'   r   )r(   r8   r$   r   r   r   r)   R   r*   zddwaf_builder_capsule.__bool__r+   r,   r   r   r   r   r7   E   r1   r7   c                   @   s   e Zd Zeedee fddZeedefddZ	ede
eeef  de
eeeef  defdd	Zedee fd
dZedejfdededee dedef
ddZedededededdf
ddZeedefddZdS )WAFr   c                 C      d S r   r   r$   r   r   r   required_dataW      zWAF.required_datac                 C   r:   r   r   r$   r   r   r   info\   r<   zWAF.inforemovalsupdatesc                 C   r:   r   r   )r   r>   r?   r   r   r   update_rulesa   s   zWAF.update_rulesc                 C   r:   r   r   r$   r   r   r   _at_request_startg   s   zWAF._at_request_startNr3   dataephemeral_data
timeout_msc                 C   r:   r   r   )r   r3   rB   rC   rD   r   r   r   runk      zWAF.runrules obfuscation_parameter_key_regexp"obfuscation_parameter_value_regexpmetricsc                 C   r:   r   r   )r   rG   rH   rI   rJ   r   r   r   r   u   rF   zWAF.__init__c                 C   r:   r   r   r$   r   r   r   initialized   r<   zWAF.initialized)r-   r.   r/   propertyr   liststrr;   r   r=   r   tupler   r(   r@   r   r2   rA   r   WAF_TIMEOUTDDWafRulesTypefloatr   rE   bytesr   r   rK   r   r   r   r   r9   V   s\    		r9   )"abcr   r   typingr   r   r   r   r   r	   r
   ddtrace.appsec._constantsr   ddtrace.appsec._utilsr   r   ddtrace.internal._unpatchedr   ddtrace.internal.loggerr   ddtrace.internal.remoteconfigr   r-   r"   r   intrN   rM   dictrQ   r   r2   r7   r9   r   r   r   r   <module>   s,    