
    @OOf
                         d dl Z d dl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 j                  e      Z G d d	      Zy)
    N)Sequence)ctx)
exceptions)
ModifySpec)parse_modify_spec)ALERTc                   2    e Zd ZddZd Zd Zd Zd Zd Zy)	
ModifyBodyNc                     g | _         y N)replacements)selfs    \/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/addons/modifybody.py__init__zModifyBody.__init__   s
    .0    c                 B    |j                  dt        t           g d       y )Nmodify_bodyz
            Replacement pattern of the form "[/flow-filter]/regex/[@]replacement", where
            the separator can be any character. The @ allows to provide a file path that
            is used to read the replacement string.
            )
add_optionr   str)r   loaders     r   loadzModifyBody.load   s"    SM			
r   c                    d|v rNg | _         t        j                  j                  D ]*  }	 t	        |d      }| j                   j                  |       , t        j                  j                  xr& t        j                  j                  xr
 d|v xs d|v }|rt        j                  t        d       y y # t
        $ r!}t        j                  d| d|       |d }~ww xY w)Nr   Tz Cannot parse modify_body option z: stream_large_bodieszZBoth modify_body and stream_large_bodies are active. Streamed bodies will not be modified.)r   r   optionsr   r   
ValueErrorr   OptionsErrorappendr   loggerlogr   )r   updatedoptionspecestream_and_modify_conflicts         r   	configurezModifyBody.configure   s    G# "D++11 /,VT:D !!((./ KK## O//O')M-Bg-M 	#
 &JJ8 & " $11:6("QCHs   B33	C<CCc                 p    |j                   s|j                  s|j                  sy | j                  |       y r   )responseerrorliverunr   flows     r   requestzModifyBody.request7   s#    ==DJJdiir   c                 X    |j                   s|j                  sy | j                  |       y r   )r(   r)   r*   r+   s     r   r'   zModifyBody.response<   s    ::TYYr   c                 4   | j                   D ]  }|j                  |      s	 |j                         }|j                  rUt        j                  |j                  ||j                  j                  t        j                        |j                  _
        t        j                  |j                  ||j                  j                  t        j                        |j                  _
         y # t        $ r#}t	        j
                  d|        Y d }~d }~ww xY w)Nz!Could not read replacement file: )flags)r   matchesread_replacementOSErrorloggingwarningr'   resubsubjectcontentDOTALLr-   )r   r,   r"   replacementr#   s        r   r*   zModifyBody.runA   s    %% 	D||D!"&"7"7"9K ==,.FF#-- ii	-DMM) ,.66k4<<3G3Gryy,DLL(	  OO&Gs$KLs   C++	D4DD)returnN)	__name__
__module____qualname__r   r   r%   r-   r'   r*    r   r   r
   r
      s     1

2

r   r
   )r4   r6   collections.abcr   	mitmproxyr   r   mitmproxy.addons.modifyheadersr   r   mitmproxy.logr   	getLoggerr=   r   r
   r@   r   r   <module>rF      s;     	 $    5 < 			8	$E Er   