
    =	f2                        d Z dZdZdZddlZddlZddlZddlZddl ddl	 	 ddl
mZmZmZmZmZmZmZ ddl ddlmZ ed	ddfdez  d	ddfej8                  ej:                  dej8                  ej<                  ej>                  ej@                  ejB                  ejD                  gZ#e$Z%dZ&dZ'dZ(da)dZ*dZ+dZ,dAdZ-d Z.d Z/d Z0d Z1g g g fdZ2dBdZ3eji                  e       	  ejj                  eee ee#e$e6fe7e8e9fd      Z:e:jw                  dg dd      \  Z<Z=Z>Z?Z@ZA ej                  d      rej                  d       dZ(e<D ]  \  ZGZHeGdk(  reIZ%dZ'ej                  d        e-        (eGd k(  reHZ&0eGd!v rej                  d"        e-        MeGd#k(  rej                  d$        e-        keGd%v r8eHj                         j                         Z(ej                  e(      r e-        eGd&k(  rdZ+eGd'k(  sdZ, 	  ej                         dk(  r.ej                  ed( eNeO              ej0                  d
       e:j                  d	       de:_Q        e:j                          ej                  j                  d)eUj                  z        ZWej                  j                  eW      r	  ej                  eW       ej                  eW       ej                  ej                         ej                  d*ej                  eW      z         ej                  d	       e'r- ej                         dk7  rej                  d+        e3d
       e`j                  d,d-      Z@ eebe$e@      Zcecj                  j                          ej                  ej                  d.              e1ecj                         ej                  ej                  d/              ej                  d0d      Zhehr1 e.eh      Zh ej                  eh      Zjejdk7  r#ej                  d1       nej                  d2       ej                  ej                  d3             e,recj                  eld      \  ZmZnnecj                  eld      \  ZmZnemsenrecj                         s ecj                         secj                         r e2ecj                         ecj                         ecj                                 e/ecj                         ecj                  j                  e$ecj                         ecj                         ecj                                ej                  ej                  d4             ej                  ej                  d5              ej                  ecj                  j                  e%e@de&       ej                  ej                  d6              e0ec        ej                         Zvevrrej                  ej                  d7              ej                         \  ZxZyevD ]  Zzej                  d8ezz          ej                  ej                  d9exz               ecj                         Z|e|r^ej                  ej                  d:             e|D ]9  Zzej                  d;ezz         ej                  ej                  d<ez               ; e*r ej                  ej                  d=             ej                  ej                  d>             ej                  d	       ej                  d	       ej                  d?        e3d       y# e$ rHZdej(                  d   v r	 ed       n#ej/                  d	        ej0                  d
       Y dZ[VdZ[ww xY w# ej                  $ r-Zej                  ej                          e-        Y dZ[dZ[ww xY w# eZ$ r Y w xY w# e}$ r ej                  d@        e3d
       Y yw xY w)Cz1.0z(Self Diagnse Utility and Healing Utilityz	hp-doctorzqTool checks for the deprecated, plug-in, dependencies, queues, permission issues and provides self diagnose steps    N)*)utilstuimodulequeuesos_utilsservicessmart_installcupsext    )DependenciesChecknameTzUsage: %s [OPTIONS]summary)zRun in interactive mode:z-i or --interactive (Default)optionFFc                     | dk(  rt        j                  t        t               t        j                  t
        | t        t        t               t        d       y )Ntext   )r   	log_title	__title____version__format_textUSAGE__mod__
clean_exit)typs    /usr/share/hplip/doctor.pyusager   M   s4    
f}	;/	eS)WkBqM    c                     t         t        k(  r| dz  } nt         t        k(  r| dz  } t        r| dz  } t        r| dt        z  z  } | dz  } | S )Nz -i z -u z -n z -l%sz -s )MODEINTERACTIVE_MODEGUI_MODEPERFORM_IN_NON_INTERACTIVE_MODE	LOG_LEVEL)cmds    r   append_optionsr'   U   sS    v		v&vwy   6MCJr   c                 J   t        j                         sbt        dk(  rY| j                  j	                         dk(  rt        j                  d       nt        j                  d       | j                         andat        s t        j                  d       t        d       t        S )NFsudozENTER SUDO PASSWORDzENTER ROOT/SUPERUSER PASSWORDTzV3 incorrect attempts. (or) Insufficient permissions(i.e. try with sudo user).
Exiting.   )r	   running_as_rootVALID_AUTHENTICATIONpasswordObjgetAuthTyper   titlecheck_passwordlogerrorr   )cores    r   authenticater4   f   s{    ##%*>%*G
 '')V3II+,II56#224#		kl1r   c                     | j                         }|t        k(  rt        j                  dddgd      \  }}n|t        k(  rt        j                  dddgd      \  }}n[|t
        k(  rt        j                  dddgd      \  }}n5|t        k(  rt        j                  d       yt        j                  d       y|rU|dk(  rPd	}t        |      }t        j                  |      }|d
k(  ryt        j                  t        j                  d             y)NzPFound Plugin version mismatch. Press 'y' to re-install the plugin(y=yes*, n=no):ynzDPlugins corrupted. Press 'y' to re-install the plugin(y=yes*, n=no):zDPlugin's are missing. Press 'y' to install the plugin(y=yes*, n=no):zPlugin's already installedTz#No plug-in printers are configured.z	hp-pluginr   zSFailed to install Plugin. Please run 'hp-plugin' command to install plugin manuallyF)get_plugin_statusPLUGIN_VERSION_MISMATCHr   enter_choicePLUGIN_FILES_CORRUPTEDPLUGIN_NOT_INSTALLEDPLUGIN_INSTALLEDr1   infor'   r   executebold)r3   
plugin_stsok
user_inputr&   stss         r   install_pluginrE   }   s   '')J,,''(z|  BE  |F  HK  L:	-	-''(npsuxoy{~:	+	+''(npsuxoy{~:	'	'-.67	jCS!s#!8HHSXXstur   c                 ^   | j                         r+t        j                  d       t        j                  d       y t        j	                  d| j
                  d| j                  d       t        j                  t        j                  d      ddgd      \  }}|r|dk7  rt        d	       y y )
NzThis distro is supported.zNo Deprecated items are foundzThis distro (i.e z  z,) is either deprecated or not yet supported.zZThe diagnosis is limited on unsupported platforms. Do you want to continue?(y=yes*, n=no):r6   r7   r   )validate_distro_versionr1   debugr>   r2   distro_namedistro_versionr   r:   redr   )r3   rB   rC   s      r   deprecated_checkrL      s    ##%		-.01		Y]YiYikok~k~  	A''  1M  )N  PS  UX  OY  [^  _:Z#%qM &r   c                 l   t        |       rt        j                  t        j                  d             t        j                  t        j                  dt        d      z               | D ];  }d|v rt        j	                  d|ddd       $t        j	                  d|z         = t        |      r{t        j                  t        j                  d             t        j                  t        j                  dt        d      z               |D ]  }t        j	                  d|z          t        |      r|t        j                  t        j                  d	             t        j                  t        j                  dt        d	      z               |D ]  }t        j	                  d
|z          y y )NzMissing Required Dependencies-cups'z' package is missing or 'z' service is not running.z%'%s' package is missing/incompatible zMissing Optional DependencieszMissing Commandsz'%s' is missing)lenr1   r>   r@   r2   )required_dependenciesoptional_dependenciesmissing_cmdpackages_to_installr&   s        r   display_missing_dependenciesrV      sN   
 !9:;#c"ABBCD#8 	V++yyTghnopyy@ATTU		V  !9:;#c"ABBCD#8 	SII=>QQR	S ;,-.#c"45567 	-CII'+,	- r   c                     t         j                          t        rt        j	                  d       	 	 	 t        j                  |        y # t
        $ r Y !w xY w)Nz'

Please close this terminal manually. )modunlockInstanceDONOT_CLOSE_TERMINALr1   r>   KeyboardInterruptsysexit)	exit_codes    r   r   r      sP    <=	 
 HHY ! 		s   A
 
	AAzhl:gnid:f:w)
zsummary-onlyhelpz	help-restzhelp-manz	help-descinteractiveguizlang=zlogging=rH   )handle_device_printerHPLIP_DEBUGrH   z-nz*NON_INTERACTIVE mode is not yet supported.z-d)z-uz--guizGUI is not yet supported.z-fz%Option from file is not yet supported)z-lz	--loggingz-wz--summary-only z%s/hp-doctor.logzUpgrade log saved in: %sz0Non Interactive mode should be run in root mode.	configurez
ui-toolkitz#

Checking for Deprecated items....z 

Checking for HPLIP updates....z
hp-upgradez^Failed to upgrade latest HPLIP. Is hp-upgrade already running (i.e. foreground or background)?z#Failed to locate hp-upgrade utilityz

Checking for Dependencies....z

Checking Permissions....z$

Checking for Configured Queues....z*

Checking for HP Properitery Plugin's....z<

Checking for 'CD-ROM'/'Smart Install' Detected Devices....zDSmart Install is Enabled in '%s' Printer. This needs to be disabled.z4
Refer link '%s' to disable Smart Install manually.
z!

Checking for Printer Status....z<'%s' Printer is either Powered-OFF or Failed to communicate.zTurn On Printer and re-run %sz9
Please reboot the system before performing any function.z
Diagnose completed...
zxMore information on Troubleshooting,How-To's and Support is available on http://hplipopensource.com/hplip-web/index.htmlz	User exit)r   )r   )~r   r   r   __doc__getoptosr\   getpassbase.gbase.stringsbaser   r   r   r   r   r	   r
   ImportErroreargscheck_extension_module_envr1   	exceptionr]   installer.core_installcheckr   USAGE_SPACE
USAGE_MODEUSAGE_OPTIONS
USAGE_HELPUSAGE_LOGGING1USAGE_LOGGING2USAGE_LOGGING3r   r"   r!   
DEVICE_URIr$   r%   r,   IS_RESTART_REQrZ   SUMMARY_ONLYr   r'   r4   rE   rL   rV   r   
set_moduleModuler#   UI_TOOLKIT_QT3UI_TOOLKIT_QT4UI_TOOLKIT_QT5rX   parseStdOptsopts
device_uriprinter_namemode
ui_toolkitlocGetoptErrorr2   msggetenv	set_leveloaNON_INTERACTIVE_MODEwarnlowerstripgeteuidqueryStringERROR_RUNNING_AS_ROOTlockInstancequiet	showTitlepathnormpathpropuser_dirlog_fileexistsremoveOSErrorset_logfile	set_whereLOG_TO_CONSOLE_AND_FILErH   r@   sys_confget
MODE_CHECKdepr3   initr>   whichupgrade_cmdr?   rD   validateDEPENDENCY_RUN_AND_COMPILE_TIME
num_errors	num_warnsget_required_depsget_optional_depsget_cmd_to_runinstall_missing_dependenciesmain_functionr-    get_smartinstall_enabled_devicessmart_ins_dev_listget_SmartInstall_tool_infourl	tool_nameprinterget_communication_error_devscomm_err_devr[    r   r   <module>r      sd  . 6	
 B  	 
   QQQ % #
2vt	$
'
)2y$	?							W												u33U5I5I	
" 
 % 
	  " .6 8:PR`b -. w 
&--K%%x0#^^DdLC
   0`+0   2 :D*lD*c 299]MM'I DAqDy#*.'=>	
d
	
o	,-	
d89	
!	!GGIOO%	}}Y'G	
d#	
	38srzz|q		Wk2G&HIJRCIMMOww 24== @AH	ww~~h	BIIh OOHMM#--.II(388H+==>IIbM&:2::<1+<		DE1k,7JZ(8DCHHMMOHHSXX=>?SXXHHSXX:;<%++l40K$[1h{+!8IIvw		78 HHSXX9:; #-Ld S
I #-Le T
IY  "c&;&;&=ASASAU()>)>)@AVAVAXZ]ZlZlZno"HH112B3CXCXCZ[^[p[p[rtw  uG  uG  uI  J89:* HHSXX>?@F--tJzRHHSXXDEF3GGGIZ[\AAACY) 	fGII\]dde	fRTWXYZ335L?@A# 	HGIITU\\]HHSXX=gEFG	H VWXHHSXX123HHRLHHRLHH  H  IqM{	  AFF1I"9-bV  IIaee	GGb  		H  IIkqMsg   ] &;^ B-_ 0_ R_ ^	=^^_#"____ __ ` ?` 