HEX
Server: Apache/2.4.65 (Unix) OpenSSL/3.5.5
System: Linux cpanel.ns-taberra.com 5.14.0-681.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 11 20:19:22 UTC 2026 x86_64
User: asif201 (1002)
PHP: 8.3.0
Disabled: NONE
Upload Files
File: //usr/share/system-config-printer/__pycache__/cupspk.cpython-39.pyc
a

$x]�m�@sxddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
edd�dZdZdZ
d	ZGd
d�d�ZdS)�N)�
debugprint)�
DBusGMainLoop)�reduceT)Zset_as_defaultz#org.opensuse.CupsPkHelper.Mechanism�/z1org.opensuse.CupsPkHelper.Mechanism.NotPrivilegedc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIS)J�
ConnectioncCs`d|_zt��|_t��|_Wn"tjjy@d|_|_Yn0tj	|||d�|_
|��dS)N)�host�port�
encryption)�_parent�dbusZ
SessionBusZ_session_busZ	SystemBus�_system_bus�
exceptions�
DBusException�cupsr�_connection�_hack_subclass)�selfrrr	�r�*/usr/share/system-config-printer/cupspk.py�__init__5s
�zConnection.__init__cCs`t|jj�}t|j�D]D}|ddkr(qt|j|�}t|�|krBqt||�st|||j�qdS)Nr�_)�typerZgetPrinters�dir�getattr�hasattr�setattr�__call__)rZ
methodtype�fname�fnrrrrFs
zConnection._hack_subclasscCs
||_dS�N)r
)r�parentrrr�
set_parentTszConnection.set_parentcCsLz|j�tt�}t�|t�WStjjy4YdSt	yFYdS0dSr)
rZ
get_object�CUPS_PK_NAME�CUPS_PK_PATHrZ	Interface�
CUPS_PK_IFACEr
r�AttributeError)r�objectrrr�_get_cups_pkXszConnection._get_cups_pkc

