%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3.9/site-packages/cockpit/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3.9/site-packages/cockpit/__pycache__/packages.cpython-39.opt-1.pyc

a

��j�\�@s"ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZddlmZddl m!Z!ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.e�/e0�Z1e�2�e3ee3d	�d
d��Z4e3e3d�d
d�Z5e�2�e3d�dd��Z6ede$e%�Z7e7e7d�dd�Z8Gdd�de�Z9Gdd�d�Z:Gdd�de;e$�Z<Gdd�d�Z=Gdd�de=�Z>Gd d!�d!e=�Z?Gd"d#�d#e=�Z@Gd$d%�d%e;e$�ZAGd&d'�d'�ZBGd(d)�d)�ZCGd*d+�d+ejDd,d-�ZEdS).�N)�Path)
�BinaryIO�Callable�ClassVar�Dict�	Generator�Iterable�List�
NamedTuple�Optional�Pattern�Sequence�Tuple�TypeVar)�bus�)�config)�__version__)�	JsonError�
JsonObject�	JsonValue�get_bool�get_dict�get_enum�get_int�get_objv�get_str�get_strv�json_merge_patch�typechecked)�accept_language�returnc
	Cst�d|�g}|�d�D]�}|����}t�d|�|�d�\}}}zt|pPd�}WntylYqYn0|rt�d||�|�||f�|�	d�\}}}qnq|j
dd	�d
d�t�d|�g}|D]&\}}	|d
kr�q�||vr�|�|�q�t�d|�t|�S)aLParse the Accept-Language header, if it exists.

    Returns an ordered list of languages, with fallbacks inserted, and
    truncated to the position where 'en' would have otherwise appeared, if
    applicable.

    https://tools.ietf.org/html/rfc7231#section-5.3.5
    https://datatracker.ietf.org/doc/html/rfc4647#section-3.4
    zparse_accept_language(%r)�,z
  entry %rz;q=g�?z    adding %r q=%r�-cSs|dS)Nr�)Zpairr$r$�4/usr/lib/python3.9/site-packages/cockpit/packages.py�<lambda>Y�z'parse_accept_language.<locals>.<lambda>T��key�reversez  sorted list is %r�enz  results list is %r)�logger�debug�split�strip�lower�	partition�float�
ValueError�append�
rpartition�sort�tuple)
r Zlocales_with_q�entry�locale�_Zqstr�qZ_region�resultsZ_qr$r$r%�parse_accept_language;s0
r=)�versionr!cCsd�dd�|�d�D��S)z7Convert a version string to a form that can be compared�.css|]}|�d�VqdS)�N)�zfill)�.0�partr$r$r%�	<genexpr>or'z"sortify_version.<locals>.<genexpr>)�joinr.)r>r$r$r%�sortify_versionlsrF�r!cCs6dD]"}tj�tj�|d��r|Sqt�d�dS)zkDetect libexecdir on current machine

    This only works for systems which have cockpit-ws installed.
    )z/usr/local/libexecz/usr/libexecz/usr/local/lib/cockpitz/usr/lib/cockpit�cockpit-askpasszCould not detect libexecdirz/nonexistent/libexecN)�os�path�existsrEr,�warning)�	candidater$r$r%�get_libexecdirrs


rN�J)�objr!cCszt|t�r>d|vr0t�d�}|dur0|�d|�S|�dt��St|t�rZdd�|��D�St|t�rrdd�|D�S|SdS)Nz${libexecdir}/cockpit-askpassrHz
${libexecdir}cSsi|]\}}|t|��qSr$��patch_libexecdir)rBr)�valuer$r$r%�
<dictcomp>�r'z$patch_libexecdir.<locals>.<dictcomp>cSsg|]}t|��qSr$rQ)rB�itemr$r$r%�
<listcomp>�r'z$patch_libexecdir.<locals>.<listcomp>)	�
isinstance�str�shutil�which�replacerN�dict�items�list)rPZabs_askpassr$r$r%rR�s



