
    @OOf0                         d dl Z d dlZ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 d dlmZ  ej                  e      Z G d	 d
      Z G d de      Zy)    N)BinaryIO)Optional)command)ctx)
exceptions)
flowfilter)ioc                       e Zd ZdZd Zd Zd ZdedefdZ	de
defd	Zd
e
ddfdZd Z ej                  d      defd       Zy)ReadFilez=
    An addon that handles reading from file on startup.
    c                      d | _         d | _        y N)filter
_read_taskselfs    Z/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/mitmproxy/addons/readfile.py__init__zReadFile.__init__   s    /3    c                     |j                  dt        t           d d       |j                  dt        t           d d       y )NrfilezRead flows from file.readfile_filterzRead only matching flows.)
add_optionr   str)r   loaders     r   loadzReadFile.load   s7    '8C=$8OPx}d4O	
r   c                    d|v rVt         j                  j                  r4	 t        j                  t         j                  j                        | _        y d | _        y y # t        $ r$}t        j                  t        |            |d }~ww xY w)Nr   )
r   optionsr   r   parser   
ValueErrorr   OptionsErrorr   )r   updatedes      r   	configurezReadFile.configure    sr    '{{**A","2"23;;3N3N"ODK # ( " A$11#a&9q@As   2A 	B	%BB	foreturnc                   K   d}t        j                  |      }	 |j                         D ]L  }| j                  r| j                  |      s!t        j
                  j                  |       d {    |dz  }N 	 |S 7 # t        t        j                  f$ rT}|rt        j                  d|z         nt        j                  d       t        j                  t        |            |d }~ww xY ww)Nr      z&Flow file corrupted - loaded %i flows.zFlow file corrupted.)r	   
FlowReaderstreamr   r   master	load_flowOSErrorr   FlowReadExceptionloggingwarningerrorr   )r   r$   cntfreaderflowr"   s         r   
load_flowszReadFile.load_flows*   s     --#	( ;;t{{4'8jj**4000q	 J 1556 	> H3 NO45..s1v6A=	>s<   C/AA? .A=/A? ;C/=A? ?C,AC''C,,C/pathc                 T  K   t         j                  j                  |      }	 t        |d      5 }| j	                  |       d {   cd d d        S 7 # 1 sw Y   y xY w# t
        $ r<}t        j                  d|        t        j                  t        |            |d }~ww xY ww)NrbzCannot load flows: )osr5   
expanduseropenr4   r,   r.   r0   r   r-   r   )r   r5   fr"   s       r   load_flows_from_pathzReadFile.load_flows_from_path<   s     ww!!$'	>dD! 0Q!__Q//0 0/0 0 	>MM/s34..s1v6A=	>s]    B(A  AAA	A  B(AAA  B(A   	B%)7B  B%%B(r   Nc                   K   	 | j                  |       d {    d | _        y 7 # t        j                  $ r=}t        j	                  dt
        j                  j                   d|        Y d }~Ud }~ww xY w# d | _        w xY ww)NzFailed to read z: )	r<   r   r-   logger	exceptionr   r   r   r   )r   r   r"   s      r   doreadzReadFile.doreadE   sw     	#++E222 #DO	 3++ 	Is{{/@/@.AA3GHH	I #DOsB   B' %' B' A73A2-A: 2A77A: :	BBc                     t         j                  j                  rBt        j                  | j                  t         j                  j                              | _        y y r   )r   r   r   asynciocreate_taskr@   r   r   s    r   runningzReadFile.runningM   s9    ;;%11$++ckk>O>O2PQDO r   zreadfile.readingc                 ,    t        | j                        S r   )boolr   r   s    r   readingzReadFile.readingQ   s    DOO$$r   )__name__
__module____qualname____doc__r   r   r#   r   intr4   r   r<   r@   rD   r   rF   rG    r   r   r   r      s|    4
#8  $>s >s >## #$ #R W__'(% % )%r   r   c                   ,     e Zd ZdZdedef fdZ xZS )ReadFileStdinz6Support the special case of "-" for reading from stdinr5   r%   c                    K   |dk(  r1| j                  t        j                  j                         d {   S t        |   |       d {   S 7 7 w)N-)r4   sysstdinbuffersuperr<   )r   r5   	__class__s     r   r<   z"ReadFileStdin.load_flows_from_pathY   sH     3; )9)9:::5d;;; ;;s!   2AAAAAA)rH   rI   rJ   rK   r   rL   r<   __classcell__)rV   s   @r   rO   rO   V   s    @<s <s < <r   rO   )rB   r.   os.pathr8   rR   typingr   r   	mitmproxyr   r   r   r   r	   	getLoggerrH   r>   r   rO   rM   r   r   <module>r\      sQ       
         			8	$B% B%J	<H 	<r   