HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/lib/python3/dist-packages/uaclient/__pycache__/apt_news.cpython-38.pyc
U

��Jh�!�@s�ddlZddlZddlZddlZddlZddlZddlmZmZddl	Z	ddl
mZmZm
Z
mZddlmZmZddlmZmZmZddlmZddlmZddlmZmZmZmZmZm Z dd	l!m"Z"m#Z#m$Z$e�%e�&e'��Z(Gd
d�de�Z)Gdd
�d
e�Z*dd�Z+eee)e,d�dd�Z-ejeeje,d�dd�Z.e/e,d�dd�Z0e*e,d�dd�Z1eee2ee*d�dd�Z3eed�d d!��Z4eee/d"�d#d$�Z5eee/d"�d%d&�Z6e/e/d'�d(d)�Z7ed�d*d+�Z8dS),�N)�List�Optional)�defaults�messages�system�util)�ContractExpiryStatus�_is_attached)�ensure_apt_pkg_init�get_pkg_version�version_compare)�get_cloud_type)�UAConfig)�
BoolDataValue�
DataObject�DatetimeDataValue�Field�StringDataValue�	data_list)�
machine_token�notices�state_filesc	@s�eZdZedee�dd�edee�dd�ededd�edee�dd�edeee��dd�gZdddddd	�ee	e
ee	e
eeee	e
ee	e	e
d	�d
d�ZdS)�AptNewsMessageSelectors�	codenamesF�Zrequired�clouds�pro�
architectures�packagesN�rrrrrcCs"||_||_||_||_||_dS�Nr)�selfrrrrr�r"�3/usr/lib/python3/dist-packages/uaclient/apt_news.py�__init__+s
	z AptNewsMessageSelectors.__init__)
�__name__�
__module__�__qualname__rrrr�fieldsrr�str�boolr$r"r"r"r#r s,
��
�


