Sindbad~EG File Manager

Current Path : /usr/share/hplip/__pycache__/
Upload File :
Current File : //usr/share/hplip/__pycache__/hpssd.cpython-310.pyc

o

�/�aQ�@s\dZdZdZdZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZddlTddlTddlmZmZmZmZmZmZmZdd	lmZdd
lmZzLddlmZmZmZddl Zddl!m"Z"er�zdd
l#m$Z$m%Z%m&Z&m'Z'm(Z(Wn!dd
l)m$Z$m%Z%m&Z&m'Z'm(Z(Yndd
l*m$Z$m%Z%m&Z&m'Z'm(Z(dZ+Wne,y�e-�.d�dZ+e�/d�Ynwddl0Z0e0�1de2�dZ3d\a4a5da6da7d\a8a9a:iZ;Gdd�de<�Z=Gdd�dej>j?�Z@dd�ZAdd�ZBdd�ZCd d!�ZDd"d#�ZEd$d%�ZFd&d'�ZGd:d(d)�ZHd*d+�ZId:d,d-�ZJd.d/�ZKd:d0d1�ZLd2d3�ZMd4d5�ZNd6d7�ZO			dd8d9�ZPdS);z12.0z9Services and Status System Tray dBus Child/Parent Process�hpssdz�Provides persistent data and event services to HPLIP client applications. Required to be running for PC send fax, optional in all other cases.�N)�loads�HIGHEST_PROTOCOL)�*)�utils�device�status�models�module�services�os_utils)�PY3)�
to_bytes_utf8)�lowlevel�	SystemBus�
SessionBus)�
DBusGMainLoop)�MainLoop�timeout_add�threads_init�io_add_watch�IO_INTzAdbus failed to load (python-dbus ver. 0.80+ required). Exiting...F��ignorei)NN)NNNc@seZdZddd�ZdS)�DeviceCache�cCsBt�tj�|_t�|�|_i|_i|_	i|_
d|_d|_d|_
dS)NrF)r�
RingBuffer�prop�history_size�historyr	�normalizeModelName�model�cache�faxes�dq�backoff_counter�backoff_countdown�polling)�selfr!�r)�/usr/share/hplip/hpssd.py�__init__Xs
zDeviceCache.__init__N)r)�__name__�
__module__�__qualname__r+r)r)r)r*rWsrc@s�eZdZdd�Zejjdddd�dd��Zejjddd	d�d
d��Zejjddd
d�dd��Z	ejjddd
d�dd��Z
ejjdddd�dd��Zejjdddd�dd��Zejjdddd�d#dd��Z
dd�Zejjdddd�d d!��Zd"S)$�
StatusServicecCstjj�|||�dS�N)�dbus�service�Objectr+)r(�name�object_pathr)r)r*r+f�zStatusService.__init__�com.hplip.StatusService�szsa(ssisisd))�in_signature�
out_signaturecCs|t�d|�t�zt|Wn
ty|gfYSwt|j��}t�dt|��dd�|D�|dd�|D�fS)NzGetHistory('%s')z%d events in history:cS�g|]}|���qSr)��debug��.0�xr)r)r*�
<listcomp>v�z,StatusService.GetHistory.<locals>.<listcomp>cSr;r))�as_tupler>r)r)r*rAwrB)�logr=�send_systray_blip�devices�KeyErrorr�get�len)r(�
device_uri�hr)r)r*�
GetHistoryjs�zStatusService.GetHistoryzsa{ss}csxt�d|�t�zt|Wn
ty|ifYSwi�t|j���fdd�t����D�t���|�fS)NzGetStatus('%s')cs g|]}��|t�|���qSr))�
setdefault�strr>�r$�tr)r*rA�s z+StatusService.GetStatus.<locals>.<listcomp>)rDr=rErFrGr$�list�keys)r(rJr)rOr*�	GetStatuszs�

zStatusService.GetStatus�ssi�icC�6t�d|||f�t|�tkr|t|j|<|SdS)Nz!SetCachedIntValue('%s', '%s', %d)����rDr=�check_device�
ERROR_SUCCESSrFr"�r(rJ�key�valuer)r)r*�SetCachedIntValue��
zStatusService.SetCachedIntValue�sscC�Bz	t|j|}Wntyd}Ynwt�d|||f�|S)NrWz$GetCachedIntValue('%s', '%s') --> %d�rFr"rGrDr=�r(rJr\�retr)r)r*�GetCachedIntValue���zStatusService.GetCachedIntValue�ssscCrV)Nz#SetCachedStrValue('%s', '%s', '%s')rrXr[r)r)r*�SetCachedStrValue�r_zStatusService.SetCachedStrValuecCra)Nrz$GetCachedStrValue('%s', '%s') --> %srbrcr)r)r*�GetCachedStrValue�rfzStatusService.GetCachedStrValue�ssisisdsrcCs�t�d|||f�t�|dd||dddf}t|�t|�|r?zt|j||fWnty7|YSw|�|||�St	t|j�
��D]\}}||krY|�|||�SqH|S)Nz"CheckForWaitingFax('%s', '%s', %d)rr�)rDr=rErY�show_waiting_faxesrFr#rG�check_for_waiting_fax_returnrQrR)r(rJ�username�job_id�r�u�jr)r)r*�CheckForWaitingFax�s"��z StatusService.CheckForWaitingFaxcCsDt�d||f�t|j||f��}t|j||f=t|�|S)NzFFax (username=%s, jobid=%d) removed from faxes and returned to caller.)rDr=rFr#rCrl)r(�drqrrrpr)r)r*rm�s
z*StatusService.check_for_waiting_fax_return�ssisisrcCs t�||||||�}t|�dSr0�r�Event�handle_event)r(rJ�printer_name�
event_codernro�title�eventr)r)r*�	SendEvent�szStatusService.SendEventN)r)r,r-r.r+r1r2�methodrLrSr^rerhrirsrmr}r)r)r)r*r/es&


	


	
	r/c
Cs�tst|�}zt|WtStyIt�d|�zt�|�\	}}}}}}}}}	Wnty?t�d|�t	YYSwt
|�t|<YtSw)NzNew device: %szInvalid device URI: %s)r
rNrFrGrDr=r�parseDeviceURI�Error�ERROR_INVALID_DEVICE_URIrrZ)
rJ�back_end�is_hp�busr!�serial�dev_file�host�zc�portr)r)r*rY�s"
����rYcCsZt|jj��}|r"|dj|jkr"t�d�t|jj�|�dSt|jj�|�dS)NrWz*Duplicate event. Replacing previous event.TF)	rFrJrrHrzrDr=�replace�append)r|rr)r)r*�create_history�s
r�c
Csz|jtkr�|jtjkr�tjdd�\}}t�|tj�}d}	t�	|t
�}|s&n
t�||�|t|�7}qt
�d||f�t�|�t�|�t�||�t|jj|j|jf<t|j�z	t�dtj�Wn	tymYnwt�d|jd�\}}|r�t�|�t�d�}	|	r�tj� |	d�}	nt
�!d	�dSt
�d
|	|jf�t�"tj#|	dd|j�dSt
�d�dSt
�$d
�	dS)Nzhpfax-)�prefixrTzSaved %d bytes to file %srWz
hp-sendfax-%sz
hp-sendfaxz"Unable to find hp-sendfax on PATH.z#Running hp-sendfax: %s --printer=%sz--printer=%sz=hp-sendfax is running. Waiting for CheckForWaitingFax() call.zNot handled!)%rz�EVENT_FAX_RENDER_COMPLETErnr�tempfile�mkstemp�os�open�O_RDONLY�read�PIPE_BUF�writerIrDr=�closer�FaxEventrFrJr#rorl�waitpid�WNOHANG�OSErrorr�lock_appry�unlock�which�path�join�error�spawnlp�P_NOWAIT�warn)
r|�	pipe_name�fax_file_fd�
fax_file_name�pipe�
bytes_read�data�ok�	lock_filer�r)r)r*�handle_fax_eventsL
�


