__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

Tn�g6x����SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKJ	r	 SSK
Jr "SS5rSr
S	r"S
S5r"SS
\5rSrSrSrSrSrSrSr\S:Xa\"5 gg)�N�)�_debugprint)�config)�reducec��\rSrSrSS/rSrSrSrSrSr	S	r
S
rSrSr
S
rSSjrSSjrSrSrSrSrSrSSjrSSjrSSjrSrSrg)�Printer��options�localc���XlX l/Ul[U5S:�nSnU(a(UR"S0UD6 UR
(aSnOSnU(aUR
5 SUlg)z�
@param name: printer name
@type name: string
@param connection: CUPS connection
@type connection: CUPS.Connection object
@param kw: printer attributes
@type kw: dict indexed by string
rTFN�)�name�
connection�
class_members�len�update�is_class�
getAttributes�_ppd)�selfrr�kw�have_kw�fetch_attrss      �9/usr/lib/python3/dist-packages/cupshelpers/cupshelpers.py�__init__�Printer.__init__sa���	�$������r�(�Q�,������K�K��2���}�}�"��#������!���	�c�`�URb![R"UR5 gg�N)r�os�unlink�rs r�__del__�Printer.__del__9s!���9�9� ��I�I�d�i�i� �!rc� �SUR-$)Nz<cupshelpers.Printer "%s">)rr"s r�__repr__�Printer.__repr__=s��-��	�	�9�9rc�(�SnSn[U5n[RHnnURU5(dMU"XCS5nXPR;aM6US:XaSn[X[
UR[[U5-55 Mp g)Nc�"�UR5$r)�lower)�strs r�_ascii_lower�+Printer._expand_flags.<locals>._ascii_lowerBs���9�9�;�r�
CUPS_PRINTER_�classr)	r�cups�__dict__�
startswith�_flags_blacklist�setattr�bool�type�getattr)rr,�prefix�
prefix_lengthr�	attr_names      r�
_expand_flags�Printer._expand_flags@s���	 �!���F��
��M�M�D����v�&�&� ��n�!5�6��� 5� 5�5�x���'�Z�����T�Y�Y���t�)<�<�=�?�"rc�L�URSS5UlUR[R:gUlURSS5UlURSS5UlURSS5UlURSS5UlURS	S5Ul	URS
S5Ul
URSS5Ul[UR5[:waUR/UlUR5 URcUR(+UlU?URS/5Ul[UR5[:waUR/UlURR!5 Xlg)
zh
Update object from printer attributes.

@param kw: printer attributes
@type kw: dict indexed by string
z
printer-staterz
device-uri�zprinter-infozprinter-is-sharedNzprinter-locationzprinter-make-and-modelzprinter-typezprinter-uri-supportedzmember-names)�get�stater0�IPP_PRINTER_STOPPED�enabled�
device_uri�info�	is_shared�location�make_and_modelr6�
uri_supported�listr;�
not_sharedr�sort�other_attributes)rrs  rr�Printer.updateSsL���V�V�O�Q�/��
��z�z�T�%=�%=�=����&�&��r�2����F�F�>�2�.��	���� 3�T�:������1�2�6��
� �f�f�%=�r�B����F�F�>�1�-��	��V�V�$;�R�@�����#�#�$��,�"&�"4�"4�!5�D�������>�>�!�!%���0�D�N��O��V�V�N�B�7�����#�#�$��,�"&�"4�"4�!5�D�������"� "�rc��URRUR5n0Ul0UlSSS/4S/SQ4S.UlUR
5GHup#URS5(a�US[S5*nUS;aM3URUS	-S5=(d% UR
RUS5=(d S
n[U[5(a
[SU5nX0RU'US	-U;aXS	-nX54UR
U'M�M�URS	5(aM�US:wdM�US
:wdM�US:wdM�URS5(aGMX0RU'GM" URSS5uUlUlURSS/5UlURS
S5UlURSS/5UlURSS
5=(d SUlURSS/5UlSUl/UlSU;aUSUlSUlOSU;a
USUlSR/UR,5UlUR2"S0UD6 g)z�
Fetch further attributes for the printer.

Normally only a small set of attributes is fetched.  This
method is for fetching more.
�False�True�none)rQ�singlezsingle-thick�doublezdouble-thick)�	landscapezpage-borderz-defaultN)z
job-sheets�printer-error-policy�printer-op-policyz
notify-eventszdocument-formatznotify-lease-durationz
-supportedr>c��US-U-$)N�,r
)�x�ys  r�<lambda>�'Printer.getAttributes.<locals>.<lambda>�s���3��q�rzjob-sheets-defaultrUrVzrequesting-user-name-)rQrQzjob-sheets-supportedzprinter-error-policy-supported�defaultzprinter-op-policy-supportedTzrequesting-user-name-allowedFzrequesting-user-name-deniedz, r
)r�getPrinterAttributesr�
attributesrL�possible_attributes�items�endswithrr?�
isinstancerIrr2�job_sheet_start�
job_sheet_end�job_sheets_supported�error_policy�error_policy_supported�	op_policy�op_policy_supported�
default_allow�except_users�join�except_users_stringr)r�attrs�key�valuer�	supporteds      rr�Printer.getAttributesosx�����4�4�T�Y�Y�?����� "���"�V�W�$5�6�#�&?�@�$�� � �+�+�-�J�C��|�|�J�'�'��,�S��_�,�-���5�5�
�!�I�I�d�\�&9�4�@�� �4�4�8�8��t�D�����u�d�+�+�"�$8�%�@�E�(-����%���$��-� %�<�&7� 8�I�6;�5G�D�,�,�T�2�.��l�l�L�1�1��-�-��/�/��,�,��n�n�&=�>�>�-2�%�%�c�*�=(�@49�9�9� �"2�44�0���d�0�$)�I�I�.D�v�h�$O��!�!�I�I�&<�f�E���&+�i�i�,�v�h�'8��#����#6��;�H�y���#(�9�9�)�I�;�$8�� �"������)�U�2� %�&D� E�D��!&�D��
*�e�
3� %�&C� D�D��#'�9�9�T�->�->�#?�� �����u�rc���URSRS5(dgURSSSnURS5SnURS5SnUS:XaSnU$)	zK
Find out which server defines this printer.

@returns: server URI or None
rzipp://N��/�:zlocalhost.localdomain�	localhost)rHr2�split)r�uris  r�	getServer�Printer.getServer�sq���!�!�!�$�/�/��9�9��� � ��#�A�B�'���i�i��n�Q����i�i��n�Q����)�)��C��
rc��SnURcKURRUR5Ul[R
"UR5nUc-URb [R
"UR5nU$![Ra/nURup4U[R:XaSnSnANoeSnAff=f)zo
Obtain the printer's PPD.

@returns: cups.PPD object, or False for raw queues
@raise cups.IPPError: IPP error
NF)	rr�getPPDrr0�PPD�IPPError�args�
IPP_NOT_FOUND)r�result�emargs�e�ms     rr~�Printer.getPPD�s������9�9��
� �O�O�2�2�4�9�9�=��	����4�9�9�-���>�d�i�i�3��X�X�t�y�y�)�F��
���=�=�
��������*�*�*�"�F���
�s�A
B
�
C�!$C�
C�Cc��[U[5(aE[R"[R5nUS:wa[U5R
US5nURRURX5 g)z~
Set a printer's option.

@param name: option name
@type name: string
@param value: option value
@type value: option-specific
�.N)
rc�float�locale�nl_langinfo�	RADIXCHARr+�replacer�addPrinterOptionDefaultr)rrrq�	radixchars    r�	setOption�Printer.setOption�s]���u�e�$�$��*�*�F�,<�,<�=�I��C���U��+�+�Y��<�����/�/��	�	�4�Grc�P�URRURU5 g)zH
Unset a printer's option.

