U
    9¡_;  ã                   @   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z(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s|d| _d| _d| _td	ƒ dS d| _| jrât	j
| jddt	jjt	jjd
}| tdƒ¡ | dtdƒ d tdƒ ¡ | ¡  | ¡  t	jtdƒ| jdd}| t	jt	jjt	jt	jj¡ | t	jj¡ | d¡ | d¡ t	j  dd¡}| d¡ t	 !¡ }| "t	j#t	j$j%¡ | &|ddd¡ t	 'dd¡}t	j(dtdƒ| j)  d d}| *d¡ | +dd¡ | ,d¡ | &|ddd¡ t	 -¡ }| .d¡ | /d¡ | 0t	j(tdƒddddd¡ t	 1¡ }| 0|dddd¡ | 0t	j(tdƒddddd¡ t	 1¡ }| 0|dddd¡ | 0t	j(tdƒddddd¡ t	 1¡ }	|	 2d¡ |	 3d¡ | 0|	dddd¡ | &|ddd¡ | &|ddd¡ |j4 &|ddd¡ d| _| 5¡  | 6¡  | jdkr t7 8t9 :¡ ¡d | _td| j ƒ | ;| j¡ | ;| j<¡ | =d¡ | ¡ }
|
t	jjkrjd| _| ¡  dS | >¡ | _|	 >¡ | _| >¡ | _<| ¡  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_markupÚ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&   zt  ¡ }|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	fksXt|ƒt
kr\|jd tjtjf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rL| jr>| j}|| j| jfS d}d}|||fS )Nzpysmb: got password callbackTr   r   )	r$   r   r(   Z	for_sharer   r2   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/   r2   r>   r?   r	   r	   r	   r
   r   0   s
   
f
r   )r<   ZconfigÚgettextÚinstallZPACKAGEr   Zgi.repositoryr   r,   r*   r0   Údebugr:   r   r5   ÚPermissionErrorr6   r7   r8   r9   ÚAttributeErrorr   r	   r	   r	   r
   Ú<module>   s(   