�
�


�
r�cslt|j�t��st�d|�dSt��dkr t�d|�nt�dt��|f��fdd��D�dS)NzNo faxes waiting for %srz1 fax waiting for %s:z%d faxes waiting for %s:csg|]}�|���qSr)r<r>��fr)r*rAFsz&show_waiting_faxes.<locals>.<listcomp>)rFr#rIrDr=)rtr)r�r*rl;s
rlc		Cs�t�d|�dtd�}}	t�tggtgd�\}}}|snt�tt�}|s(ntd��||g�}|t	|�7}||kr<nqt�d|�||krtt
|�}t|j�t
krv|��t|j_tt�|jd|�dt�tjdd��t|t�dSdSdS)Nz#Reading %d bytes from hpdio pipe...rrTrkz
Read %d byteszstatus-code)rDr=r�select�r3r�r�r�r�rIrrYrJrZ�copyrFr$rxrrwrH�STATUS_PRINTER_IDLErrn�send_toolbox_event�EVENT_DEVICE_UPDATE_REPLY)	r|�
bytes_written�
total_readr�rp�w�er@r$r)r)r*�handle_hpdio_eventJs,
���r�cCs�t��}|dkr=t�d�}|��t��}ddlm}|��}|�	�t
kr+t�d�nt
�d�|��t�|tj�dSt
�d�dS)Nrz/tmp/pluginInstall.tmp)�
pluginhandlerzhp-diagnose_pluginzNDevice Plug-in was already installed. Not Invoking Plug-in installation wizardz#Started Plug-in installation wizard)r��forkr�	Sync_Lock�acquire�getpid�	installerr��PluginHandle�	getStatus�PLUGIN_INSTALLEDr�executerDr=�release�kill�signal�SIGKILL)�
child_process�lockObj�	child_pidr��	pluginObjr)r)r*�handle_plugin_installgs

r�cCsPt�d�}|rtj�|d�}nt�d�dSt�d|�t�tj	|dd�dS)Nzhp-diagnose_queuesz*Unable to find hp-diagnose_queues on PATH.zRunning hp-diagnose_queues: %sz-s)
rr�r�r�r�rDr�r=r�r�)r�r)r)r*�handle_printer_diagnose|s

