
    =	f-                         d dl Z d dlZd dlZd dlZddlmZmZ ddl ddlm	Z	m
Z
 ddlmZ ddlmZ dZd	 Zd
 Zd Z G d de      Zy)    N   )utilstui)*)BytesIOStringIO)input)pexpect   c                     dd l }t        d       t        d       t        t        j                  |              t	        d      } |j                   d      }||fS )Nr    z
Username: z
Password: )getpassprintlogboldr	   )promptr   usernamepasswords       !/usr/share/hplip/base/password.pyshowPasswordPromptr   &   sI    	2J	2J	388F\"Hw|,Hh    c                  4    dd l } | j                  d      d   S )Nr   F)full_distribution_name)distrolinux_distribution)r   s    r   get_distro_namer   2   s    $$E$B1EEr   c                     t               S N)r   )os_name1s    r   get_distro_std_namer    7   s    r   c                   l    e Zd ZefdZd Zd ZddZddZddZ	d Z
d Zd	 Zd
 Zd Zd ZddZd Zy)Passwordc                    d| _         d| _        d| _        || _        t	        j
                         | _        g | _        t	        j                  t        j                  ddd            s]t	        j                  t        j                  ddd            r3t	        j                  t        j                  ddd            r	d| _        nt	        j                  t        j                  ddd            s\t	        j                  t        j                  ddd            s2t	        j                  t        j                  ddd            rd| _        nt	        j                  t        j                  ddd            s[t	        j                  t        j                  ddd            s1t	        j                  t        j                  ddd            rd| _        t        j                  D ]B  }	 t        j                  |t        j                        }| j                  j!                  |       D y # t"        $ r | j                  j!                  |       Y lw xY w)Nr   F	configureqt50qt4qt3)_Password__password_Password__password_prompt_str_Password__passwordValidated_Password__moder   readAuthType_Password__authType_Password__expectListto_boolsys_confget_Password__ui_toolkitEXPECT_WORD_LISTrecompileIappend	TypeError)selfModesps       r   __init__zPassword.__init__=   sl   %'"#( ,,.}}X\\+ucBCPUP]P]^f^j^jkvx}  @C  _D  QE  JO  JW  JW  X`  Xd  Xd  ep  rw  y|  X}  J~ %Dx||KDEemm\d\h\hitv{  ~A  ]B  OC  HM  HU  HU  V^  Vb  Vb  cn  pu  wz  V{  H| %Dx||KDEemm\d\h\hitv{  ~A  ]B  OC  HM  HU  HU  V^  Vb  Vb  cn  pu  wz  V{  H| %D'' 	,A,JJq"$$' !!((+	,  ,!!((+,s   #$H%%$IIc                 R    | j                   dk(  rydt        j                  d      z  S )Nsu*Please enter the root/superuser password: )Please enter the sudoer (%s)'s password: USER)r.   osgetenvr:   s    r   __getPasswordDisplayStringz#Password.__getPasswordDisplayString[   s%    ??d"?>6ARRRr   c                     | j                   dk(  rd| _         nd| _         t        j                  dd| j                          y )Nsudor@   authenticationsu_sudo)r.   	user_confsetrF   s    r   __changeAuthTypezPassword.__changeAuthTypea   s1    ??f$"DO$DO&	4??Cr   c                     |dk(  r*| j                   dk(  rd}ndt        j                  d      z  }t        j                  t        j                  |            S )Nr   r@   rA   rB   rC   )r.   rD   rE   r   r   r   )r:   pswd_msgs     r   __get_passwordzPassword.__get_passwordh   sK    r>$&GFJ sxx122r   c                     |dk(  rd}| j                   dk(  rddlm}  |||d      \  }}n6| j                   dk(  rddlm}  |||d      \  }}nddlm}  |||d      \  }}|dk(  r|dk(  rt        d      |S )	Nr   ziYour HP Device requires to install HP proprietary plugin
Please enter root/superuser password to continuer(   r   )showPasswordUIFr%   zUser Cancel)r3   ui.setupformrS   ui5.setupdialogui4.setupdialog	Exception)r:   rP   userrS   r   r   s         r   __get_password_uizPassword.__get_password_uiq   s    r> DH%3!/$!FHh%'6!/$!FHh6!/$!FHhr>h"nM**r   c                 ^   dd l }|j                         }d\  }}	 t        j                  ||      }	 	 t        j
                         }	 t                |j                  | j                        }	|j                  }
|
r%t        j
                         }|j                  |
       |	dk(  rd|j                         }}n|	dk(  rd|v r| j                  dk(  r|
j                  d	d
      }
|
j                  dd      }
|
| _        	 t        j                  |
t        j                         }| j                  j#                  |       t&        j)                  d| j                  z         | j                  dk(  r:t*        j,                  |	   | _        t&        j)                  d| j                  z         |j/                  | j0                         ~	 t7                	 |j9                          |r|j<                  |fS y# t        j                  $ r Y yw xY w# t$        $ r | j                  j#                  |
       Y w xY w# t2        t        j                  f$ r}t&        j5                          Y d }~d }~ww xY w# t:        $ r Y w xY w# t7                	 |j9                          w # t:        $ r Y w w xY wxY w)Nr   )Fr   )timeout)r   r   Tr   truer   [z\[]z\]z*Adding missing password prompt string [%s]z$Updating password prompt string [%s])ior   r
   spawnuExceptionPexpecttimeupdate_spinnerexpectr/   beforewritegetvaluer*   replacer5   r6   r7   r8   r9   r   debugr   r4   sendliner)   rW   	exceptioncleanup_spinnercloseOSError