@param name: option name
@type name: string
N)r�deletePrinterOptionDefaultr)rrs  r�unsetOption�Printer.unsetOption�s��	
���2�2�4�9�9�d�CrNc��U(a&URRUR5 gU(a%URRURUS9 gURRUR5 g)z�
Set the printer's enabled state.

@param on: whether it will be enabled
@type on: bool
@param reason: reason for this state
@type reason: string
��reasonN)r�
enablePrinterr�disablePrinter�r�onr�s   r�
setEnabled�Printer.setEnabled�sQ����O�O�)�)�$�)�)�4�����.�.�t�y�y��.�H����.�.�t�y�y�9rc��U(a&URRUR5 gU(a%URRURUS9 gURRUR5 g)z�
Set the printer's accepting state.

@param on: whether it will be accepting
@type on: bool
@param reason: reason for this state
@type reason: string
r�N)r�
acceptJobsr�
rejectJobsr�s   r�setAccepting�Printer.setAcceptingsQ����O�O�&�&�t�y�y�1�����*�*�4�9�9�V�*�D����*�*�4�9�9�5rc�P�URRURU5 g)zY
Set the printer's shared state.

@param on: whether it will be accepting
@type on: bool
N)r�setPrinterSharedr)rr�s  r�	setShared�Printer.setShareds��	
���(�(����B�7rc�P�URRURU5 g)zS
Set the printer's error policy.

@param policy: error policy
@type policy: string
N)r�setPrinterErrorPolicyr�r�policys  r�setErrorPolicy�Printer.setErrorPolicys��	
���-�-�d�i�i��@rc�P�URRURU5 g)z[
Set the printer's operation policy.

@param policy: operation policy
@type policy: string
N)r�setPrinterOpPolicyrr�s  r�setOperationPolicy�Printer.setOperationPolicy's��	
���*�*�4�9�9�f�=rc�P�URRURX5 g)zv
Set the printer's job sheets.