�rc@sheZdZede�ededd�ededd�edee��gZddd�e	j	e
e	j	e
eeed	�d
d�Z
dS)�AptNewsMessage�begin�endFr�	selectors�linesN)r-r.�r,r-r.r/cCs||_||_||_||_dSr r0)r!r,r-r.r/r"r"r#r$CszAptNewsMessage.__init__)r%r&r'rrrrrr(�datetimerrr)r$r"r"r"r#r+;s���r+cCs�z|\}}}Wn"tk
r0t�d|�YdSXt|�}|dkrFdSt||�}t|dko`|dk|dkon|dk|dko||dkg�S)NzInvalid package selector: %rFr)z==�<=�>=)�<r2)�>r3)�
ValueError�LOGZwarningrr�any)�package_selectorZpackage_nameZversion_operatorZpackage_versionZinstalled_package_versionZversion_comparisonr"r"r#�_does_package_selector_applyQs&���r:)�cfgr.�returncCs�|dkrdS|jdk	r*t��j|jkr*dS|jdk	rXt�\}}|dk	rJdS||jkrXdS|jdk	rv|jt|�jkrvdS|j	dk	r�t�
�|j	kr�dS|jdk	r�tdd�|jD��s�dSdS)NTFcSsg|]}t|��qSr")r:)�.0r9r"r"r#�
<listcomp>�s�z&do_selectors_apply.<locals>.<listcomp>)
rrZget_release_infoZseriesrr
rr	Zis_attachedrZ
get_dpkg_archrr8)r;r.Zcloud_idZfailr"r"r#�do_selectors_applyis2






��r?)r,r-r<cCsVtj�tjj�}||krdS|tjdd�}|dks<||krB|}n|}||krRdSdS)NF�)ZdaysT)r1�now�timezoneZutcZ	timedelta)r,r-rAZone_month_after_beginZ
end_to_user"r"r#�do_dates_apply�srC)�cr<cCst�|�ddkS)Nr�C)�unicodedata�category)rDr"r"r#�is_control_char�srH)�msgr<cCs^t|j�dkrdSt|j�dkr$dS|jD].}tdd�|D��rFdSt|�dkr*dSq*dS)N�F�cSsg|]}t|��qSr")rH)r=rDr"r"r#r>�sz$is_message_valid.<locals>.<listcomp>�MT)�lenr/r8)rI�liner"r"r#�is_message_valid�s
rO)r;rr<cCs�|D]�}zt�|�}Wn6tk
rL}zt�d|�WY�qW5d}~XYnXt|�sdt�d|�qt|j|j�s�t�d|�qt	||j
�s�t�d|�q|SdS)Nzmsg failed parsing: %rzmsg not valid: %rzmsg dates don't apply: %rzmsg selectors don't apply: %r)r+Z	from_dict�	Exceptionr7�debugrOrCr,r-r?r.)r;rZmsg_dictrI�er"r"r#�select_message�s"rS)r;cCsbtjtjdd�tjtjdd�t��}tj||j	dtjd�}|�
�t�|j
�}tj|tjd�S)NT)�exist_okZ_apt)�user�)�hashZdestdir)�cls)�os�makedirsrZ
APT_NEWS_PATH�shutil�chown�apt_pkgZAcquireZAcquireFileZapt_news_url�runrZ	load_fileZdestfile�json�loadsrZDatetimeAwareJSONDecoder)r;ZacqZ
apt_news_fileZapt_news_contentsr"r"r#�fetch_aptnews_json�s��ra)r;r<cCs>t|�}t||�dg��}t�d|�|dk	r:d�|j�SdS)Nrz
using msg: %r�
)rarS�getr7rQ�joinr/)r;Z	news_dictrIr"r"r#�fetch_and_process_apt_news�srecCs�t|�}|j}|j}t�|�}|tjjkr>t�	tj
j�tjSt�
tj
j�|tjjkrltj�|�j|d�S|tjjkr�tj|}|j}|dkr�d}n
|�d�}tj�|�j||d�SdS)z4
    :return: str if local news, None otherwise
    )�remaining_daysNZUnknownz%d %b %Y)Zexpired_daterf)r	Zcontract_statusZcontract_remaining_daysrZget_machine_token_filerZEXPIRED�valuer�addZNoticeZCONTRACT_EXPIREDr�removeZACTIVE_EXPIRED_SOONZCONTRACT_EXPIRES_SOONZ	pluralize�formatZEXPIRED_GRACE_PERIODrZ!CONTRACT_EXPIRY_GRACE_PERIOD_DAYSZcontract_expiry_datetime�strftimeZCONTRACT_EXPIRED_GRACE_PERIOD)r;Zis_attached_infoZ
expiry_statusrfZmachine_token_fileZgrace_period_remainingZexp_dtZ
exp_dt_strr"r"r#�local_apt_news�s4
��
��rl)�newsr<cCs.d}|�d�D]}|d�|�7}q|d7}|S)Nz#
rbz# {}
)�splitrj)rm�resultrNr"r"r#�format_news_for_apt_update	s
rpc
Cs�zRt|�}|st|�}|r<tj�|�t|�}tj�|�ntj��tj��WnBtk
r�}z$t	�
d|�tj��tj��W5d}~XYnXdS)Nz2something went wrong while processing apt_news: %r)rlrerZapt_news_raw_file�writerpZapt_news_contents_file�deleterPr7rQ)r;rmZapt_update_formatted_newsrRr"r"r#�update_apt_newss

rs)9r1r_ZloggingrYr[rF�typingrrr]ZuaclientrrrrZ(uaclient.api.u.pro.status.is_attached.v1rr	Zuaclient.aptr
rrZuaclient.clouds.identityr
Zuaclient.configrZuaclient.data_typesrrrrrrZuaclient.filesrrrZ	getLoggerZreplace_top_level_logger_namer%r7rr+r:r*r?rCr)rHrO�dictrSrarerlrprsr"r"r"r#�<module>sL �&��	&