OsNd}|�dd�}|sF|��}	|	rFz|	�|�}WntjjyDYn0|sN|s\||i|��Sd}
zX||d|i�}
t|
�tkr�|
dd�}|
ddkr�t|�dkr�|dWS|WSW�qWq`tjj�y}zD|�	�t
kr�td|���t
�t
jd��WYd}~�qWYd}~q`d}~00q`|
dk�rJtd|t|
�f�||i|��SdS)	NZ	signaturezPolicyKit communication issue�r�zDBus exception: %sZpkcancelz%PolicyKit call to %s did not work: %s)�popr'Zget_dbus_methodrr
rr�tuple�lenZ
get_dbus_name�CUPS_PK_NEED_AUTHrZget_dbus_messagerZIPPErrorZIPP_NOT_AUTHORIZED�repr)
rZuse_fallbackZpk_function_name�pk_argsZfallback_function�args�kwdsZpk_functionZdbus_args_signatureZcups_pkZ	pk_retval�retval�errr�_call_with_pk_and_fallbackds>

&

�z%Connection._call_with_pk_and_fallbackcGs�dg}t|�t|�kr0d|d<|�|�t|�Sd}tt|��D�]L}t||�||k�r�||tkr�t||�tkr�|�t||��q@n�||tkr�t||�tkr�|�t||��q@n�||tkr�t||�t	kr�|�t||��q@n�||tk�r||du�r|�d�q@nd||t
k�rRt||�tk�rR|�t
||��q@n.||t
k�r|||du�r||�g�q@nd}|�||�q@||d<t|�S)NFTrr))r,�extendr+�ranger�str�int�append�float�bool�list)r�typesr0r2�	exception�irrr�_args_to_tuple�s<

 
zConnection._args_to_tuplecKs8g}|D]&}||vr$|�||�q|�d�qt|�S)Nr))r9r+)r�namesr1�ret�namerrr�
_kwds_to_vars�szConnection._kwds_to_varscs�d}d}g}g}d}t|�dkrF|jttttgg|�R�\}}}}}n@d|vrV|d}d|vrf|d}d|vrv|d}d|vr�|d}||||f}z&|j|d||jjg|�Ri|��}	Wn�t�yNtd	�d|vr�d
}t|�dkr�t	dd�|�}nd
}t|�dk�rt	dd�|�}nd
}|||f}|j|d||jjg|�Ri|��}	Yn0t|	�
��dk�r�t|	t|	�
��d�t
k�r�|	Si}
|	du�r�|	�
�D]8}t|�tjk�r�t|	|�|
t|�<n|	||
|<�q�i}d}
dt|
���fdd�|
�
�D�}t|�dk�r�d}i}|D]>}|dt|�t���}|dk�rL|
|||<n|
|}�q|du�rj|||<|
d7}
dt|
���fdd�|
�
�D�}�q�|S)NFr��timeout�limit�include_schemes�exclude_schemesZ
DevicesGetz-DevicesGet API exception; using old signatureTcSs|d|S�N�,r��x�yrrr�<lambda>��z'Connection.getDevices.<locals>.<lambda>r)cSs|d|SrJrrLrrrrOrP�:csg|]}|���r|�qSr��endswith��.0rM�Zpostfixrr�
<listcomp>"rPz)Connection.getDevices.<locals>.<listcomp>z
device-urir(csg|]}|���r|�qSrrRrTrVrrrW3rP)r,r@r8r7r4r�
getDevices�	TypeErrorrr�keysrr<�dictr�String)rr0r1�
use_pycupsrGrHrIrFr/�resultZ
result_strr?Zdevices�nZdevice_keysZ
device_uriZdevice_dict�keyrrVrrX�s�&���
��
���0


zConnection.getDevicescOsD|jtgg|�R�\}}|f}|j|d||jjg|�Ri|��dS)NZ	JobCancel)r@r8r4r�	cancelJob�rr0r1r]�jobidr/rrrra;s���zConnection.cancelJobcOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZJobSetHoldUntil)r@r8r7r4r�setJobHoldUntil)rr0r1r]rcZjob_hold_untilr/rrrrdGs���zConnection.setJobHoldUntilcOsD|jtgg|�R�\}}|f}|j|d||jjg|�Ri|��dS)NZ
JobRestart)r@r8r4r�
restartJobrbrrrrePs���zConnection.restartJobc
Os�d}d}t|�dkr2|jttgg|�R�\}}}n^|jtgg|�R�\}}d|vr\|d}n4d|vrn|d}n"d|vr�|d}n|s�t��nd}|�s�|dus�|du�r�tjdd�\}}	t�|�||	f}
|j|d|
|j	j
g|�Ri|��t�|	tj�}t�
|d	�}|�d
�|du�r\t�|d
tj�|��}|dk�r�t�||�d��|��}�q2n8|�d
�|��}|dk�r�|�|�d��|��}�qn|��t�|	�n*||f}
|j|d|
|j	j
g|�Ri|��dS)
af Keeping this as an alternative for the code.
            We don't use it because it's not possible to know if the call was a
            PK-one (and so we push the content of a temporary filename to fd or
            file) or a non-PK-one (in which case nothing should be done).

                filename = None
                fd = None
                file = None
                if use_pycups:
                    if len(kwds) != 1:
                        use_pycups = True
                    elif kwds.has_key('filename'):
                        filename = kwds['filename']
                    elif kwds.has_key('fd'):
                        fd = kwds['fd']
                    elif kwds.has_key('file'):
                        file = kwds['file']
                    else:
                        use_pycups = True

                    if fd or file:
        N��filename�fd�filez/tmp)rZFileGetZrtrr)zUTF-8)r,r@r7rY�tempfile�mkstemp�os�closer4r�getFile�open�O_RDONLY�fdopen�seek�lseek�SEEK_SET�readline�write�encode�remove)
rr0r1�file_objectrhr]�resourcerg�tmpfd�tmpfnamer/Ztmpfile�linerrrrnYsf



���




���zConnection.getFilec
Os�t|�dkr*|jttgg|�R�\}}}n^|jtgg|�R�\}}d|vrT|d}n4d|vrf|d}n"d|vrx|d}n|s�t��nd}|�s�|dus�|du�r�t��\}}	t�|dtj�|du�rt�|dtj�t�	|d�}
|
dk�rF|
dk�rFt�
||
�t�	|d�}
q�n4|�d�|��}|dk�rFt�
||�|��}�q$t�
|�||	f}|j|d	||jjg|�Ri|��t�|	�n*||f}|j|d	||jjg|�Ri|��dS)
Nrfrgrhririr)rPZFilePut)r,r@r7rYrjrkrlrsrt�readrvrrrurmr4r�putFilerx)
rr0r1r]rzrgrhryr{r|�bufr}r/rrrr�s\






������zConnection.putFilecOs�|jtgg|�R�\}}|jgd�fi|��\}}}}}	}
d}|sr|sr|
rrtjdd�\}}|
�|�t�|�d}|r�|s�||	|||f}
|j|d|
|j	j
g|�Ri|��|r�t�|�n0||	|||f}
|j|d|
|j	j
g|�Ri|��dS)N)rg�ppdname�info�location�device�ppdFT)�textZPrinterAddWithPpdFileZ
PrinterAdd)r@r7rDrjrkZwriteFdrlrmr4r�
addPrinter�unlink)rr0r1r]rCrgr�r�r�r�r�Zneed_unlinkrhr/rrrr��s:"

������zConnection.addPrintercOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterSetDevice)r@r7r4r�setPrinterDevice)rr0r1r]rCr�r/rrrr��s���zConnection.setPrinterDevicecOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterSetInfo)r@r7r4r�setPrinterInfo)rr0r1r]rCr�r/rrrr�s���zConnection.setPrinterInfocOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterSetLocation)r@r7r4r�setPrinterLocation)rr0r1r]rCr�r/rrrr�s���zConnection.setPrinterLocationcOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterSetShared)r@r7r;r4r�setPrinterShared)rr0r1r]rCZsharedr/rrrr�s���zConnection.setPrinterSharedcOsP|jtttgg|�R�\}}}}|||f}|j|d||jjg|�Ri|��dS)NZPrinterSetJobSheets)r@r7r4r�setPrinterJobSheets)rr0r1r]rC�start�endr/rrrr�$s 
���zConnection.setPrinterJobSheetscOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterSetErrorPolicy)r@r7r4r�setPrinterErrorPolicy�rr0r1r]rCZpolicyr/rrrr�.s���z Connection.setPrinterErrorPolicycOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterSetOpPolicy)r@r7r4r�setPrinterOpPolicyr�rrrr�8s���zConnection.setPrinterOpPolicycOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterSetUsersAllowed)r@r7r<r4r�setPrinterUsersAllowed�rr0r1r]rCZusersr/rrrr�Bs���z!Connection.setPrinterUsersAllowedcOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterSetUsersDenied)r@r7r<r4r�setPrinterUsersDeniedr�rrrr�Ls���z Connection.setPrinterUsersDeniedc	Os||jtttgg|�R�\}}}}|s,|f}n |jtttgg|�R�\}}}}|||f}|j|d||jjg|�Ri|��dS)NZPrinterAddOptionDefault)r@r7r<r4r�addPrinterOptionDefault)	rr0r1r]rC�option�value�valuesr/rrrr�Us  
���z"Connection.addPrinterOptionDefaultcOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZPrinterDeleteOptionDefault)r@r7r4r�deletePrinterOptionDefault)rr0r1r]rCr�r/rrrr�gs���z%Connection.deletePrinterOptionDefaultcOsD|jtgg|�R�\}}|f}|j|d||jjg|�Ri|��dS)NZ
PrinterDelete)r@r7r4r�
deletePrinter�rr0r1r]rCr/rrrr�qs���zConnection.deletePrintercOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZClassAddPrinter)r@r7r4r�addPrinterToClass�rr0r1r]ZprinterrCr/rrrr�|s���zConnection.addPrinterToClasscOsJ|jttgg|�R�\}}}||f}|j|d||jjg|�Ri|��dS)NZClassDeletePrinter)r@r7r4r�deletePrinterFromClassr�rrrr��s���z!Connection.deletePrinterFromClasscOsD|jtgg|�R�\}}|f}|j|d||jjg|�Ri|��dS)NZClassDelete)r@r7r4r�deleteClassr�rrrr��s���zConnection.deleteClasscOsD|jtgg|�R�\}}|f}|j|d||jjg|�Ri|��dS)NZPrinterSetDefault)r@r7r4r�
setDefaultr�rrrr��s���zConnection.setDefaultcOsF|jtgg|�R�\}}|df}|j|d||jjg|�Ri|��dS)NT�PrinterSetEnabled)r@r7r4r�
enablePrinterr�rrrr��s���zConnection.enablePrintercOsF|jtgg|�R�\}}|df}|j|d||jjg|�Ri|��dS)NFr�)r@r7r4r�disablePrinterr�rrrr��s���zConnection.disablePrintercOsH|jtgg|�R�\}}|ddf}|j|d||jjg|�Ri|��dS)NTr)�PrinterSetAcceptJobs)r@r7r4r�
acceptJobsr�rrrr��s
���zConnection.acceptJobscOs^|jtgg|�R�\}}|jdgfi|��\}|d|f}|j|d||jjg|�Ri|��dS)N�reasonFr�)r@r7rDr4r�
rejectJobs)rr0r1r]rCr�r/rrrr��s
���zConnection.rejectJobscOsxd}d}|j|d||jjg|�Ri|��}i}|durt|��D]4}t|�tjkrft||�|t|�<q>||||<q>|S)NFrZServerGetSettings)r4r�adminGetServerSettingsrZrrr\r7)rr0r1r]r/r^�settingsr?rrrr��s"���z!Connection.adminGetServerSettingscOsD|jtgg|�R�\}}|f}|j|d||jjg|�Ri|��dS)NZServerSetSettings)r@r[r4r�adminSetServerSettings)rr0r1r]r�r/rrrr��s���z!Connection.adminSetServerSettingsN)'�__name__�
__module__�__qualname__rrr!r'r4r@rDrXrardrernrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr4sH4.a		R6







	






r)rl�sysrjrr�debugrZdbus.mainloop.glibr�	functoolsrr"r#r$r-rrrrr�<module>s