@param start: start sheet
@type start: string
@param end: end sheet
@type end: string
N)r�setPrinterJobSheetsr)r�start�ends   r�setJobSheets�Printer.setJobSheets0s��	
���+�+�D�I�I�u�Brc��[U[5(a�UR5nUVs/sHoDRS5PM nn/nUHnURU5 M UVs/sHoDR	5PM nnUVs/sH
oU(dMUPM nnU(a'UR
R
URU5 gUR
RURU5 gs snfs snfs snf)z�
Set access control list.

@param allow: whether to allow by default, otherwise deny
@type allow: bool
@param except_users: exception list
@type except_users: string list
rXN)	rcr+ry�extend�stripr�setPrinterUsersDeniedr�setPrinterUsersAllowed)r�allowrl�users�u�_fs      r�	setAccess�Printer.setAccess;s����l�C�(�(� �&�&�(�E�+0�1�5�a�W�W�S�\�5�E�1��L����#�#�A�&��/;�<�|�!�G�G�I�|�L�<�)5�<��2��B��L�<���O�O�1�1�$�)�)�\�J��O�O�2�2�4�9�9�l�K��2��=��<s�C0�&C5�
C:�C:c���/n/SQnURRUS9nUR5HtupgUSnX�R
S5S-SnX�R:waM2U(aSU;dMAUSS:XdMLURU5 UcMb[U5U:XdMs U$ U$![a URR5nN�f=f![Ra Us$f=f! M�=f)	z�
Find out whether jobs are queued for this printer.

@param only_tests: whether to restrict search to test pages
@type only_tests: bool
@returns: list of job IDs
)�job-id�job-printer-uri�job-name)�requested_attributesr�rvrNr�z	Test Page)
r�getJobs�	TypeErrorr0r�ra�rindexr�appendr)	r�
only_tests�limit�ret�r�jobs�idrorzs	         r�
jobsQueued�Printer.jobsQueuedRs����	�
2�=�����.�.�Q�.�G������I�B�
��-�.���*�*�c�*�Q�.�/�0���i�i�����u�$��z�"�k�1��
�
�B���$��c��e�);���
�!&� �
��-�
2����.�.�1��
2���}�}�	��J�	��
��s4�B,�C2�,$C�C�C�C�C/�.C/�2C7c�(�/n/SQnURRSUS9nUR5H�upVUSnXwR
S5S-SnXpR:waM2URS	[R5[R:aMfURU5 UcM|[U5U:XdM� U$ U$![a URRSS9nN�f=f![Ra Us$f=f! M�=f)
zW
Find out whether there are preserved jobs for this printer.

@return: list of job IDs
)r�r��	job-state�	completed)�
which_jobsr�)r�r�rvrNr�)
rr�r�r0r�rar�rr?�IPP_JOB_PENDING�IPP_JOB_COMPLETEDr�r)rr�r�r�r�r�rorzs        r�
jobsPreserved�Printer.jobsPreservedws$����		�
H�>�����.�.�;�EF�/�H������I�B�
��-�.���*�*�c�*�Q�.�/�0���i�i����	�	�;��/�/�1�37�3I�3I�J���J�J��O�� �S�#�Y�%�%7���
�&��
��+�
H����.�.�;�.�G��
H���}�}�	��J�	��
��s4�C�D�#C-�*C0�,C-�-C0�0D	�D	�Dc�"�URSUS9$)zT
Find out whether test jobs are queued for this printer.

