
    z%i
                         	 d dl Z d dlZddgZ G d de      Z G d d      Z G d d      Zedk(  r e e              yy)	    NnetrcNetrcParseErrorc                       e Zd Z	 ddZd Zy)r   Nc                 Z    || _         || _        || _        t        j	                  | |       y N)filenamelinenomsg	Exception__init__)selfr
   r   r	   s       9/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/netrc.pyr   zNetrcParseError.__init__   s'     4%    c                 T    | j                   d| j                  d| j                  dS )Nz (z, line ))r
   r   r	   )r   s    r   __str__zNetrcParseError.__str__   s    %)XXt}}dkkJJr   )NN)__name__
__module____qualname__r   r    r   r   r   r   
   s    ?&Kr   c                   $    e Zd Zd Zd Zd Zd Zy)	_netrclexc                 <    d| _         || _        d| _        g | _        y )N   z
	 )r	   instream
whitespacepushback)r   fps     r   r   z_netrclex.__init__   s    #r   c                 p    | j                   j                  d      }|dk(  r| xj                  dz  c_        |S )Nr   
)r   readr	   )r   chs     r   
_read_charz_netrclex._read_char   s0    ]]":KK1K	r   c                    | j                   r| j                   j                  d      S d}t        | j                  d      }|D ]  }|| j                  v r|dk(  r-|D ]'  }|dk(  r|c c S |dk(  r| j                         }||z  }) D|dk(  r| j                         }||z  }|D ]0  }|| j                  v r|c c S |dk(  r| j                         }||z  }2  |S )Nr    "\)r   popiterr#   r   )r   tokenfiterr"   s       r   	get_tokenz_netrclex.get_token#   s    ====$$Q''T__b) 	 BT__$Sy  BSy$t!__.RKE  :*B  BT__,$t!__.RKE 	 ( r   c                 :    | j                   j                  |       y r   )r   append)r   r*   s     r   
push_tokenz_netrclex.push_token>   s    U#r   N)r   r   r   r   r#   r,   r/   r   r   r   r   r      s    6$r   r   c                   ,    e Zd ZddZd Zd Zd Zd Zy)r   Nc                    |d u }|=t         j                  j                  t         j                  j                  d      d      }i | _        i | _        	 t        |d      5 }| j                  |||       d d d        y # 1 sw Y   y xY w# t        $ r9 t        |d      5 }| j                  |||       d d d        Y y # 1 sw Y   Y y xY ww xY w)N~z.netrczutf-8)encodinglocale)	ospathjoin
expanduserhostsmacrosopen_parseUnicodeDecodeError)r   filedefault_netrcr   s       r   r   znetrc.__init__C   s    <77<< 2 23 7BD
	5dW- 5D"m45 5 5! 	5dX. 5"D"m45 5 5	5sH   B	  A=4B	 =BB	 B	 	CB=3C=C	CCc                    t        |      }	 |j                  }|j                         x}}|sy |d   dk(  r8|j                  |k(  r(t        |      dk(  r|j                  j                          b|dk(  r|j                         }n|dk(  rd}n|dk(  ry|j                         }g | j                  |<   	 |j                  j                         }	|	st        d||j                        |	dk(  rn| j                  |   j                  |	       Xt        d	|z  ||j                        |st        d
|z  ||j                        dx}
x}}i | j                  |<   	 |j                  }|j                         }|j                  d      r*|j                  |k(  r|j                  j                          X|dv r$|
||f| j                  |<   |j                  |       nb|dk(  s|dk(  r|j                         }
nF|dk(  r|j                         }n0|dk(  r|j                         }nt        d|z  ||j                        | j                  ||| j                  |   d          O)Nr   r   #machinedefaultmacdefz.Macro definition missing null line terminator.r    zbad toplevel token %rzmissing %r namer%   >   r%   rD   rC   rB   loginuseraccountpasswordzbad follower token %r)r   r	   r,   lenr   readliner:   r   r.   r9   
startswithr/   _security_check)r   r>   r   r?   lexersaved_linenotopleveltt	entrynamelinerE   rG   rH   prev_linenos                 r   r<   znetrc._parseP   s[   " <<L!OO--HrA#<<</CGqLNN++-y!OO-	y%	x!OO-	)+I& >>224D-L %,,0 0 t| KK	*11$7  %+b0$F F %&7"&<dELLQQ *,+E+Gh$&DJJy!#ll__&==%||{2//1==-2GX,FDJJy)$$R(7]bFl!OO-E9_#oo/G:%$0H)*AB*F*.> >% (   ]DJJy4I!4LMy r   c                 x   t         j                  dk(  r|r|dk7  rt        j                  |j                               }|j                  t        j
                         k7  r\dd l}	 |j                  |j                        d   }	 |j                  t        j
                               d   }t        d| d| d      |j                  t        j                  t        j                  z  z  rt        d      y y y y # t        $ r d|j                  z  }Y w xY w# t        $ r dt        j
                         z  }Y w xY w)	Nposix	anonymousr   zuid %sz~/.netrc file owner (z, z) does not match current userzY~/.netrc access too permissive: access permissions must restrict access to only the owner)r5   namefstatfilenost_uidgetuidpwdgetpwuidKeyErrorr   st_modestatS_IRWXGS_IRWXO)r   r   r?   rE   propr\   fownerrF   s           r   rL   znetrc._security_check   s   77g-E[4H88BIIK(D{{biik)4 \\$++6q9F2<<		4Q7D &,VHBtf =% %' ' t|| ;<%!" " = 5I-   4%3F4   2#biik1D2s$   $C8 &D 8DD D98D9c                 z    	 || j                   v r| j                   |   S d| j                   v r| j                   d   S y )NrC   )r9   )r   hosts     r   authenticatorsznetrc.authenticators   s>    F4::::d##$**$::i((r   c                 L   	 d}| j                   j                         D ]=  }| j                   |   }|d| d|d    dz  }|d   r|d|d    dz  }|d|d	    dz  }? | j                  j                         D ])  }|d
| dz  }| j                  |   D ]  }||z  }	 |dz  }+ |S )Nr%   zmachine z
	login r   r    r   z		account z
	password    zmacdef )r9   keysr:   )r   reprf   attrsmacrorR   s         r   __repr__znetrc.__repr__   s    AJJOO% 	.DJJt$EXdV:eAhZr::CQxE!H:R00[q
"--C	. [[%%' 	EWUG2&&CE* t4KC		
 
r   r   )r   r   r   r   r<   rL   rg   rn   r   r   r   r   r   B   s    5>N@",r   __main__)	r5   r`   __all__r   r   r   r   r   printr   r   r   <module>rr      sV    3 %
&	Ki 	K)$ )$X{ {z z	%'N r   