rRc@s>eZdZUeed<eed<dZeeed<dZeeed<dS)�Document�data�content_typeN�content_encoding�content_security_policy)	�__name__�
__module__�__qualname__r�__annotations__rXrbrrcr$r$r$r%r_�s
r_c@seZdZdd�dd�ZdS)�PackagesListenerNrGcCsdS)z+Called when the packages have been reloadedNr$��selfr$r$r%�packages_loaded�sz PackagesListener.packages_loaded)rdrerfrkr$r$r$r%rh�srhcs"eZdZed��fdd�Z�ZS)�BridgeConfig�rScs�t��|�t|dd�|_t|dddgd�|_t|ddd�|_t|di�|_	|jsb|j	sbt
|d	��t|d
d�|_t|d�|_
|j
s�t
|d��t|d
d|j
v�|_|jp�|j
d|_dS)N�label�method�spawnZStartTransientUnit�
privilegedF)�default�matchz&must have match rules or be privileged�environr$zspawn vector must be non-empty�polkitZpkexecr)�super�__init__rrnrrorrqrrsrrrtrpru�name�rjrS��	__class__r$r%rw�s

zBridgeConfig.__init__)rdrerfrrw�
__classcell__r$r$rzr%rl�srlc@s8eZdZeed�dd�Zeegefed�dd�ZdS)�	ConditionrGcCst�dS�N��NotImplementedErrorrir$r$r%�get_condition_files�szCondition.get_condition_files��path_existsr!cCst�dSr~r�rjr�r$r$r%�check�szCondition.checkN)	rdrerfrrXr�r�boolr�r$r$r$r%r}�sr}c@sVeZdZedd�dd�Zed�dd�Zeed�dd	�Ze	egefed
�dd�Z
dS)
�ConstantConditionN�rSr!cCs
||_dSr~rmryr$r$r%rw�szConstantCondition.__init__rGcCsd|j�d�S)NzConstantCondition(�)rmrir$r$r%�__str__�szConstantCondition.__str__cCsgSr~r$rir$r$r%r��sz%ConstantCondition.get_condition_filesr�cCs|jSr~rmr�r$r$r%r��szConstantCondition.check)rdrerfr�rwrXr�rr�rr�r$r$r$r%r��sr�c@sXeZdZeedd�dd�Zed�dd�Zeed�dd	�Ze	egefed
�dd�Z
dS)
�PathExistsConditionN)rJrKr!cCs||_||_dSr~�rJrK)rjrJrKr$r$r%rw�szPathExistsCondition.__init__rGcCsd|j�d|j�d�S)NzPathExistsCondition(z	, exists=r�r�rir$r$r%r��szPathExistsCondition.__str__ccs|jVdSr~)rJrir$r$r%r��sz'PathExistsCondition.get_condition_filesr�cCs|j||j�kSr~)rKrJr�r$r$r%r��szPathExistsCondition.check)rdrerfrXr�rwr�rr�rr�r$r$r$r%r��sr�c@sZeZdZeedd�dd�Zed�dd�Zeed�dd	�Ze	ege
fe
d
�dd�ZdS)
�DisjunctiveConditionN)�
conditionsr!cCs
||_dSr~)r�)rjr�r$r$r%rw�szDisjunctiveCondition.__init__rGcCsdd�dd�|jD���d�S)NzDisjunctiveCondition(�, css|]}t|�VqdSr~)rX�rB�cr$r$r%rD�r'z/DisjunctiveCondition.__str__.<locals>.<genexpr>r�)rEr�rir$r$r%r��szDisjunctiveCondition.__str__ccs|jD]}|��EdHqdSr~�r�r��rj�	conditionr$r$r%r��s
z(DisjunctiveCondition.get_condition_filesr�cst�fdd�|jD��S)Nc3s|]}|���VqdSr~)r�r��r�r$r%rD�r'z-DisjunctiveCondition.check.<locals>.<genexpr>)�anyr�r�r$r�r%r��szDisjunctiveCondition.check)rdrerfrr}rwrXr�r�rr�r�r$r$r$r%r��sr�csReZdZeoee�Zeed��fdd�Zee	d�dd�Z
eed�dd	�Z
�ZS)
�Manifest)rJrScs�t��|�||_t|d|jj�|_t|dt�|_t|dd�|_	t|dd�|_
t|d|j�|_|j
dur�t|di�}|��D]@\}}|d	kr�t|d
��tt|t��|j
kr|t|d|�d���q|dS)
Nrx�bridges�priorityrzcontent-security-policy�r��requiresZcockpitznon-cockpit requirement listedzrequired cockpit version (z	) not met)rvrwrJrrxrrlr�rr��csp�parse_conditionr��COCKPIT_VERSIONrr]rrFrrX)rjrJrSr�rxr>rzr$r%rw�s

