JVc@s_ddlZddlZddlZddlZddlmZmZddlTddlm Z m Z ddl m Z ddlm Z dZid d 6d d 6d d 6d d 6d d6d d6d d6d d6d d6d d6dd6d d6d d6d d6d d6d d6d d6d d6dd6dd6dd6d d 6d d!6Zd"Zd#Zd$efd%YZdS(&iNi(tutilsttui(t*(tBytesIOtStringIO(tinput(tpexpectitsutmepistdebiantsusetmandrivatfedoratredhattrhelt slackwaretgentootredflagtsudotubuntutxandrostfreebsdtlinspiretarkt pclinuxostcentostigost linuxminttlinpustgostbosstlfscCsIddl}dGHdGHtj|GHtd}|jd}||fS(Nits Username: s Password: (tgetpasstlogtboldR(tpromptR!tusernametpassword((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pytshowPasswordPrompt>s  cCsd}y ddl}|jd}Wntk r?d}nX|sttjd}|jj}|jn|stjd}|jj}|jn|j }d|krd}nd|krd}n|S(Niislsb_release -i | cut -f 2s-cat /etc/issue | awk '{print $1}' | head -n 1tredhatenterpriseRR ( tNonetplatformtdistt ImportErrortostpopentreadtstriptclosetlower(tos_nameR*tname((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pytget_distro_nameKs(          tPasswordcBseZedZdZdZdZddZdddZdd Z d Z d Z d Z d Z dZdZdddZRS(cCsd|_t|_||_|jg|_tjtj ddd rwtjtj dddrwd|_ n d|_ x^tj D]S}yt j |t j}Wn!tk r|jj|qX|jj|qWdS(NR t configuretqt4t0tqt3(t_Password__passwordtFalset_Password__passwordValidatedt_Password__modet_Password__readAuthTypet_Password__expectListRtto_booltsys_conftgett_Password__ui_toolkittEXPECT_WORD_LISTtretcompiletIt TypeErrortappend(tselftModetstp((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__init__is     =   cCstj}tjddd|_|jdkr|jdkryt||_Wqtk rtjd|d|_qXndS(Ntauthenticationtsu_sudoR RRs$%s distro is not found in AUTH_TYPES( R5R2t user_confRCt_Password__authTypet AUTH_TYPEStKeyErrorR"twarn(RKt distro_name((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__readAuthTypes cCs(|jdkrdSdtjdSdS(NRs*Please enter the root/superuser password: s)Please enter the sudoer (%s)'s password: tUSER(RSR-tgetenv(RK((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__getPasswordDisplayStringscCs>|jdkrd|_n d|_tjdd|jdS(NRRRPRQ(RSRRtset(RK((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__changeAuthTypes  R cCsP|dkr:|jdkr$d}q:dtjd}ntjtj|S(NR Rs*Please enter the root/superuser password: s)Please enter the sudoer (%s)'s password: RY(RSR-RZR!R"R#(RKtpswd_msg((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__get_passwords   trootcCs|dkrd}n|jdkrOddlm}|||t\}}n(ddlm}|||t\}}|dkr|dkrtdn|S(NR siYour HP Device requires to install HP proprietary plugin Please enter root/superuser password to continueR:i(tshowPasswordUIs User Cancel(RDt ui.setupformRaR<tui4.setupdialogt Exception(RKR^tuserRaR%R&((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__get_password_uis  ic Csqddl}|j}td}}ytj|d|}Wntjk rUdSXzytj}xtrt|j |j } |j } | rtj}|j | n| dkrt|j }}Pqk| dkrqkqk|j|jqkWWn&ttjfk r'} tjnXWdty|jWntk rTnXX|ri|j|fSdSdS(NiR ttimeoutii(iR (iR (tioRR<RtspawnutExceptionPexpectttimetTruetupdate_spinnertexpectR@tbeforetwritetgetvaluetsendlineR;RdR"t exceptiontcleanup_spinnerR1tOSErrort exitstatus( RKtcmdRgRhtoutputtoktrettchildtstarttitcbte((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__password_checksB           cCsd}x tr|jtkr3|j||_nH|jdkr]|j|d|_n|j|tjd|_|j d}t j ||j |\}}t j d||f|jt kr|jdkrdd lm}n|jd krdd lm}qn|d kr3t|_Pq d |kr|jd }|jt krk||n t j|tdq d|_|d7}|jt kr|tkr|ddS|dtd|q |tkrt jddSt jdtd|q WdS(NiRR`RYttruesstatus = %s output=%s R8i(tFailureMessageUIR:isnot in the sudoers filesLUser doesn't have sudo permissions. Changing Authentication Type. Try again.s User is not in the sudoers file.R sPassword incorrect. s'Password incorrect. %d attempt(s) left.(RlR>tINTERACTIVE_MODEt_Password__get_passwordR;t getAuthTypet_Password__get_password_uiR-RZt getAuthCmdR"tdebugt_Password__password_checktGUI_MODERDRcRRbR=t_Password__changeAuthTypeterrorRdtPASSWORD_RETRY_COUNT(RKR^txRwtstatusRxRtmsg((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__validatePasswordsJ              cCs4|jdkrd\}}n d\}}||fS(NRs su -c "%s"Rssudo %s(ssus su -c "%s"(ssudossudo %s(RS(RKtAuthTypetAuthCmd((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__get_password_utils#s cCsCtj}|jdkr-d\}}n d\}}||fS(NRssudo %sRs su -c "%s"(ssudossudo %s(ssus su -c "%s"(R5R2RS(RKRWRR((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt__get_password_utils_ui,s  cCsBtjdd|_t|_|jdkr>tjdndS(NsClearing password...R Rssudo -K(R"RR;R<R=RSRtrun(RK((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt clearPasswordBs    cCs1|jtkr|j}n|j\}}|S(N(R>RRSt _Password__get_password_utils_ui(RKtretValueR((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyRJs cCs:|jtkr$|j\}}n|j\}}|S(N(R>Rt_Password__get_password_utilsR(RKRR((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyRSsicCs1|jr|jS|r|jS|j||jS(N(R=R;t_Password__validatePassword(RKR^tpsswd_queried_cnt((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyt getPassword\s   (t__name__t __module__RROR?t#_Password__getPasswordDisplayStringRRRRRRRRRRR(((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pyR6hs     6 6   (R-R!RktstringR RRtgtsixextRRt sixext.movesRRRRTR'R5tobjectR6(((s]/builds/ul11u3sru-gate/components/hplip/build/prototype/i386/usr/share/hplip/base/password.pytsF