3
NZ&                 @   sV  d dl Z d dlZd dlmZmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZddlmZ ddlT ddlT ddlmZmZ ddlmZ ejdejjejjZ e j!d	 d
d Z"dd Z#dd Z$dddZ%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dS )    N)PopenPIPE   )html_entities)*)utilstui)logger infoc               C   s   t j dkS )Nr   )osgeteuid r   r   !/usr/share/hplip/base/services.pyrunning_as_root<   s    r   c               C   s(   t jjdrdS t jjdr dS dS d S )Nz/etc/init.d/cupsz/etc/init.d/cups restartz/etc/init.d/cupsysz/etc/init.d/cupsys restartzkillall -HUP cupsd)r   pathexistsr   r   r   r   restart_cups?   s
    r   c             C   sR   d}t jd}|rN| rNdtjj|d }| j | }t j|| d\}}|dk}|S )NFshutdownz	%s -r nowz%Need authentication to restart systemr   )r   whichr   r   join
getAuthCmdrun)passwordObjokr   cmdstatusoutputr   r   r   restartI   s    
r   c             C   s   | j d}tj| |r|rd}xl|D ]d}|j | }tj||d| \}}|dkrltjd|  tj| |d k	r||d|  |d7 }q&W d S )NZopen_mdns_portr   z*Need authentication to open mdns port [%s]r   zAn error occurred running '%s'zOpen mDNS/Bonjour step %d)Zget_distro_ver_datalogdebugr   r   r   warn)Zcorer   callbackZopen_mdns_port_cmdxr   r   r   r   r   r   run_open_mdns_portU   s    



r$   c             C   sN   | d k	r<t j| d}|s| }tj| t j|\}}|dkS tjd dS d S )NTr   zCommand not foundF)r   r   r   r    r   error)r   	hpCommandr   r   r   r   r   run_hp_toolsh   s    

r'   c             C   sj   | d k	rX|d k	rXt j| d}|s$| }|j | }tj| t j||d|  \}}|dkS tjd dS d S )NTz%Need authentication to run %s commandr   z1Command not found or password object is not validF)r   r   r   r   r    r   r%   )r   r   r&   r   r   r   r   r   run_hp_tools_with_authw   s    

r(   c             C   s  d}|  s| r|S t jdr|j d|   }tj| t j||d|  \}}|dkrd|ksfd|kr|j d|   }tjd	|  t j||d
|  \}}|dkrd}qd}ntjd| | f  nt jdr|j d|   }tj| t j||d|  \}}|dkrd|ksd|krb|j d|   }tjd	|  t j||d
|  \}}|dkrd}nd|kr|tjd|   nd}ntjd| | f  ntjj	d|  rV|j d|   }tj| t j||d|  \}}|dkrBd|ksd|kr<|j d|   }tjd	|  t j||d
|  \}}|dkr@d}nd}ntjd| | f  n\| dkrd}t j||d|  \}}|dkrd|krd}n
tjd ntjd| | f  |S )NFZ	systemctlzsystemctl status %s.servicez,Need authentication to get %s service statusr   stopZinactivezsystemctl start %s.servicezcmd_start=%sz/Need authentication to start/restart %s serviceTz;Fail to start %s service, please start %s service manually.servicezservice %s statuszservice %s startzunrecognized servicez0Failed to Start since %s is unrecognized servicez/etc/init.d/%sz/etc/init.d/%s statusz/etc/init.d/%s startZcupsz	lpstat -rz
is runningz>service command not found, please start cups service manually.)
r   r   r   r   r    r   r%   r   r   r   )Zservice_namer   Zret_ValZ
cmd_statusstsoutZ	cmd_startr   r   r   r   start_service   sh    









r-   c              C   s~   t jd} | rtjj| d} ntjjtjd} tjj| sDtj	d tj
d|   tjtj| ddd tj
d tjd d S )	Nz
hp-systrayz
systray.pyzUnable to start hp-systrayz&Running hp-systray: %s --force-startupz--force-startupz--ignore-update-firsttimez"Waiting for hp-systray to start...r   )r   r   r   r   r   propZhome_dirr   r   r!   r    spawnlpP_NOWAITtimesleep)r   r   r   r   run_systray   s    


r3   c              C   s   t jdd} | r@d}d| |f }t|r4tjd qtjd nbyBddlm} t}t	}|j
|tk|\}}| sv| rtjd	 W n tk
r   tjd
 Y nX d S )Nzhp-SIDisableT-z%s %szSmart Install is disabled
z$Smart Install could not be disabled
r   )pkitzFailed to install plug-in.zImport error
)r   r   r'   r   r    r%   r
   r5   ZPLUGIN_REQUIREDZPLUGIN_REASON_NONEZrun_plugin_commandImportErrorr!   )r   ZparamZsicmdr5   ZpluginZplugin_reasonr   Zsudo_okr   r   r   disable_SmartInstall   s     r7   c        	      C   s  t jd\} }| dkrtjdddgd\}}| s:|dkrHtjd dS ydd	lm}m} W n t	k
rz   tj
d
 Y npX yVddttjdddg}|jddd}|j|ddi tjd | j| tjd W n   tj
d Y nX t jd\}}|dkrtj
d dS dS )Nz
hp-systrayTzq
Some HPLIP applications are running. Press 'y' to close applications or press 'n' to quit upgrade(y=yes*, n=no):ynz;Manually close HPLIP applications and run hp-upgrade again.Fr   )	SystemBuslowlevelzUnable to load DBus.r
   /zcom.hplip.StatusServiceZEventZ	signatureZssisissz'Sending close message to hp-systray ...g      ?z5Failed to send DBus message to hp-systray/hp-toolbox.z
hp-toolboxzVFailed to close either HP-Toolbox/HP-Systray. Manually close and run hp-upgrade again.)r   ZIs_Process_Runningr   Zenter_choicer   r   Zdbusr:   r;   r6   r%   ZEVENT_SYSTEMTRAY_EXITr.   ZusernameZSignalMessageappendr    Zsend_messager1   r2   )	r   r   r   Zchoicer:   r;   argsmsgZtoolbox_statusr   r   r   close_running_hp_processes   s4    





r@   )N),sysr   
subprocessr   r   ZgrpZfnmatchZtempfileZsocketZstructZselectr1   ZfcntlerrnostatstringglobioreZgetpassZlocaleZsixext.movesr   gZcodesr
   r   r   r	   ZLoggerZLOG_LEVEL_INFOZLOG_TO_CONSOLEr   Z	set_levelr   r   r   r$   r'   r(   r-   r3   r7   r@   r   r   r   r   <module>   sH   


D