zManifest.__init__r�cCs�t|�dkrt|d��d|vr0tt|d�dd�Sd|vrJtt|d�dd�Sd|vrdtt|d|j��St�d	|j	|�t
dd
�SdS)Nrz'must contain exactly one key/value pairzpath-existsT)rKzpath-not-existsFr�z0  %s: ignoring unknown predicate in manifest: %srm)�lenrr�rr�rr�r,rLrJr�ryr$r$r%r�
s
zManifest.parse_conditionrGccs|jD]}|��EdHqdSr~r�r�r$r$r%r�s
zManifest.get_condition_files)rdrerfrrFr�rrrwr}r�rrXr�r|r$r$rzr%r��sr�c@s�eZdZUe�d�Zeeee	d<e
e	d<ee	d<ee	d<ee	d<dZ
eeeeeeffe	d<dZeeeefe	d	<e
d
�dd�Zdd
�dd�Zed
�dd�Zeed�dd�Zeeeed�dd�Zeeed�dd�ZdS)�Packagez%(po|po\.manifest)\.([^.]+)\.js(\.gz)?�PO_JS_RE�manifestrxrJr�N�translations�files�r�cCs"||_|j|_|j|_|j|_dSr~)r�rxrJr�)rjr�r$r$r%rw/szPackage.__init__rGcCs|jdurdSi|_iid�|_|j�d�D]�}t|�|j��}|dvrJq,tj�|�}|r�|�	d�}|�	d�}|�
��dd�}t�
d	|||�||j|�d
�|<q,t�dd|�}t�
d
||�||j|<|j�|�dd�|�q,|jds�|jd|jd<dS)z�Ensure that the package has been scanned.

        This allows us to defer scanning the files of the package until we know
        that we'll actually use it.
        N)�po.js�po.manifest.js�*)r?z..z
manifest.jsonr�r:r#zAdding translation %r %r -> %rz.jsz.gz$r�zAdding content %r -> %rz.min.r?r�r�)r�r�rJ�rglobrX�relative_tor�r��	fullmatch�groupr0r[r,r-�re�sub�
setdefault)rj�filerxZpo_match�basenamer9Zlower_localer$r$r%�ensure_scanned5s*




zPackage.ensure_scannedcCsldddddddd�}|jj�d�D],}|��}|r"|���d�\}}}|||<q"d�dd�|��D��d	S)
Nz'self'z'none'z'self' data:)zdefault-srczconnect-srczform-actionzbase-uriz
object-srczfont-srczimg-src�;� css"|]\}}|�d|�d�VqdS)r�r�Nr$)rB�k�vr$r$r%rDsr'z6Package.get_content_security_policy.<locals>.<genexpr>z block-all-mixed-content)r�r�r.r/r1rEr])rjZpolicyrUr)r:rSr$r$r%�get_content_security_policybs�

z#Package.get_content_security_policy)�filenamer!cCs\t�|�\}}d}|dur d}n|�d�r2|��}|j|}t�d|�t|�d�|||�S)Nz
text/plainz	text/htmlz  loading data from %s�rb)	�	mimetypesZ
guess_type�
startswithr�rJr,r-r_�open)rjr�rarbrcrJr$r$r%�	load_fileus

zPackage.load_file)rJ�localesr!c	Csb|��|D]F}t�t��(|�|j||�Wd�S1sH0Yqtt��d�S)N�text/javascript)	r��
contextlib�suppress�KeyErrorr�r�r_�io�BytesIO)rjrJr�r9r$r$r%�load_translation�s
8zPackage.load_translation�rJ�headersr!cCsB|��||jvr.tt|dd��}|�||�S|�|j|�SdS)N�Accept-Languager�)r�r�r=rr�r�r�)rjrJr�r�r$r$r%�	load_path�s

