PHP WebShell

Текущая директория: /usr/lib/python3/dist-packages/uaclient/files/__pycache__

Просмотр файла: machine_token.cpython-310.pyc

o

��g�#�@s~ddlZddlmZddlmZmZmZddlmZmZm	Z	m
Z
ddlmZddl
mZdaGdd�d�Zdd	efd
d�ZdS)
�N)�datetime)�Any�Dict�Optional)�defaults�
exceptions�system�util)�PublicMachineTokenData)�UAFilec@sbeZdZejdfdedeefdd�Zdefdd�Z	d	d
�Z
deefdd
�Zedd��Z
edd��Zedeefdd��Zdd�Zedeeeffdd��Zd2deefdd�Ze	d2deeefdeefdd��Zedeefdd��Zed d!��Zedeefd"d#��Zed3d%d&��Zed3d'd(��Zed4d*d+��Zed,d-��Zed.d/��Z ed0d1��Z!dS)5�MachineTokenFileN�	directory�machine_token_overlay_pathcCsFtj}t||dtj�|_t||d�|_||_d|_d|_d|_	dS)N�/F)
r�MACHINE_TOKEN_FILEr�PRIVATE_SUBDIR�private_file�public_filer�_machine_token�
_entitlements�_contract_expiry_datetime)�selfr
r�	file_name�r�>/usr/lib/python3/dist-packages/uaclient/files/machine_token.py�__init__
s�
zMachineTokenFile.__init__�private_contentcCspt��r4tj|tjd�}|j�|�t�|�j	dd�}tj|tjd�}|j
�|�d|_d|_d|_
dSt���)z8Update the machine_token file for both pub/private files��clsF)�	keep_noneN)r	�we_are_currently_root�json�dumps�DatetimeAwareJSONEncoderr�writer
�	from_dict�to_dictrrrrr�NonRootUserError)rr�private_content_str�public_content�public_content_strrrrr$s$����
zMachineTokenFile.writecCs:t��r|j��|j��d|_d|_d|_dSt�	��)z!Delete both pub and private filesN)
r	r r�deleterrrrrr'�rrrrr+4s


zMachineTokenFile.delete�returncCsRt��r|j}n|j}|��}|sdSztj|tjd�}W|Sty(Y|Sw�Nr)	r	r rr�readr!�loads�DatetimeAwareJSONDecoder�	Exception)r�file_handler�contentrrrr/@s��zMachineTokenFile.readcCs t��r|jjo|jjS|jjS�N)r	r r�
is_presentrr,rrrr6NszMachineTokenFile.is_presentcCsB|js|��}|r|jr|�|j�}|rtj||d�||_|jS)zAReturn the machine-token if cached in the machine token response.)�	base_dict�overlay_dict)rr/r�parse_machine_token_overlayr	�depth_first_merge_overlay_dict)rr4�machine_token_overlayrrr�
machine_tokenUs
��zMachineTokenFile.machine_tokencC�&|jr|j�di��di��d�SdS)N�machineTokenInfo�contractInfo�name�r<�getr,rrr�
contract_namegs�zMachineTokenFile.contract_namecCst�|�}tj|tjd�Sr.)r�	load_filer!r0r	r1)rr�machine_token_overlay_contentrrrr9rs��z,MachineTokenFile.parse_machine_token_overlaycCst|j�r|jddSiS)Nr>�accountInfo��boolr<r,rrr�account{s
zMachineTokenFile.account�seriescCs,|jr|jS|jsiS|�|j|�|_|jS)z9Return configured entitlements keyed by entitlement named)rr<�get_entitlements_from_token)rrJrrr�entitlements�s�zMachineTokenFile.entitlementsr<c
Cs�ddlm}|s
iSi}|�di��d�}|siStdd�|�dg�D��}tdd�|�d	g�D��}|��D]\}}d
|i}	||vrI|||	d<||	|d�|	||<q7|S)
z�Return a dictionary of entitlements keyed by entitlement name.

        Return an empty dict if no entitlements are present.
        r)�apply_contract_overridesr>r?css$�|]
}|�d�|�d�fVqdS)�type�tokenN�rB��.0�errr�	<genexpr>�s
��
�z?MachineTokenFile.get_entitlements_from_token.<locals>.<genexpr>�resourceTokenscss�|]
}|�d�|fVqdS)rNNrPrQrrrrT�s
��
��resourceEntitlements�entitlement�
resourceToken)rJ)�uaclient.contractrMrB�dict�items)
r<rJrMrLr?�tokens_by_name�ent_by_name�entitlement_name�	ent_value�entitlement_cfgrrrrK�s0�
�
��
z,MachineTokenFile.get_entitlements_from_tokencCs2|js|jr|j�di��di��dd�|_|jS)z6Return a datetime of the attached contract expiration.r>r?�effectiveToN)r�is_attachedr<rBr,rrr�contract_expiry_datetime�s�z)MachineTokenFile.contract_expiry_datetimecCs
t|j�S)z<Report whether this machine configuration is attached to UA.rGr,rrrrb�s
zMachineTokenFile.is_attachedcCs*|jdurdS|j��t����}|jS)aReport num days until contract expiration based on effectiveTo

        :return: A positive int representing the number of days the attached
            contract remains in effect. Return a negative int for the number
            of days beyond contract's effectiveTo date.
        N)rc�dater�utcnow�days)r�deltarrr�contract_remaining_days�s
z(MachineTokenFile.contract_remaining_days�
Optional[str]cC�|jr
|j�di��d�SdS)N�activityInfo�
activityTokenrAr,rrr�activity_token��
�zMachineTokenFile.activity_tokencCrj)Nrk�
activityIDrAr,rrr�activity_id�szMachineTokenFile.activity_id�
Optional[int]cCrj)Nrk�activityPingIntervalrAr,rrr�activity_ping_interval�rnz'MachineTokenFile.activity_ping_intervalcCr=)Nr>r?�idrAr,rrr�contract_id�s�zMachineTokenFile.contract_idcCs|jr
|j�dg�SdS)NrUrAr,rrr�resource_tokens�sz MachineTokenFile.resource_tokenscCs,|���di��di��di��dd�}|S)N�supportrW�affordances�
onlySeries)rLrB)r�only_seriesrrrrz�s�zMachineTokenFile.only_seriesr5)r-ri)r-rq)"�__name__�
__module__�__qualname__r�DEFAULT_DATA_DIR�strrrrZr$r+r/�propertyr6r<rCr9rrrIrL�staticmethodrKrrcrb�intrhrmrprsrurvrzrrrrrs\��
�


	�
��%

	
rr-cCs4ddlm}ts|s
|�}t|j|j�d�d�atS)Nr)�UAConfigr;)r
r)�uaclient.configr��_machine_token_filer�data_dir�featuresrB)�cfgr�rrr�get_machine_token_files��r�r5)r!r�typingrrr�uaclientrrrr	�uaclient.contract_data_typesr
�uaclient.files.filesrr�rr�rrrr�<module>sx

Выполнить команду


Для локальной разработки. Не используйте в интернете!