
    z%iS7                        	 d dl Z d dlZd dlZd dlZ	 d dlZdZddgZ G d de      Z	dZ
dZd	Zd
Zeez   ZdZ G d d      Zer G d de      Zej%                  d       edk(  rd dlZ eej(                  d         Z eej/                                ej1                  ej(                  d          ej3                  ej(                  d          ej5                          ej7                         \  ZZ ededz         D ]<  ZejA                  e      \  Z!Z"Z# edez         e"D ]  Z$ ede$z            ed       > ejK                          yy# e$ r dZY @w xY w)    NTFPOP3error_protoc                       e Zd Zy)r   N)__name__
__module____qualname__     :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/poplib.pyr   r      s    r
   n   i        
i   c                       e Zd Z	 dZeej                  fdZd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd dZd Zd Zd Zd Zd Zd Zd Z ej<                  d      Zd Z d Z!d dZ"d Z#d Z$d dZ%y)!r   zUTF-8c                    || _         || _        d| _        t        j                  d| ||       | j                  |      | _        | j                  j                  d      | _        d| _	        | j                         | _        y )NFzpoplib.connectrbr   )hostport_tls_establishedsysaudit_create_socketsockmakefilefile
_debugging_getrespwelcome)selfr   r   timeouts       r   __init__zPOP3.__init__b   sg    		 %		"D$5''0	II&&t,	}}r
   c                 x    ||st        d      t        j                  | j                  | j                  f|      S )Nz0Non-blocking socket (timeout=0) is not supported)
ValueErrorsocketcreate_connectionr   r   )r   r   s     r   r   zPOP3._create_socketm   s6    wOPP''DII(>HHr
   c                     | j                   dkD  rt        dt        |             t        j                  d| |       | j
                  j                  |t        z          y )N   z*put*zpoplib.putline)r   printreprr   r   r   sendallCRLFr   lines     r   _putlinezPOP3._putliner   sB    ??QgtDz :		"D$/		$+&r
   c                     | j                   rt        dt        |             t        || j                        }| j                  |       y )Nz*cmd*)r   r'   r(   bytesencodingr-   r+   s     r   _putcmdzPOP3._putcmdz   s2    ??E'4:6T4==)dr
   c                 R   | j                   j                  t        dz         }t        |      t        kD  rt	        d      | j
                  dkD  rt        dt        |             |st	        d      t        |      }|dd  t        k(  r|d d |fS |d d t        k(  r|dd |fS |d d |fS )Nr&   zline too longz*get*z-ERR EOF)
r   readline_MAXLINElenr   r   r'   r(   r*   CR)r   r,   octetss      r   _getlinezPOP3._getline   s    yy!!(Q,/t9xo..??QgtDz :;z22T 99f$$8r>":v%%CRy&  r
   c                     | j                         \  }}| j                  dkD  rt        dt        |             |j	                  d      st        |      |S )Nr&   z*resp*   +)r:   r   r'   r(   
startswithr   )r   respos      r   r   zPOP3._getresp   sF    --/a??QhT
 ;t$d##r
   c                     | j                         }g }d}| j                         \  }}|dk7  rJ|j                  d      r
|dz
  }|dd  }||z   }|j                  |       | j                         \  }}|dk7  rJ|||fS )Nr      .s   ..r&   )r   r:   r=   append)r   r>   listr9   r,   r?   s         r   _getlongrespzPOP3._getlongresp   s    }}A6--/adlu%aCABxaZFKKmmoGD! dl T6!!r
   c                 D    | j                  |       | j                         S N)r1   r   r+   s     r   	_shortcmdzPOP3._shortcmd   s    T}}r
   c                 D    | j                  |       | j                         S rF   )r1   rD   r+   s     r   _longcmdzPOP3._longcmd   s    T  ""r
   c                     | j                   S rF   )r   r   s    r   
getwelcomezPOP3.getwelcome   s    ||r
   c                     || _         y rF   )r   )r   levels     r   set_debuglevelzPOP3.set_debuglevel   s	    r
   c                 ,    	 | j                  d|z        S )NzUSER %srG   r   users     r   rS   z	POP3.user   s    	 ~~i$.//r
   c                 ,    	 | j                  d|z        S )NzPASS %srQ   )r   pswds     r   pass_z
POP3.pass_   s    	 ~~i$.//r
   c                     	 | j                  d      }|j                         }| j                  rt        dt	        |             t        |d         }t        |d         }||fS )NSTATz*stat*r&      )rG   splitr   r'   r(   int)r   retvalretsnumMessagessizeMessagess        r   statz	POP3.stat   s[    	 '||~??E(DJ7$q'l47|\**r
   Nc                 R    	 || j                  d|z        S | j                  d      S )NzLIST %sLISTrG   rI   r   whichs     r   rC   z	POP3.list   s2    	 >>)e"344}}V$$r
   c                 ,    	 | j                  d|z        S )NzRETR %srI   rd   s     r   retrz	POP3.retr   s    	 }}Y.//r
   c                 ,    	 | j                  d|z        S )NzDELE %srQ   rd   s     r   delez	POP3.dele   s    	 ~~i%/00r
   c                 &    	 | j                  d      S )NNOOPrQ   rK   s    r   noopz	POP3.noop  s    	 ~~f%%r
   c                 &    	 | j                  d      S )NRSETrQ   rK   s    r   rsetz	POP3.rset  s    6~~f%%r
   c                 J    	 | j                  d      }| j                          |S )NQUIT)rG   close)r   r>   s     r   quitz	POP3.quit  s!    R~~f%