@returns: list of job IDs
T)r�r�)r�)rr�s  r�testsQueued�Printer.testsQueued�s�����4�u��=�=rc	��URRUR5 [R"5nSnURRX!R
5S9 URS5 UR5Vs/sHoURS5PM nnSnSnUHOnURS5(dMUR!S5S	n	X�R:waS
USS-Xh'SnUS	-
nMQ U(a�URS5 UR#UVs/sHoUR%S5PM sn5 UR'5 UR)5 URS5 URR+X!R
5S9 UsSSS5 $![RaZnURunU[R[R4;a
SnASSS5 g[R"U5eSnAff=fs snfs snf![Ra SSS5 gf=f!,(df   g=f)
z)
Set this printer as the system default.
z/admin/conf/lpoptions)�fdNFrzUTF-8zDefault � rzDest �T)r�
setDefaultr�tempfile�
TemporaryFile�getFile�filenor0�	HTTPErrorr��HTTP_NOT_FOUND�HTTP_AUTHORIZATION_CANCELED�seek�	readlines�decoder2ry�
writelines�encode�truncate�flush�putFile)
r�f�resourcer��s�line�lines�changed�irs
          r�setAsDefault�Printer.setAsDefault�s���	
���"�"�4�9�9�-��
#�
#�
&�!�
)�2�����'�'��X�X�[�'�A�
�F�F�A�J�78�{�{�~�G�~�t�k�k�'�*�~�E�G��G��A����?�?�J�/�/��:�:�s�+�A�.�D��y�y�(�#*�T�!�"�X�#5���"&����F�A�������
�����H�����G� 4��H�I��
�
�
����
�����
�!��O�O�+�+�X�(�(�+�+�F��I'�
&���>�>�
)��v�v�����,�,�d�.N�.N�O�O� �'�
&��n�n�a�(�(��
)��H��I���~�~�!� �E'�
&�B!��C'�
&�s}�I�)F*�&#I�	H�#I�AI�%H 
�?8I�8'H%�I�*H�>2H�0I�=H�H�
I�%I�9I�I�I�
I)rr_rrrkrCrBrgrhrlrnrDrErerdrfrFrGrrirjrLr`r@r6rHr)FN)�__name__�
__module__�__qualname__�__firstlineno__r3rr#r&r;rrr{r~r�r�r�r�r�r�r�r�r�r�r�r�r��__static_attributes__r
rrrrs��!�7�+���4!�:�?�&#�8B�H
��0H� D�:�"6�"8�A�>�	C�L�.#�J!�F>�,rrc���UR5nUR5nUR5H?up4[X040UD6nXAU'X2;dMX#UlURR5 MA U$)z�
Obtain a list of printers.

@param connection: CUPS connection
@type connection: CUPS.Connection object
@returns: L{Printer} list
)�getPrinters�
getClassesrarrrK)r�printers�classesr�printers     rrr�sq���%�%�'�H��#�#�%�G�!���)�
���$�6�g�6�� ����?�$+�M�G�!��!�!�&�&�(�*��Orc��0nURS5nUHNnURS5S:XaMURSS5upEUR5XR5'MP SU;aURSUS5 SU;aURSUS5 S	U;aURS
US	5 SHnURUS5 M US
S:Xa/US
'U$US
RS
5US
'U$)z�
Parse an IEEE 1284 Device ID, so that it may be indexed by field name.

@param id: IEEE 1284 Device ID, without the two leading length bytes
@type id: string
@returns: dict indexed by field name
�;rw���r�MANUFACTURER�MFG�MODEL�MDLzCOMMAND SET�CMD)	rrr�CLS�DES�SN�S�P�Jr>rX)ry�findr��
setdefault)r��id_dict�pieces�piecerrqs      r�
parseDeviceIDr�s���G�
�X�X�c�]�F����:�:�c�?�b� ���k�k�#�a�(���!&�����
�
�
��	�
�� ����5�'�.�"9�:��'�����5�'�'�"2�3�������5�'�-�"8�9�H�����4��$�I��u�~��������N�!���-�-�c�2�����Nrc�*�\rSrSrSrSrSrSrSrg)�Devicei�z&
This class represents a CUPS device.
c�"�XlURSS5UlURSS5UlURSS5UlURSS5UlURSS5UlURS5nUSUl[U5S	:HUl
[UR
5UlURS
5nUS:wa7URRSS5(dXS
-SURS'ggg)zV
@param uri: device URI
@type uri: string
@param kw: device attributes
@type kw: dict
zdevice-classr>zdevice-infozdevice-make-and-modelz	device-idzdevice-locationrwrrzserial=r
r�N)rzr?�device_classrDrGr�rFryr6rrrrr)rrzr�
uri_piecesr�s     rr�Device.__init__s������F�F�>�2�6����F�F�=�"�-��	� �f�f�%<�b�A����&�&��b�)������0�"�5��
��Y�Y�s�^�
���]��	��J���*��
�%�d�g�g�.����H�H�Y�����7�4�<�<�+�+�T�"�5�5�!$��U�V��D�L�L���6�7rc� �SUR-$)Nz<cupshelpers.Device "%s">)rzr"s rr&�Device.__repr__s��,�t�x�x�7�7rc�F�UcgURUR:waUR(aggURnUS:XaeURRS5S:waSnOCURRS5S:waSnO!URRS	5S:waS
nUS:Xa/URR	5RS5S:waS
nURnUS:XaeURRS5S:waSnOCURRS5S:waSnO!URRS	5S:waS
nUS:Xa/URR	5RS5S:waS
nUR(d�X#:wa�US:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS:XagUS
:XagUS
:XagUS:XagUS:XagUS:XagUS:XagUS
:XagUS
:Xag[UR5[UR5:nU(dURUR:nU$)z)
Compare devices by order of preference.
TF�dnssdz._ippr
�dnssdiz._pdl-datastream�dnssdsz	._printer�dnssdl�usb�fax�usbfax�serial�parallel�hp�hpfax�ipps�ipp�socket�lpd)rr6rzrr*r5r�rD)r�other�stype�otyper�s     r�__lt__�
Device.__lt__!s����=���=�=�E�N�N�*��~�~����	�	���G���x�x�}�}�W�%��+� �������1�2�b�8� �������{�+�r�1� ���E�>��x�x�~�~��$�$�U�+�r�1� ���
�
���G���y�y�~�~�g�&�"�,� ������� 2�3�r�9� ��������,��2� ���E�>��y�y��� �%�%�e�,��2� ���}�}�%�.��� ���� ���
�"���
�"����}����}������������ ���� ������������~����~���� ���� ���� ���� ���� ���� ����~����~����~����~���� ���� ���d�g�g���e�h�h��/����Y�Y����+�F��
r)	r r�rrDrrFrGr6rzN)	r�r�r�r�__doc__rr&r8rr
rrrr�s���-�48�^rrc� �\rSrSrSrSrSrg)�_GetDevicesCalli�c���SU;a7URS5UlURUS'UR"S0UD6$SUlUR"S0UD6nURX5$)N�
reply_handlerr
)r?�_client_reply_handler�_reply_handler�
getDevices)rr�kwdsr�s    r�call�_GetDevicesCall.call�sk���d�"�)-���?�)C�D�&�$(�$7�$7�D��!��(�(�1�D�1�1�%)��"��&�&�/�$�/���"�"�J�7�7rc��UR5HJup4[U40UD6nXRU'URS:wdM'URS:XdM9URUlML UR(aUR	X5 gU$)Nr>)rarrDrGr?)rr�devicesrz�data�devices      rr@�_GetDevicesCall._reply_handler�sm�� ����I�C��C�(�4�(�F�!�C�L��{�{�b� �V�%:�%:�b�%@�(.����%�	)��%�%��&�&�
�<��Nr)r?N)r�r�r�rrCr@rr
rrr<r<�s��8�
rr<c�8�[5nURX5$)z�
Obtain a list of available CUPS devices.

@param connection: CUPS connection
@type connection: cups.Connection object
@returns: a list of L{Device} objects
@raise cups.IPPError: IPP Error
)r<rC)rr�ops   rrArA�s��
�	�B�
�7�7�J�#�#rc��URU5 URU5 UR5cURU5 gg)z�
Set a new printer enabled, accepting jobs, and (if necessary) the
default printer.

@param connection: CUPS connection
@type connection: cups.Connection object
@param name: printer name
@type name: string
@raise cups.IPPError: IPP error
N)r�r��
getDefaultr�)rrs  r�activateNewPrinterrN�sD�����d�#����4� �����'����t�$�(rc
��^�U4SjmU4SjnU"U5H�nURS:XaMURUR5nU(dM9URUR:XdMUURnURHYnUSU:XdMURURU5 [
S[UR5<S[U5<35 M[ M� g)z�
Copy default options between PPDs.

@param ppd1: source PPD
@type ppd1: cups.PPD object
@param ppd2: destination PPD
@type ppd2: cups.PPD object
c�z>�URSSnURHnURT"U55 M U$r)r
�	subgroupsr�)�groupr
�g�getPPDGroupOptionss   �rrT�*copyPPDOptions.<locals>.getPPDGroupOptions�s6����-�-��"�����A��N�N�-�a�0�1�!��rc3�Z># �URHnT"U5HnUv� M	 M g7fr)�optionGroups)�ppdrR�optionrTs   �r�iteratePPDOptions�)copyPPDOptions.<locals>.iteratePPDOptions�s*�����"�"��,�U�3���\�4�#�s�(+�
PageRegion�choicezset z = N)�keyword�
findOption�ui�	defchoice�choices�
markOptionr�repr)�ppd1�ppd2rZrY�
new_optionrqr]rTs       @r�copyPPDOptionsrh�s������
$�D�)���>�>�\�)���_�_�V�^�^�4�
��:�&�)�)�Z�]�]�2��$�$�E�$�,�,���(�#�U�*��O�O�J�$6�$6��>��$�
�8J�8J�2K�26��,�"@�A�-�
*rc�,�Sn/SQnUHnX:XdM
SnM [S5nUH�nURS5(aMUR5R5RS5(aSnMQUR5R5RS5(aSnM�UR5S:wdM� O UR	5 URS	U5 [
S
U-5 g! N&=f! [
SU-5 g=f)
z�
Set the PPD page size according to locale.

@param ppd: PPD
@type ppd: cups.PPD object
@param language: language, as given by the first element of
locale.setlocale
@type language: string
�A4)�C�POSIX�en�en_US�en_CA�fr_CA�Letterz/etc/papersize�#�a4�letterr>�PageSizezset PageSize = %sz*Failed to set PageSize (%s not available?)N)�openr2r�r*�closercr)rX�language�sizert�eachr�r�s       r�setPPDPageSizer{�s����D�
>�F������D��


��"�#���D����s�#�#���z�z�|�!�!�#�.�.�t�4�4�������#�#�%�0�0��:�:��������#���	
���	�J����
�D�)��(�4�/�0��
���
J��A�D�H�I�s�B&C:�C:� D�:C>�Dc��^�SSjn/mU4SjnS=p4URS5nU(Ga�URRSS5nURSS5nURS	S
5nURSS5nURS
5S:wdURS5S:waSnUR	S5nUH�nUR5R	S5n	U	H�n
U
R5R	S5nUSnU"U5nU(d
U"U5 M@[RRU5S:XdMe[U5nSn
SnX�:dM{X�nURU5(a'U[U5SnU"U5nU(dU"U5 M�U
S-
n
X�:aMMM� U(aM� O U(dU(Gd[R"SS9unn[R"U5 URU5 [R"US[R 5 [R""USSS9nSnUH�nURU5(dMU[U5SR5RS5nUR	S5unnnU"U[$R&S-5nU(aMU"[$R&S-U-5 M� T$! M�=f) z�
Check that all relevant executables for a PPD are installed.

@param ppd: PPD
@type ppd: cups.PPD object
@returns: string list, representing missing executables
c��US:XagURS5nUS:waUSUn[U5S:XagUSS:XaI[R"U[R5(a[SU-5 U$[S	U-5 gURS
5S:wagUS;agUR
S5H�nUR[RR5[RR-U-n[R"U[R5(dMv[SU-5 Us $ [U<S
U<35 g)N�-�builtin�%r
r�truervz	%s: foundz
%s: NOT found�=)'rwr��[�alias�bind�break�cd�continue�declare�echo�else�eval�exec�exit�export�fi�if�kill�letr�popd�printf�pushd�pwd�read�readonly�set�shift�shopt�source�test�then�trapr6�ulimit�umask�unalias�unset�waitrwz: NOT found in )
rrr �access�X_OKrry�rstrip�path�sep)rr��p�	component�files     r�	pathcheck�%missingExecutables.<locals>.pathcheck	s���3�;���I�I�s�O����7����8�D���:��?����7�c�>��y�y�$����(�(��[�4�/�0����_�t�3�4���9�9�c�?�b� ���2�2�����S�)�I��#�#�R�W�W�[�[�1�B�G�G�K�K�?�$�F�D��y�y�$����(�(��[�4�/�0���	*�
	�d�D�9�:�rc�`>�URS5nUS:waUSUnTRU5 g)Nr�r
)rr�)�exer��exes_to_installs  �r�add_missing�'missingExecutables.<locals>.add_missing/s0����H�H�c�N����7��b�q�'�C�����$rN�FoomaticRIPCommandLinez&&
r>z&quot;�"z&lt;�<z&gt;�>�(r
�&r	�|r�r�gsrz-sIjsServer=T)�text�rtzutf-8)�encodingz*cupsFilter:z/filter:/usr/lib64/cups/filterz/filter/)z
/usr/bin:/bin)�findAttrrqr�rryr�r r��basenamerr2r��mkstempr!�writeFd�lseek�SEEK_SET�fdopenr�cupsserverbindir)rXr�r�r��exepath�attr�cmdline�pipes�pipe�cmds�cmdr��argn�argi�search�arg�tmpfd�tmpfnamer�r��mimetype�costr�s                      @r�missingExecutablesr��s����"�H�O�%���C��<�<�1�2�D���*�*�$�$�f�b�1���/�/�8�S�1���/�/�6�3�/���/�/�6�3�/���L�L�#��"�$��L�L�#��"�$��G��
�
�s�#���D��:�:�=�&�&��,�D����y�y�|�)�)�3�/���1�g��#�S�/�����%��
�7�7�#�#�W�-��5���:�D��D�+�F��+�"�j���>�>�6�2�2�"%�c�6�l�m�"4�C�&/��o�G�#*� +�S� 1�!���	���+��6�7��?�B�c�%�,�,�4�8����
�	�	�8�����U��
���%��B�K�K�(��I�I�u�d�W�5�����D�����'�'��C��L�M�*�0�0�3�9�9�3�?���,0�J�J��,<�)�X�t�S�$�S�%+�%<�%<�@>�&>�?���w���!8�!8�:�!E��!K�L�������s�
K'�'K,c� �[U5n/U4$)z�
Check that all relevant executables for a PPD are installed.

