3
Z;                 @   s   d dl Z d dlZd dlZejejejd d dlmZ d dlZd dl	Z	d dl
Z
d dlT G dd deZy(e
jZe
jZe
jZe
jZe
jZe
jZW n, ek
r   e Z ZZe Z ZZY nX G dd dZdS )	    N)Zdomain	localedir)Gtk)*c               @   s   e Zd ZdS )_NoneN)__name__
__module____qualname__ r	   r	   )/usr/share/system-config-printer/pysmb.pyr   "   s   r   c               @   s8   e Zd ZdddZdd Zdd Zdd	d
Zdd ZdS )AuthContextN c             C   s@   d| _ d| _d| _d| _d| _|| _|| _|| _d| _|| _	d S )Nr   F)
passes
has_failedauth_calledtried_guestcanceluse_useruse_passworduse_workgroupdialog_shownparent)selfr   	workgroupuserZpasswdr	   r	   r
   __init__1   s    zAuthContext.__init__c             C   s  |  j d7  _ | j dkrdS | js&dS td| j   | jsLtd d| _dS d| _| jr~| j r~d| _d| _d| _td	 dS d| _| jrt	j
| jddt	jjt	jjd
}|jtd |jdtd d td  |j  |j  t	jtd| jdd}|jt	jt	jjt	jt	jj |jt	jj |jd |jd t	jj dd}|jd t	j! }|j"t	j#t	j$j% |j&|ddd t	j'dd}t	j(dtd| j)  d d}|j*d |j+dd |j,d |j&|ddd t	j- }|j.d |j/d |j0t	j(tdddddd t	j1 }|j0|dddd |j0t	j(tdddddd t	j1 }|j0|dddd |j0t	j(tdddddd t	j1 }	|	j2d |	j3d |j0|	dddd |j&|ddd |j&|ddd |j4j&|ddd d| _|j5  |j6  | jdkr"t7j8t9j: d | _td| j  |j;| j |j;| j< |j=d |j }
|
t	jjkrld| _|j  dS |j> | _|	j> | _|j> | _<|j  dS )N   r   zpysmb: authentication pass: %dz!pysmb: auth callback not called?!TFZguestr   zpysmb: try auth as guest)transient_formodalZdestroy_with_parentZmessage_typeZbuttonszNot authorizedz"<span weight="bold" size="larger">z	</span>

zThe password may be incorrect.ZAuthentication)titler   r         zYou must log in to access %s.z</span>)labelz	Username:zDomain:z	Password:   zpysmb: try as %s)?r   r   
debugprintr   r   r   r   r   r   r   ZMessageDialogr   ZMessageTypeZERRORZButtonsTypeZCLOSEZ	set_title_Z
set_markupZrunZdestroyZDialogZadd_buttonsZSTOCK_CANCELZResponseTypeZCANCELZSTOCK_OKZOKZset_default_responseZset_border_widthZset_resizableZHBoxnewZImageZset_from_stockZSTOCK_DIALOG_AUTHENTICATIONZIconSizeZDIALOGZ
pack_startZVBoxZLabel
for_serverZset_use_markupZset_alignmentZset_line_wrapZGridZset_row_spacingZset_column_spacingZattachZEntryZset_activates_defaultZset_visibilityvboxZshow_allZshow_nowpwdgetpwuidosgetuidZset_textr   Zset_keep_aboveZget_text)r   dZhboxZimager(   r!   ZgridZusername_entryZdomain_entryZpassword_entryZresponser	   r	   r
   perform_authentication=   s    
















z"AuthContext.perform_authenticationc          	   C   s&   yt j }|j| _W n   Y nX d S )N)smbcZContextr   r   )r   contextr	   r	   r
   initial_authentication   s
    z"AuthContext.initial_authenticationc             C   s`   d| _ tdt|  |r\| jsXt|ttttt	gksXt|t
kr\|jd tjtjgkr\|d S )NTzpysmb: operation failed: %sr   )r   r$   reprr   typeNoEntryErrorExistsErrorNotEmptyErrorTimedOutErrorNoSpaceErrorRuntimeErrorargserrnoZEACCESZEPERM)r   excr	   r	   r
   failed   s    
zAuthContext.failedc             C   s^   t d d| _|| _|| _| jdkr,| j  | jrL| jr>| j}|| j| jfS d}d}|||fS )Nzpysmb: got password callbackTr   r   )	r$   r   r'   Z	for_sharer   r1   r   r   r   )r   ZserverZsharer   r   Zpasswordr	   r	   r
   callback   s    
zAuthContext.callback)Nr   r   r   )N)r   r   r   r   r.   r1   r=   r>   r	   r	   r	   r
   r   0   s
   
f
r   )r;   configgettextinstallZPACKAGEr   Zgi.repositoryr   r+   r)   r/   debugr9   r   r4   PermissionErrorr5   r6   r7   r8   AttributeErrorr   r	   r	   r	   r
   <module>   s(   
