3
l[                 @   s   d Z ddlmZ ddlmZ ddlmZ ddlmZmZm	Z	m
Z
 ddlmZ dd	lmZ dd
lZejdZG dd dZedd Zd
S )z
Infobot auth-ng
    )defaultdict   )tags)Tag)NUHActionAuthResTagTypeError   )init)ListNzauth-ngc               @   sX   e Zd Zdd ZeedddZeedddZeee	 dd	d
Z
eedddZdS )Authenticatorc             C   sl   || _ tt| _xD|jd j D ]2\}}tj|}x|jdD ]}| j	|| q>W q W t
jd| j  d S )NZ	user_tags,zSet up tags: )botr   list
_user_tagsconfigitemsr   	from_hostsplitadd_tagloggerinfo)selfr   nuhtaglstusertag r   '/opt/Infobot/plugins/auth_ng/auth_ng.py__init__   s    

zAuthenticator.__init__)r   tagdescc             C   sP   |j d^}}tt|j s*td| tt|j | }| j| j| d S )N:zInvalid tag type: )r   hasattrr   titler	   getattrr   append)r   r   r!   typeargsr   r   r   r   r      s
    zAuthenticator.add_tagc             C   sB   | j | }x(| j | D ]}t||kr|j| qW || j |< d S )N)r   reprremove)r   r   r!   Znew_tagsr   r   r   r   rm_tag"   s
    
zAuthenticator.rm_tag)nickreturnc             C   s*   x$| j j D ]\}}|j|kr|S qW g S )N)r   r   r,   )r   r,   r   r   r   r   r   tags_for_nick)   s    
zAuthenticator.tags_for_nick)actionr-   c             C   s   t j|}| jj|g }tjd|  x`|D ]X}|j| j|||}tjd| d|  |tj	krjtj	S |tj
krvq.|tjkr.tjS q.W tjd tjS )NzTrying auth for zTag z: zAuth failed.)r   r   r   getr   debugtry_authr   r   SUCCESSCONTINUEFAIL)r   r/   datahostr   r   r   Zauthresr   r   r   r2   /   s    






zAuthenticator.try_authN)__name__
__module____qualname__r    r   strr   r+   r   r   r.   r   r   r2   r   r   r   r   r      s
   r   c             C   s   t | | _d S )N)r   authmgr)r   r   r   r   plugin_initA   s    r=   )__doc__collectionsr    r   r   r6   r   r   r   r	   Zutil.decoratorsr   typingr   logging	getLoggerr   r   r=   r   r   r   r   <module>   s   
2