@param ppd: PPD
@type ppd: cups.PPD object
@returns: string list pair, representing missing packages and
missing executables
)r�)rX�executabless  r�missingPackagesAndExecutablesr��s��%�S�)�K����rc��[R"5n[U5R5H#n[	UR
UR5 M% gr)r0�
ConnectionrA�values�printrzr)�crHs  r�_mainr��s7������A��Q�-�&�&�(��
�v�z�z�6�>�>�*�)r�__main__)r0�pprintr r��re�stringr�r>rr�	functoolsrrrrr�objectr<rArNrhr{r�r�r�r�r
rr�<module>r�s���,.�-�-�
����r�r�h
�$�:@�@�D�f��.
$�%�$A�@&J�PA�F
�+��Z��	�G�r

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 1.08 KB 0644
config.cpython-313.pyc File 241 B 0644
cupshelpers.cpython-313.pyc File 35.32 KB 0644
debug.cpython-313.pyc File 1.84 KB 0644
installdriver.cpython-313.pyc File 2.88 KB 0644
openprinting.cpython-313.pyc File 18.44 KB 0644
ppds.cpython-313.pyc File 37.65 KB 0644
smburi.cpython-313.pyc File 3.62 KB 0644
xmldriverprefs.cpython-313.pyc File 22.39 KB 0644
Filemanager