r�cCs�z	t�dtj�Wn	tyYnwt�d�|durg}|��|jtkr,t�dS|jt	kr6t
�dS|jrBt|j�t
krBdS|jtkrNt�|j�|_|jtkrUdSt|jkr`tkr�nn@|jr�t|�}|jtttttfvrtn|jtttttttt t!t"t#t$t%t&fvr�	|s�t'|�t(|t)�|jtt!t$fvr�t�dSdSt*|jkr�t+kr�nn|r�t�d�t,|d�}t-||�dS|jt.kr�t'|�dS|jt/kr�t'|�dS|jt0fvr�t1|�dS|jt2t3fvr�t'|�dS|jt4k�rt5|d�}t6||�dS|jt7k�s|jt8k�rt'|�t(|t)�dS|jt9k�r9t1|�t(|�t'|�t�d�t:�;�dS|jttfv�rCdSt�<d|j�dS)NrzHandling event...z	Fax eventr�ExitingzUnhandled event: %d)=r�r�r�r�rDr=rz�EVENT_AUTO_CONFIGUREr��EVENT_DIAGNOSE_PRINTQUEUEr�rJrYrZ�EVENT_MAX_EVENTr�MapPJLErrorCode�EVENT_MIN_USER_EVENT�EVENT_MAX_USER_EVENTr��EVENT_DEVICE_STOP_POLLING�EVENT_START_MAINT_JOB�EVENT_START_COPY_JOB�EVENT_START_FAX_JOB�EVENT_START_PRINT_JOB�EVENT_DEVICE_START_POLLING�EVENT_END_MAINT_JOB�EVENT_END_COPY_JOB�EVENT_END_FAX_JOB�EVENT_END_PRINT_JOB�!EVENT_PRINT_FAILED_MISSING_PLUGIN�EVENT_SCANNER_FAIL�EVENT_END_SCAN_JOB� EVENT_SCAN_FAILED_MISSING_PLUGIN�EVENT_FAX_JOB_FAIL�EVENT_FAX_JOB_CANCELED�EVENT_FAX_FAILED_MISSING_PLUGIN�EVENT_COPY_JOB_FAIL�EVENT_COPY_JOB_CANCELED�send_event_to_systray_uir��EVENT_HISTORY_UPDATE�
EVENT_FAX_MIN�
EVENT_FAX_MAXrNr�� EVENT_USER_CONFIGURATION_CHANGED�EVENT_SYS_CONFIGURATION_CHANGED�EVENT_DEVICE_UPDATE_REQUESTED�send_event_to_hpdio�EVENT_DEVICE_UPDATE_ACTIVE�EVENT_DEVICE_UPDATE_INACTIVEr��intr��EVENT_CUPS_QUEUES_ADDED�EVENT_CUPS_QUEUES_REMOVED�EVENT_SYSTEMTRAY_EXIT�	main_loop�quitr�)r|�	more_args�	dup_eventr�r�r)r)r*rx�s��




��

�


�
�rxcCstt�ddt��dS)Nr)r�rrw�EVENT_DEVICE_UPDATE_BLIPr)r)r)r*rEr6rEcC�&|��}|dur||_|�td�dS)N�
systemtray)r�rz�
send_via_pipe�w1�r|rzr�r)r)r*r�sr�cCs|�td�dS)N�hpdio)r��w2)r|r)r)r*r�sr�cCr�)Nzcom.hplip.Toolbox)r�rz�
send_via_dbus�session_busrr)r)r*r�sr�cOsD|ddkr|ddkr tj|dd��}t||dd��SdSdS)N�	interfacer7�memberrw�rv)�typ�args�kwdsr|r)r)r*�
handle_signal(s�rcO�tdg|�Ri|��S)N�system�r�r	r
r)r)r*�handle_system_signal0r6rcOr)N�sessionrrr)r)r*�handle_session_signal4r6rc
Cspt�d�t�dt���|||aaatdd�a	t
�aztt	d�a
WntjjyC}zt�d�t�d�WYd}~nd}~wwzt��aWn/tjjyy}z!t��dkret�d	�t�d�n
t�d
�t�d�WYd}~nd}~wwt
jtddd
ddd�tjtddd
ddd�tj�dt�}t|d�}t�d�zt��WdSty�t�d�YdSw)Nzhp-systray(hpssd)zPID=%dT)�set_as_default)�mainloopz.Unable to connect to dbus system bus. Exiting.rrz/Unable to connect to dbus session bus. Exiting.z8Unable to connect to dbus session bus (running as root?)�sender�destrrr�)�sender_keyword�destination_keyword�interface_keyword�member_keyword�path_keywordr7z/com/hplip/StatusServicezEntering main dbus loop...zCtrl-C: Exiting...)rD�
set_moduler=r�r�r�rr�r�	dbus_looprr�r�
system_busr1�
exceptions�
DBusExceptionr��sys�exitrr�getuid�add_signal_receiverrrr2�BusNamer/�run�KeyboardInterrupt)�write_pipe1�write_pipe2�
read_pipe3r��session_name�status_servicer)r)r*r&9sL


��


��	��

�r&r0)Q�__version__�	__title__�__mod__�__doc__r!�structr��time�getoptr�r�r��picklerr�base.g�
base.codes�baserrrr	r
rr�base.sixextr
rr1rrr�dbus.service�dbus.mainloop.glibr�gi._gobjectrrrrr�gi.repository.GLib�gobject�dbus_loaded�ImportErrorrDr�r"�warnings�simplefilter�DeprecationWarningr�rr�rrr�rr�rF�objectrr2r3r/rYr�r�rlr�r�r�rxrEr�r�r�rrrr&r)r)r)r*�<module>s�$  
�
	{
:

	
�

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists