o
    ÙKÕi„  ã                   @   sÔ   d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZmZmZmZmZ d dlmZmZ d dlmZ g d¢ZG d	d
„ d
eƒZG dd„ deƒZe ¡ Ze  e	 e¡¡ZG dd„ dƒZeej ƒZ!dS )é    N)ÚOptional)Úurlparse)ÚdefaultsÚevent_loggerÚutil)ÚBoolDataValueÚ
DataObjectÚEnumDataValueÚFieldÚIntDataValueÚStringDataValue)ÚDataObjectFileÚDataObjectFileFormat)ÚUAFile)Úapt_http_proxyÚapt_https_proxyÚglobal_apt_http_proxyÚglobal_apt_https_proxyÚua_apt_http_proxyÚua_apt_https_proxyÚ
http_proxyÚhttps_proxyc                   @   s    e Zd ZdZdZdZdd„ ZdS )ÚLXDGuestAttachEnumÚonÚoffÚ	availablec                 C   s   | j S ©N)Úvalue)Úself© r   úA/usr/lib/python3/dist-packages/uaclient/files/user_config_file.pyÚ__str__$   s   zLXDGuestAttachEnum.__str__N)Ú__name__Ú
__module__Ú__qualname__ÚONÚOFFÚ	AVAILABLEr!   r   r   r   r    r      s
    r   c                "   @   s|  e Zd Zededd�ededd�ededd�ededd�ededd�ededd�ed	edd�ed
edd�ededd�ededd�ededd�ededd�ededd�ededd�ededd�ededd�gZ																dde	e
 de	e
 de	e
 de	e
 de	e
 de	e
 d	e	e
 d
e	e
 de	e de	e
 de	e de	e de	e de	e de	e
 de	e f dd„ZdS )ÚUserConfigDatar   F)Úrequiredr   r   r   r   r   r   r   Úapt_newsÚapt_news_urlÚpoll_for_pro_licenseÚpolling_error_retry_delayÚmetering_timerÚupdate_messaging_timerÚvulnerability_data_url_prefixÚlxd_guest_attachNc                 C   sd   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _|| _d S r   )r   r   r   r   r   r   r   r   r*   r+   r,   r-   r.   r/   r0   r1   )r   r   r   r   r   r   r   r   r   r*   r+   r,   r-   r.   r/   r0   r1   r   r   r    Ú__init__>   s    
zUserConfigData.__init__)NNNNNNNNNNNNNNNN)r"   r#   r$   r
   r   r   r   r   Úfieldsr   ÚstrÚboolÚintr2   r   r   r   r    r(   (   sŠ    ÿîïþýüûúùø	÷
öõôóòñðïr(   c                   @   s`   e Zd Zejfdefdd„Zedefdd„ƒZ	dedefdd	„Z
defd
d„Zdefdd„ZdS )ÚUserConfigFileObjectÚ	directoryc                 C   sR   t j}ttt|tj |t j¡dd�t	j
dd�| _ttt||dd�t	j
dd�| _d S )NT)Úprivate)Ú optional_type_errors_become_nullF)r   ÚUSER_CONFIG_FILEr   r(   r   ÚosÚpathÚjoinÚPRIVATE_SUBDIRr   ÚJSONÚ_privateÚ_public)r   r8   Ú	file_namer   r   r    r2   h   s"   ýø
üzUserConfigFileObject.__init__Úreturnc                 C   s   | j  ¡ }|d u rtƒ }|S r   )rB   Úreadr(   )r   Úpublic_configr   r   r    rF   {   s   
z"UserConfigFileObject.public_configÚuser_configc                 C   sF   |  ¡ }tD ]}| |¡}|rt|ƒ}|js|jrd||< qt |¡S )Nz
<REDACTED>)Úto_dictÚPROXY_FIELDSÚgetr   ÚusernameÚpasswordr(   Ú	from_dict)r   rG   Úredacted_data_dictÚfieldr   Ú
parsed_urlr   r   r    Úredact_config_data‚   s   
€
z'UserConfigFileObject.redact_config_datac                 C   s:   t  ¡ r| j ¡ }|d ur|S | j ¡ }|d ur|S tƒ S r   )r   Úwe_are_currently_rootrA   rE   rB   r(   )r   Úprivate_configrF   r   r   r    rE   Ž   s   

zUserConfigFileObject.readÚcontentc                 C   s&   | j  |¡ |  |¡}| j |¡ d S r   )rA   ÚwriterQ   rB   )r   rT   Úredacted_contentr   r   r    rU   ˜   s   
zUserConfigFileObject.writeN)r"   r#   r$   r   ÚDEFAULT_DATA_DIRr4   r2   Úpropertyr(   rF   rQ   rE   rU   r   r   r   r    r7   g   s    ÿ
þ
r7   )"Úloggingr<   Útypingr   Úurllib.parser   Úuaclientr   r   r   Úuaclient.data_typesr   r   r	   r
   r   r   Úuaclient.files.data_typesr   r   Úuaclient.files.filesr   rI   r   r(   Úget_event_loggerÚeventÚ	getLoggerÚreplace_top_level_logger_namer"   ÚLOGr7   rW   rG   r   r   r   r    Ú<module>   s     	;7