
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \4  ã               @   sT   d dl Z d dlZd dlZddgZG dd„ deƒZG dd„ dƒZedkrPeeƒ ƒ dS )é    NÚnetrcÚNetrcParseErrorc               @   s   e Zd Zddd„Zdd„ ZdS )r   Nc             C   s"   || _ || _|| _tj| |ƒ d S )N)ÚfilenameÚlinenoÚmsgÚ	ExceptionÚ__init__)Úselfr   r   r   © r
   ú/usr/lib64/python3.6/netrc.pyr      s    zNetrcParseError.__init__c             C   s   d| j | j| jf S )Nz%s (%s, line %s))r   r   r   )r	   r
   r
   r   Ú__str__   s    zNetrcParseError.__str__)NN)Ú__name__Ú
__module__Ú__qualname__r   r   r
   r
   r
   r   r   
   s   
c               @   s.   e Zd Zd
dd„Zdd„ Zdd„ Zdd	„ ZdS )r   Nc             C   sx   |d k}|d krFyt jjt jd dƒ}W n tk
rD   tdƒ‚Y nX i | _i | _t|ƒ�}| j	|||ƒ W d Q R X d S )NÚHOMEz.netrcz'Could not find .netrc: $HOME is not set)
ÚosÚpathÚjoinÚenvironÚKeyErrorÚOSErrorÚhostsÚmacrosÚopenÚ_parse)r	   ÚfileÚdefault_netrcÚfpr
   r
   r   r      s    
znetrc.__init__c             C   sÈ  t j |ƒ}| jd7  _|jjddƒ|_�x˜|j}|jƒ  }}|sFP n¼|d dkrv|j|kr,t|ƒdkr,|jjƒ  q,nŒ|dkrˆ|jƒ }nz|dkr–d}nl|dkrð|jƒ }g | j	|< d	|_
x4|jjƒ }	|	 sÐ|	d
krØd|_
P | j	| j|	ƒ q¸W q,ntd| ||jƒ‚d}
d  }}i | j|< �x¤|jƒ }|jdƒ�s:|dk�r~|�r^|
||f| j|< |j|ƒ P ntd||t|ƒf ||jƒ‚�q|dk�s’|dk�rž|jƒ }
�q|dk�r´|jƒ }�q|dk�r¨tjdk�rž|�ržtj|jƒ ƒ}|jtjƒ k�r|dd l}y|j|jƒd }W n  tk
�r*   d|j }Y nX y|jtjƒ ƒd }W n" tk
�rd   dtjƒ  }Y nX td||f ||jƒ‚|jtjtjB @ �ržtd||jƒ‚|jƒ }ntd| ||jƒ‚�qW q,W d S )Nz !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ú#Ú r   é   ÚmachineÚdefaultÚmacdefz 	Ú
z 	
zbad toplevel token %rz&malformed %s entry %s terminated by %sÚloginÚuserÚaccountÚpasswordÚposixzuid %sz9~/.netrc file owner (%s) does not match current user (%s)zY~/.netrc access too permissive: access permissions must restrict access to only the ownerzbad follower token %r>   r   r"   r!   r#   )ÚshlexZ	wordcharsZ
commentersÚreplacer   Z	get_tokenÚlenZinstreamÚreadliner   Z
whitespaceÚappendr   r   Ú
startswithZ
push_tokenÚreprr   ÚnameÚfstatÚfilenoÚst_uidÚgetuidÚpwdÚgetpwuidr   Úst_modeÚstatÚS_IRWXGÚS_IRWXO)r	   r   r   r   ZlexerZsaved_linenoZtoplevelZttZ	entrynameÚliner%   r'   r(   Zpropr6   Zfownerr&   r
   r
   r   r   #   s�    












znetrc._parsec             C   s0   || j kr| j | S d| j kr(| j d S d S d S )Nr"   )r   )r	   Úhostr
   r
   r   Úauthenticatorst   s
    



znetrc.authenticatorsc             C   s¸   d}xf| j jƒ D ]X}| j | }|d|› d|d › d�7 }|d rT|d|d › d�7 }|d|d	 › d�7 }qW xF| jjƒ D ]8}|d
|› d�7 }x| j| D ]}||7 }q˜W |d7 }qxW |S )Nr   zmachine z
	login r   r$   r    z		account z
	password é   zmacdef )r   Úkeysr   )r	   Zrepr=   ZattrsZmacror<   r
   r
   r   Ú__repr__}   s    
znetrc.__repr__)N)r   r   r   r   r   r>   rA   r
   r
   r
   r   r      s   
Q	Ú__main__)	r   r*   r9   Ú__all__r   r   r   r   Úprintr
   r
   r
   r   Ú<module>   s
   w