r
   c                    	 	 | j                   }d | _         ||j                          | j                  }d | _        |1	 |j                  t        j
                         |j                          y y # t        $ r8}|j                  t        j                  k7  rt        |dd      dk7  r Y d }~Nd }~ww xY w# |j                          w xY w# | j                  }d | _        |	 |j                  t        j
                         nD# t        $ r8}|j                  t        j                  k7  rt        |dd      dk7  r Y d }~nd }~ww xY w|j                          w # |j                          w xY ww xY w)Nwinerrorr   i&'  )
r   rs   r   shutdownr#   	SHUT_RDWROSErrorerrnoENOTCONNgetattr)r   r   r   excs       r   rs   z
POP3.close  s,   F	!99DDI

99DDI
!MM&"2"23 JJL     		U^^3"3
A6%? JJL 99DDI
!MM&"2"23  		U^^3"3
A6%? JJLDJJL  sp   %C A/ /	B08.B+&B3 +B00B3 3CE*C?>E?	E .D;6E;E  EE*E&&E*c                 ,    	 | j                  d|z        S )NzRPOP %srQ   rR   s     r   rpopz	POP3.rpop7  s    &~~i$.//r
   s   \+OK.[^<]*(<.*>)c                 0   	 t        || j                        }| j                  j                  | j                        }|st        d      dd l}|j                  d      |z   }|j                  |      j                         }| j                  d|d|      S )Nz!-ERR APOP not supported by serverr   r&   zAPOP  )r/   r0   	timestampmatchr   r   hashlibgroupmd5	hexdigestrG   )r   rS   passwordsecretmr   digests          r   apopz	POP3.apop>  s    		 x/NN  .ABBF"V$..0~~dF;<<r
   c                 2    	 | j                  d|d|      S )NzTOP r   rg   )r   re   howmuchs      r   topzPOP3.topS  s    	
 }}E7;<<r
   c                 R    	 || j                  d|z        S | j                  d      S )NzUIDL %sUIDLrc   rd   s     r   uidlz	POP3.uidl\  s2    	 >>)e"344}}V$$r
   c                 &    	 | j                  d      S )NUTF8rQ   rK   s    r   utf8z	POP3.utf8h  s    	~~f%%r
   c                     	 d }i }	 | j                  d      }|d   }|D ]  } ||      \  }}|||<    	 |S # t        $ r t        d      w xY w)Nc                 T    | j                  d      j                         }|d   |dd  fS )Nasciir   r&   )decoderZ   )r,   lsts     r   	_parsecapzPOP3.capa.<locals>._parsecap{  s-    ++g&,,.Cq63qr7?"r
   CAPAr&   z!-ERR CAPA not supported by server)rI   r   )r   r   capsr>   rawcapscaplinecapnmcapargss           r   capaz	POP3.capan  s|    		# 	C==(D1gG" &!*7!3w%U&
   	CABB	Cs	   -8 Ac                    	 t         st        d      | j                  rt        d      | j                         }d|vrt        d      |t	        j
                         }| j                  d      }|j                  | j                  | j                        | _        | j                  j                  d      | _        d| _        |S )Nz-ERR TLS support missing$-ERR TLS session already establishedSTLSz!-ERR STLS not supported by serverserver_hostnamer   T)HAVE_SSLr   r   r   ssl_create_stdlib_contextrG   wrap_socketr   r   r   r   )r   contextr   r>   s       r   stlsz	POP3.stls  s    	 899  DEEyy{~ABB?002G~~f%''		8<		 ( C	II&&t,	 $r
   rF   )&r   r   r   r0   	POP3_PORTr#   _GLOBAL_DEFAULT_TIMEOUTr    r   r-   r1   r:   r   rD   rG   rI   rL   rO   rS   rV   r`   rC   rh   rj   rm   rp   rt   rs   r   recompiler   r   r   r   r   r   r   r	   r
   r   r   r   3   s    )V H"+77	'I
'!*" # 00
+%01&&
!80
 

/0I=*=	%&:r
   c                   B    e Zd Z	 efej
                  dddZd ZddZy)POP3_SSLN)r   r   c                n    |t        j                         }|| _        t        j	                  | |||       y rF   )r   r   r   r   r    )r   r   r   r   r   s        r   r    zPOP3_SSL.__init__  s.    446"DLMM$dG4r
   c                     t         j                  | |      }| j                  j                  || j                        }|S )Nr   )r   r   r   r   r   )r   r   r   s      r   r   zPOP3_SSL._create_socket  s<    &&tW5D<<++D<@II , GDKr
   c                     	 t        d      )Nr   )r   )r   r   s     r   r   zPOP3_SSL.stls  s     DEEr
   rF   )	r   r   r   POP3_SSL_PORTr#   r   r    r   r   r	   r
   r   r   r     s,    		 '4 	5 & > >	5		Fr
   r   __main__r&   rY      zMessage %d:z   z-----------------------)&rz   r   r#   r   r   r   ImportError__all__	Exceptionr   r   r   r8   LFr*   r6   r   r   rB   r   argvar'   rL   rS   rV   rC   r`   numMsgs	totalSizerangeirh   headermsgr9   r,   rt   r	   r
   r   <module>r      s    	  
H -
  #) " 	  
	"u k k\ F4 F@ NN:zSXXa[A	!,,.FF388A;GGCHHQKFFH668Wi1gk" ) !q	fma  	 D%$,	 '() FFH [  Hs   E EE