CasperSecurity

Current Path : /lib/python3/dist-packages/uaclient/files/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/uaclient/files/__pycache__/machine_token.cpython-310.pyc

o

��Jh�#�@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
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY