3
NZ-                 @   s   d dl Z d dlZd dlZd dlZddlT ddlmZmZ d dlm	Z	m
Z
 d dlT d dlT dZdd Zd	d
 Zdd Zdd ZdddZdd ZdddZdS )    N   )*)utilstui)password
validationz+http://hplip.sourceforge.net/hplip_web.confc       	      C   sB  d}ddddd}t jdt jt jdt jt jdt jt jdt jd}tjdd	}|r:tjd
|| f d ddd\}}|dkr:x|j D ]}x|D ]}||kr|d7 }|| j|r|| j|jd||< nt	j
d|  d|ko|| j dkrdi fS d|kr"|| dkr"di fS P qW |t|krP qW d	|fS )Nr    )idVendoriProductbNumInterfacesbInterfaceClassz"\s*idVendor\s*([0-9a-fx]{1,})\s*.*z"\s*iProduct\s*[0-9a-fx]{1,}\s*(.*)z!\s*bNumInterfaces\s*(\d{1,})\s*.*z"\s*bInterfaceClass\s*(\d{1,})\s*.*lsusbTz%s -d %s -vF)passwordObjZpswd_msgZ
log_outputr   z:TBD... Shouldn't have entered into this condition. key[%s]r	   Z0x03f0r
   )recompileIr   whichrun
splitlinesmatchgrouplogwarnlowerlen)	vid_pidZ
result_cntZparam_resultZparam_search	lsusb_cmdstsoutls r!   &/usr/share/hplip/base/smart_install.pyget_usb_details-   s2    

r#   c        	      C   s,  g } t jdd}|s"tjd | S yt j|\}}|dkrLtjd|  | S x|j D ]}tjdtj}|j	|r|j	|j
d}t|\}}|sqVtjd|d	 |d
 |d f  |d
 dkr|d dkrd|d	 j kr| j|d	  qVtjd|  qVW W n tk
r   Y nX | r(t j| } | S )Nr   Tz Failed to find the lsusb commandr   zFailed to run the %s commandz .*([0-9a-f]{4}:([0-9a-f]{4}))\s*r   z/Product['%s'],Interfaces[%s],InterfaceClass[%s]r
   r   r   18Zlaserjetz-Failed to find vid and pid for USB device[%s])r   r   r   errorr   r   r   r   r   r   r   r#   debugr   appendr   KeyErrorZ
uniqueList)	Zsmartinstall_dev_listr   r   r   dZusb_dev_patr   ZbstsZ
usb_paramsr!   r!   r"    get_smartinstall_enabled_devicesU   s4    

 (
r+   c              C   s   t  } | rdS dS d S )NTF)r+   )Zdevicesr!   r!   r"   check_SmartInstall}   s    r,   c              C   sx   d\} }t j stjd nTt jt\}}|dkrbt|}|jddd} | rRd}qptjdt  ntjdt  | |fS )	Nr   zInternet connection not found.r   SMART_INSTALLZ	referencezSmartInstallDisable-Tool.runzFailed to download %s.)r   r   )r   check_network_connectionr   r&   download_from_networkHPLIP_INFO_SITE
ConfigBaseget)url	file_namer   
HPLIP_filehplip_si_confr!   r!   r"   get_SmartInstall_tool_info   s    r7   r   c             C   sb   t jt|dj }tjd|  |r>||kr>tttdt	fS t
j }|j||\}}||||fS )NrzFile checksum=%sr   )r   Zget_checksumopenreadr   r'   ZERROR_FILE_CHECKSUMqueryStringZERROR_CHECKSUM_ERRORZplugin_filer   ZGPG_Verificationvalidate)modesmart_install_runsmart_install_ascZreq_checksumZcalc_checksumZgpg_obj
digsig_sts	error_strr!   r!   r"   r<      s    r<   c       
      C   s  t j s"tjd tddttfS t jt\}}|dkrtt|}|j	ddd}|sttjdt  t
ddtt
dtfS t j|\}}|rtjd|  t
ddtt
d|fS t j|d \}}|rtjd|d   t
ddtt
d|d fS t| ||\}}}}	||||	fS d S )NzInternet connection not found.r   r   r-   r3   zFailed to download %s.z.asc)r   r.   r   r&   ZERROR_NO_NETWORKr;   r/   r0   r1   r2   ZERROR_FAILED_TO_DOWNLOAD_FILEr<   )
r=   r   r   r5   r6   sourcer>   r?   r@   rA   r!   r!   r"   download   s(    
rC   qt4c             C   s  t  }|s tjd tttfS t}tt}t \}}	tj|}
y$| t	krR|dkryddl
m} W n& tk
r   tjd|
|f  Y nX |d|
|f  ntj stjdt  tttfS |r|r|j|
dt n@ydd	lm} W n  tk
r
   tjd
 Y nX |d |
dt}tjd |j  t rD|jd|  n
|jd ntjd|
  tjdddgd\}}| s|dkrt}tt}nt| |\}}}}d}|}|tkrd}nF|ttfkrtjd\}}| s| rtj d nd}nt|}|rdtj!d| \}}|s,t rRtjd tjd|  t}tt}ntj"d t}d}W n* t#k
r   tjd tj d Y nX ||fS )NzNo Smart Install Device foundZqt3r   )FailureMessageUIzSmart Install is enabled in %s device(s).
Auto Smart Install disable is not supported in QT3.
Please refer link '%s' to disable manuallyzSmart Install is enabled in %s device(s).

Auto Smart Install disable is not supported in QT3.
Please refer link '%s' to disable manuallyz+%s requires GUI support . Is Qt4 installed?r   )QueuesDiagnosez,Unable to load Qt4 support. Is it installed?zStarting GUI loop...zLFailed to disable smart install.
Please refer link '%s' for more informationz$Smart install disabled successfully.z*Smart Install is enabled in %s device(s). zADo you want to download and disable smart install?(y=yes*, n=no):ynFTz:Digital Sign verification failed, Do you want to continue?zsh %sz!Failed to disable smart install .z*Please refer link '%s' to disable manuallyz	User exit)$r+   r   r'   ZERROR_NO_SI_DEVICEr;   ZERROR_FAILED_TO_DISABLE_SIr7   r   Zlist_to_stringZGUI_MODEZui.setupformrE   ImportErrorr&   ZcanEnterGUIMode4__mod__ZinitZQUEUES_SMART_INSTALL_ENABLEDZui4.queuesconfrF   Zexec_r,   ZshowMessageZshowSuccessMessager   Zenter_choicerC   ZERROR_SUCCESSZERROR_UNABLE_TO_RECV_KEYSZERROR_DIGITAL_SIGN_NOT_FOUNDZenter_yes_nosysexitr   infoKeyboardInterrupt)r=   Z
ui_toolkitZdialogZappr   Zdev_listZ
return_valZreturn_error_strr3   r4   Zprinter_namesrE   rF   Zresponsevaluer   r>   r?   rA   Z
disable_sir   r!   r!   r"   disable   sz    










rP   )r   )rD   NNN)rK   os.pathosr   gr   r   r   baser   r   Z
base.codesZbase.stringsr0   r#   r+   r,   r7   r<   rC   rP   r!   r!   r!   r"   <module>   s    ((