zPackage.load_path)rdrerfr��compiler�rrrXrgr�r�intr�rrr�rwr�r�r_r�r
r�rr�r$r$r$r%r�!s
 -
r�c@s�eZdZeed�dd�Zeeed�dd��Zee	e
e	d�dd	��Zeeed�d
d��Z
eeed�dd
��Zeed�dd�Zeeeefd�dd�ZdS)�PackagesLoader)rJr!cCstj�|�Sr~)rIrJrK)rjrJr$r$r%r��szPackagesLoader.path_existsrGccsnztjdVWn ty0tj�d�VYn0ztjd�d�EdHWntyhdEdHYn0dS)NZ
XDG_DATA_HOMEz~/.local/shareZ
XDG_DATA_DIRS�:)z/usr/local/sharez
/usr/share)rIrtr�rJ�
expanduserr.)�clsr$r$r%�get_xdg_data_dirs�sz PackagesLoader.get_xdg_data_dirs)r��parentr!cCs�|dt�|j�d��tj|j�d�g}|D]�}zt�|���}WnHtyZYq.Yn4tjy�}zt	�
d||�WYd}~n
d}~00t|t�s�t	�
d|�q.t
||�}q.t|�S)Nz
override.jsonz.override.json�%s: %sz%%s: override file is not a dictionary)rZ
lookup_configrxZDOT_CONFIG_COCKPIT�json�loads�
read_bytes�FileNotFoundError�JSONDecodeErrorr,rLrWr\rrR)r�r�r�Zoverride_filesZ
override_file�override�excr$r$r%�patch_manifest�s �$
zPackagesLoader.patch_manifestccs|��D]�}t�d|�t|��d�D]�}t�d|�zt�|���}Wn@tjy�}z&t�	d||�WYd}~q&WYd}~n
d}~00t
|t�s�t�	d|�q&|j}|�
||�}zt||�VWq&ty�}zt�d||�WYd}~q&d}~00q&qdS)Nz$Scanning for manifest files under %szcockpit/*/manifest.jsonzConsidering file %sr�z!%s: json document isn't an objectz%s %s)r�r,r-r�globr�r��	read_textr��errorrWr\r�r�r�rrL)r�Zdatadirr�r�r�r�r$r$r%�load_manifests�s$"
zPackagesLoader.load_manifestsccs |��D]}|��EdHqdSr~)r�r�)r�r�r$r$r%r��sz"PackagesLoader.get_condition_files)r�r!cCs2|jD]&}|�|j�st�d|j|�dSqdS)Nz2  hiding package %s as its %s condition is not metFT)r�r�r�r,r-rJ)rjr�r�r$r$r%�check_conditions�s

zPackagesLoader.check_conditionsc
cs�t�d�t�t�}|��D]"}t�d|j�||j�|�qt�d�t�d�|�	�D]�\}}t
|dd�dd�D]f}z2|�|�r�t�d	||j�|t|�fVWq\Wn t
y�t�d
|j�Yn0t�d|j�qvq\t�d�dS)Nz)Scanning for available package manifests:z  %s/manifest.jsonzdone.zSelecting packages to serve:cSs|jSr~�r�r�r$r$r%r&�r'z.PackagesLoader.load_packages.<locals>.<lambda>Tr(z  creating package %s -> %sz1  %s: ignoring package with invalid manifest filez  ignoring %s: unmet conditions)r,r-�collections�defaultdictr^r�rJrxr4r]�sortedr�r�rrL)rj�namesr�rxZ
candidatesrMr$r$r%�
load_packages�s$





zPackagesLoader.load_packagesN)rdrerfrXr�r��classmethodrr�rrr�r�r�r�r�rr�r�r$r$r$r%r��sr�c@s�eZdZUeed<eeed<eee	fed<e
ed<d eeeed�dd�Zdd	�d
d�Zdd	�dd
�Z
eed	�dd�Zejjddd�Zej��dd	�dd��Zej��dd	�dd��Zee
ed�dd�Zed	�dd�Ze�d�Zeeed�dd�ZdS)!�Packages�loader�listener�packages�saw_first_reload_hintN)r�r�cCs$||_|pt�|_|��d|_dS)NF)r�r�r��loadr�)rjr�r�r$r$r%rwszPackages.__init__rGcCsBt|j���|_t�dd�|j��D��|_t�	dt
|j��dS)NcSsi|]\}}|t|j��qSr$)r\r�)rBrx�packager$r$r%rTr'z!Packages.load.<locals>.<dictcomp>zPackages loaded: %s)r\r�r�r�r��dumpsr]�	manifestsr,r-r^rir$r$r%r�sz
Packages.loadcCs�t|j�D]�}|j|}g}t�t|jdi���t|jdi����D],}t|t�rDt	|dd�}|durD|�
|�qDt|d�dd�|�d�d|j
���q
dS)NZmenuZtoolsrnZ20r�r�Z40)r�r��	itertools�chainrr��valuesrWr\rr4�printrErJ)rjrxr�Z	menuitemsr8rnr$r$r%�shows
�
z
Packages.showcs&ttddfd��fdd�}t|��S)NrGc3s.t�j��dd�d�D]}|jjEdHqdS)NcSs|jSr~r��r�r$r$r%r&)r'zDPackages.get_bridge_configs.<locals>.yield_configs.<locals>.<lambda>)r))r�r�r�r�r�r�rir$r%�
yield_configs(sz2Packages.get_bridge_configs.<locals>.yield_configs)rrlr7)rjr�r$rir%�get_bridge_configs'szPackages.get_bridge_configs�sz{}rmcCs |��|jdur|j��dSr~)r�r�rkrir$r$r%�reload0s
zPackages.reloadcCs|jr|��d|_dS)NT)r�r�rir$r$r%�reload_hint6szPackages.reload_hint)r��i18nr!c		Cs�t�d�g}|r�tt|dd��}|j��D]t\}}|dvr>q,|�d|�}|j�6|jdkrnt	�
|j���}n
|j��}Wd�n1s�0Y|�|�q,|�d|j
��d�tt�d	�|��d
�S)NzServing /manifests.jsr�r�)ZstaticZbase1r��gzipsh
            (function (root, data) {
                if (typeof define === 'function' && define.amd) {
                    define(data);
                }

                if (typeof cockpit === 'object') {
                    cockpit.manifests = data;
                } else {
                    root.manifests = data;
                }
            }(this, s))�
r�)r,r-r=rr�r]r�r`rbr��
decompress�readr4r��encoder_r�r�rE)	rjr�r��chunksr�rxr��translationr`r$r$r%�load_manifests_js<s&

(��
zPackages.load_manifests_jscCs t�d�tt�|j���d�S)NzServing /manifests.jsonzapplication/json)r,r-r_r�r�r�rrir$r$r%�load_manifests_jsonas
zPackages.load_manifests_jsonz /(?:([^/]+)/)?((?:[^/]+/)*[^/]+)r�cCs�t�d|�|j�|�}|dur.td|����|��\}}|durT|j|�||�S|dkrj|j|dd�S|dkr�|j|dd�S|dkr�|�	�St
�dS)	Nzpackages: serving %szInvalid HTTP path zmanifests.jsF)r�zmanifests-i18n.jsTzmanifests.json)r,r-�PATH_REr�r3�groupsr�r�rrr�)rjrJr�rsZpackagenamer�r$r$r%r�kszPackages.load_path)NN) rdrerfr�rgrrhrrXr�r�rwr�r�r
rlr�rZ	InterfaceZPropertyr�ZMethodr�r�rr_rrr�r�rr�r$r$r$r%r�s&


%�r�zcockpit.Packages)Z	interface)Fr�r��	functoolsr�r�r�r�Zloggingr�rIr�rY�pathlibr�typingrrrrrrr	r
rrr
rrZcockpit._vendor.systemd_ctypesrr�r�_versionrZjsonutilrrrrrrrrrrrrZ	getLoggerrdr,�	lru_cacherXr=rFrNrOrRr_rhr\rlr}r�r�r�r�r�r�ZObjectr�r$r$r$r%�<module>sH<8
0-{f

Zerion Mini Shell 1.0