3 \4�@sTddlZddlZddlZddgZGdd�de�ZGdd�d�ZedkrPee��dS)�N�netrc�NetrcParseErrorc@seZdZddd�Zdd�ZdS)rNcCs"||_||_||_tj||�dS)N)�filename�lineno�msg� Exception�__init__)�selfrrr�r �/usr/lib64/python3.6/netrc.pyr szNetrcParseError.__init__cCsd|j|j|jfS)Nz%s (%s, line %s))rrr)r r r r �__str__szNetrcParseError.__str__)NN)�__name__� __module__� __qualname__rr r r r r r s c@s.eZdZd dd�Zdd�Zdd�Zdd �ZdS) rNcCsx|dk}|dkrFytjjtjdd�}Wntk rDtd��YnXi|_i|_t|��}|j |||�WdQRXdS)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 rs znetrc.__init__cCs�tj|�}|jd7_|jjdd�|_�x�|j}|j�}}|sFPn�|ddkrv|j|kr,t|�dkr,|jj�q,n�|dkr�|j�}nz|dkr�d}nl|dkr�|j�}g|j |<d |_ x4|jj�} | s�| d kr�d |_ P|j |j | �q�Wq,nt d |||j��d} d} } i|j |<�x�|j�}|jd��s:|dk�r~| �r^| | | f|j |<|j|�Pnt d ||t|�f||j���q|dk�s�|dk�r�|j�} �q|dk�r�|j�} �q|dk�r�tjdk�r�|�r�tj|j��} | jtj�k�r|ddl}y|j| j�d}Wn tk �r*d| j}YnXy|jtj��d}Wn"tk �rddtj�}YnXt d||f||j��| jtjtjB@�r�t d||j��|j�} nt d|||j���qWq,WdS)Nz !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~�#�r��machine�default�macdefz � z zbad toplevel token %rz&malformed %s entry %s terminated by %s�login�user�account�password�posixzuid %sz9~/.netrc file owner (%s) does not match current user (%s)zY~/.netrc access too permissive: access permissions must restrict access to only the ownerzbad follower token %r>rr"r#r!)�shlexZ wordcharsZ commenters�replacerZ get_token�lenZinstream�readlinerZ whitespace�appendrr� startswithZ push_token�reprr�name�fstat�fileno�st_uid�getuid�pwd�getpwuidr�st_mode�stat�S_IRWXG�S_IRWXO)r rrrZlexerZ saved_linenoZtoplevelZttZ entryname�liner%r'r(Zpropr6Zfownerr&r r r r#s�                  z netrc._parsecCs0||jkr|j|Sd|jkr(|jdSdSdS)Nr")r)r �hostr r r �authenticatorsts     znetrc.authenticatorscCs�d}xf|jj�D]X}|j|}|d|�d|d�d�7}|drT|d|d�d�7}|d|d �d�7}qWxF|jj�D]8}|d |�d�7}x|j|D] }||7}q�W|d7}qxW|S) Nrzmachine z login rr$r z account z password �zmacdef )r�keysr)r Zrepr=ZattrsZmacror<r r r �__repr__}s   znetrc.__repr__)N)r rrrrr>rAr r r r rs Q �__main__) rr*r9�__all__rrrr �printr r r r �s  w