exitstatus)r:   cmdr[   r_   outputokretchildstarticbr=   es                r   __password_checkzPassword.__password_check   s]   C	NN38E4	+ 		"$T%6%67AB $		R(Av"&(9Ca!S=T-G-G2-M!#C!7B!#C!7B9;D6<$&JJr244$8 !% 1 1 8 8 ;II LtOiOi ik   55;9>9O9O !:#D6II FIcIc ce t7K  >  ##S(( { '' 		: $- = $ 1 1 8 8 <=" w778     	  s   G4 C	H7 >$H "B%H7 J  I1 4H
	H
$H41H7 3H44H7 7I.I)$J  )I..J  1	I=<I= J,JJ,	J)&J,(J))J,c                    d}	 | j                   t        k(  r| j                  |      | _        nV	 | j	                         dk(  r| j                  |d      | _        n*| j                  |t        j                  d            | _        | j                         dz  }t        j                  |       | j                  |      \  }}t        j                  d|d|d	       | j                   t        k(  rA| j                  d
k(  rddlm} n+| j                  dk(  rddlm} n| j                  dk(  rddlm} |dk(  rd| _        y d|v rX| j)                          d}| j                   t        k(  r |       t        d      t        j+                  |       t        d      d| _        |dz  }| j                   t        k(  r(|t,        kD  r	 d       y  dt,        dz   |z
  z         nA|t,        kD  rt        j+                  d       y t        j+                  dt,        dz   |z
  z         # t        $ r}t        j                  |       Y d }~y d }~ww xY w)Nr   Tr@   rootrC   r\   z	status = z	  output= r'   r   )FailureMessageUIr%   r(   znot in the sudoers filezLUser doesn't have sudo permissions.
Changing Authentication Type. Try again.z User is not in the sudoers file.r   zPassword incorrect. z'Password incorrect. %d attempt(s) left.)r,   INTERACTIVE_MODE_Password__get_passwordr)   getAuthType_Password__get_password_uirD   rE   rW   r   ri   
getAuthCmd_Password__password_checkGUI_MODEr3   rV   r}   rU   rT   r+   _Password__changeAuthTypeerrorPASSWORD_RETRY_COUNT)	r:   rP   xexrp   statusrq   r}   msgs	            r   __validatePasswordzPassword.__validatePassword   s   {{.."&"5"5h"?	'')T1*.*@*@$f+. +/*@*@$bii&7+9 //#f,CIIcN!2237NFFII66BC{{h&$$-@&&%/@&&%/={+/(*f4 %%'e;;(*$S)   BCC IIcN BCC #%Q;;(*//()?@()R014q8*: ; //		"89		"K014q8#: ;u  ! IIbMs   AH# #	I,IIc                 D    | j                   dk(  r	d\  }}||fS d\  }}||fS )Nr@   r@   z
su -c "%s"rI   zsudo %s)r.   r:   AuthTypeAuthCmds      r   __get_password_utilszPassword.__get_password_utils	  s<    ??d" 2Hg    !2Hg  r   c                     t        j                         \  }}|j                         j                  dd      }t	        |      }| j
                  dk(  rd\  }}nd\  }}	 ||fS )Nr|   r   rI   r   r   )r   r   lowerrh   r    r.   )r:   os_name_verdistro_namer   r   s         r   __get_password_utils_uiz Password.__get_password_utils_ui  sh    ..0--/))#b1)'2??f$ 1Hg 2Hg		   r   c                     t         j                  d       d| _        d| _        | j                  dk(  rt        j                  d       y y )NzClearing password...r   FrI   zsudo -K)r   ri   r)   r+   r.   r   runrF   s    r   clearPasswordzPassword.clearPassword(  s;    		()#( ??f$IIi  %r   c                 n    | j                   t        k(  r| j                  }|S | j                         \  }}|S r   )r,   r~   r.    _Password__get_password_utils_ui)r:   retValuer   s      r   r   zPassword.getAuthType/  s9    ;;**H  !% < < >Hgr   c                 |    | j                   t        k(  r| j                         \  }}|S | j                         \  }}|S r   )r,   r~   _Password__get_password_utilsr   r   s      r   r   zPassword.getAuthCmd7  sC    ;;** $ 9 9 ;Hg  !% < < >Hgr   c                     | j                   r| j                  S |r| j                  S | j                  |       | j                  S r   )r+   r)   _Password__validatePassword)r:   rP   psswd_queried_cnts      r   getPasswordzPassword.getPassword?  s:    ##??"??")r   c                     | j                   S r   )r*   rF   s    r   getPasswordPromptStringz Password.getPasswordPromptStringI  s    )))r   N)r   )r   r{   )
   )r   r   )__name__
__module____qualname__r~   r>   #_Password__getPasswordDisplayStringr   r   r   r   r   r   r   r   r   r   r   r    r   r   r"   r"   ;   sP    , ,<SD3&DL=;~!!.!*r   r"   )rD   r   rb   stringr   r   r   gsixextr   r   sixext.movesr	   r
   r   r   r   r    objectr"   r   r   r   <module>r      sF   * 
      %    F
O*v O*r   