GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/uaclient/__pycache__/security_status.cpython-310.pyc
o

�ϴf�e�@s�ddlmZddlmZmZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZmZddlZddlmZmZmZmZdd	lmZdd
lmZddlmZmZmZmZddlm Z dd
l!m"Z"m#Z#ddl$m%Z%m&Z&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,m-Z-dZ.Gdd�de�Z/dd�Z0edd�dd��Z1dedeej2ffdd�Z3dej2dej4de5fdd�Z6d e5d!e
e5efde5fd"d#�Z7d$eej2dee5eeej8e5fffd%d&�Z9d'e de
e5effd(d)�Z:dee
e5effd*d+�Z;d,ee5eeej8e5ffd!e
e5efdee
e5effd-d.�Z<d'e de
e5effd/d0�Z=	1	2dQd3ee5eej2fd4e5d5e>ddfd6d7�Z?d8d9�Z@d:d;�ZAd<e5d=e5d>e&d?e%d@eBdAeBdBe>fdCdD�ZCdEdF�ZDd'e fdGdH�ZEdIdJ�ZFdKdL�ZGdMdN�ZHdOdP�ZIdS)R�)�defaultdict)�datetime�timezone)�Enum)�	lru_cache)�choice)�Any�DefaultDict�Dict�List�TupleN)�
exceptions�	livepatch�messages�util)�_reboot_required)�_is_attached)�PreserveAptCfg�get_apt_cache_datetime�get_apt_pkg_cache�get_esm_apt_pkg_cache)�UAConfig)�ESMAppsEntitlement�ESMInfraEntitlement)�ApplicabilityStatus�ApplicationStatus�ContractStatus)�get_distro_info�get_kernel_info�get_release_info�is_current_series_lts�is_supported)�	esm-infra�esm-appsc@s eZdZdZdZdZdZdZdS)�UpdateStatusz2Represents the availability of a security package.�upgrade_available�pending_attach�pending_enable�upgrade_unavailableN)�__name__�
__module__�__qualname__�__doc__�	AVAILABLE�
UNATTACHED�NOT_ENABLED�UNAVAILABLE�r1r1�:/usr/lib/python3/dist-packages/uaclient/security_status.pyr$'sr$cCstt�|��dS)N)�printr�create_package_list_str)�packagesr1r1r2�print_package_list/sr6)�maxsizecCsRt�j}dd�|�fddd�|�fddd�|�fd	dd
�|�fddd�|�fd	iS)N�Ubuntuz{}-security�standard-security�
UbuntuESMAppsz{}-apps-securityr#�	UbuntuESMz{}-infra-securityr"z{}-apps-updatesz{}-infra-updates)r�series�format)r<r1r1r2�%get_origin_information_to_service_map3s�r>�return�strcCsvtt�}tt��)}dd�|jD�}||d<t�|�}|D]}|t||��|�qWd�|S1s4wY|S)NcSsg|]}|jr|�qSr1)�current_ver��.0�packager1r1r2�
<listcomp>Es
��z4get_installed_packages_by_origin.<locals>.<listcomp>�all)	r�listrrr5�apt_pkg�DepCache� get_origin_for_installed_package�append)�result�cache�installed_packages�	dep_cacherDr1r1r2� get_installed_packages_by_origin?s"
�
�
�
�
�
rPrDrOcCs�|jsdS|jj}t|�dkr |�|�}|r|j|krdS|j}|D]!\}}t��|j|jfd�}|tvr9|S|jdkrC|j	Sq"dS)a
    Returns the origin for a package installed in the system.

    Technically speaking, packages don't have origins - their versions do.
    We check the available versions (installed, candidate) to determine the
    most reasonable origin for the package.
    ���unknownr8�third-party)
rA�	file_list�len�get_candidate_verr>�get�origin�archive�ESM_SERVICES�	component)rDrO�available_origins�	candidaterY�_�servicer1r1r2rJTs$
�

�rJ�service_name�ua_infocCsP|dvs|dr||dvrtjjS|dstjjS||dvr$tjjStjjS)z�Defines the update status for a package based on the service name.

    For ESM-[Infra|Apps] packages, first checks if Pro is attached. If this is
    the case, also check for availability of the service.
    )r9�standard-updates�attached�enabled_services�entitled_services)r$r-�valuer.r/r0)rarbr1r1r2�get_update_statusys�rhr5cCs>tt�}tt���}|D]�}|jr�|jD]C}||jkrVd}|jD]\}}t��|j	|j
f�}|r=||�||jf�d}nq|jdd}	|sVd|	j
vrV|d�||	jf�q|j
|vr�||j
}
|
jD]'}||jkr�|jD]\}}t��|j	|j
f�}|r�||�||jf�nqnqdqWd�|S1s�wY|S)z�Filters a list of packages looking for available updates.

    All versions greater than the installed one are reported, based on where
    it is provided, including ESM pockets, excluding backports.
    FTr�	backportsrcN)rrGrrrA�version_listrUr>rXrYrZrK�site�name)r5rL�	esm_cacherD�version�counted_as_securityrYr_r`�expected_origin�esm_packager1r1r2�filter_updates�sZ



����
��




�����
�.�.rr�cfgcCs�t|�j}|ggd�}|rQt|�}t|�}|��tjkr#|d�d�|��dt	j
kr3|d�d�|��tjkrA|d�d�|��dt	j
krQ|d�d�|S)z7Returns the Pro information based on the config object.)rdrerfrfr#rrer")r�is_attachedrr�contract_statusr�ENTITLEDrK�application_statusr�ENABLED)rsrtrb�infra_entitlement�apps_entitlementr1r1r2�get_ua_info�s*
�
�
�r{cCs�zt��}WntjygYSwt�j}|durF|durF||jkrF|jdurF|jjdkrF|jjdurFt	|jj�dkrFdd�|jjD�SgS)N�appliedrcSs"g|]
}|jpd|jpdd��qS)rQF�rl�patchedr})rC�fixr1r1r2rE�s��z,get_livepatch_fixed_cves.<locals>.<listcomp>)
r�statusr
�ProcessExecutionErrorr�proc_version_signature_version�kernel�state�fixesrV)�	lp_status�our_kernel_versionr1r1r2�get_livepatch_fixed_cves�s"�

�r��upgradable_versionscCsRg}|��D] \}}t||�}|D]\}}|�|jj|j||||jd��qq|S)N)rDrnrar�rY�
download_size)�itemsrhrK�
parent_pkgrl�ver_str�size)r�rb�updatesr`rjr�rnrYr1r1r2�create_updates_lists
���r�cCst|�}d|i}t�}|d}t|�|d<t|�}g|d<t||�}t|d�|d<t|d�|d<t|d	�|d
<t|d�|d<t|d
�|d<t|d�|d<t|d�|d<t|d�|d<t|d�|d<t|d�|d<t|d�|d<t|�j|d<d||dt�id�S)agReturns the status of security updates on a system.

    The returned dict has a 'packages' key with a list of all installed
    packages which can receive security updates, with or without ESM,
    reflecting the availability of the update based on the Pro status.

    There is also a summary with the Ubuntu Pro information and the package
    counts.
    �uarF�num_installed_packagesrc�main�num_main_packages�
restricted�num_restricted_packages�universe�num_universe_packages�
multiverse�num_multiverse_packagesrT�num_third_party_packagesrS�num_unknown_packagesr"�num_esm_infra_packagesr#�num_esm_apps_packages�num_esm_infra_updates�num_esm_apps_updatesr9�num_standard_security_updates�reboot_requiredz0.1�
fixed_cves)�_schema_version�summaryr5r)r{rPrVrrr�rr�r�)rsrbr��packages_by_originrNr�r�r1r1r2�security_status_dicts:

���r�rFF�
package_lists�
show_items�always_showc	CsBt|d�}ttjj|d��dtt|��d}|dvr=t|d�t|d�t|d�}ttj�|�j||d	d
��|dvret|d�t|d
�t|d�}|sW|rettj�|�j||dd
��|dvr�t|d�}|ss|r�ttj�|�j||d��|dvr�t|d�}|s�|r�ttj	�|�j||d��td�dS)NrF)�count� rR)rFr"r�r�r"�Main/Restricted)�offsetr��
repository)rFr#r�r�r#�Universe/Multiverse)rFrTrT)r�r�)rFrSrSrQ)
rVr3r�SS_SUMMARY_TOTALr=r@�SS_SUMMARY_ARCHIVE�	pluralize�SS_SUMMARY_THIRD_PARTY�SS_SUMMARY_UNAVAILABLE)	r�r�r��total_packagesr��packages_mr�packages_um�packages_thirdparty�packages_unknownr1r1r2�_print_package_summaryKsn

�
����

�
����������	r�cCsHt�j}t|�j}d�t|j�t|j��}tt	j
j|d��td�dS)Nz{}/{}��daterQ)rr<r�eolr=r@�month�yearr3r�SS_INTERIM_SUPPORT)r<�eol_dater�r1r1r2�_print_interim_release_support�s

r�cCsDt�j}t|�rt|�j}ttjjt	|j
�d��dSttj�dS)Nr�)rr<r!rr�r3r�SS_LTS_SUPPORTr=r@r��SS_NO_SECURITY_COVERAGE)r<r�r1r1r2�_print_lts_support�s

r�r`r��service_status�service_applicability�installed_updates�available_updatesrtc
Cs�t�j}t|�j}|tjkrtjj||t	|j
�d�}	ntjj||t	|j
�d�}	|r7|	dtj�
|�j|d�7}	|rG|	dtj�
|�j|d�7}	t|	�|rd|tjkrd|tjkrdtd�ttjj|d��td�dS)N)r�r`r�)r`r�r�r�)r�rQ�r`)rr<r�eol_esmrrxr�SS_SERVICE_ENABLEDr=r@r��SS_SERVICE_ADVERTISE�SS_SERVICE_ENABLED_COUNTSr��SS_SERVICE_ADVERTISE_COUNTSr3�DISABLEDr�
APPLICABLE�SS_SERVICE_COMMAND)
r`r�r�r�r�r�rtr<�eol_date_esm�messager1r1r2�_print_service_support�sF	

��
�
�
�
��

r�cCsft�}|durttj�td�dSt�tj�}||}|jdkr1ttj	j
|jd��td�dSdS)NrQr)�days)rr3r�SS_UPDATE_UNKNOWNr�nowr�utcr��SS_UPDATE_DAYSr=)�last_apt_updater��time_since_updater1r1r2�_print_apt_update_call�s

�r�c
	Cs�t|�}t|�}|��d}|��d}|��d}|��d}t�j}t�}t|�d}	t�}
t	|
d|
d|
d�d}t	|
d|
d|
d�d}t
|
�ttj
�td	�t�|spt|�rit�ttj�dS|tjkrxt�|	r�ttj�nttj�td	�tdd
||t|
d�t|�|	d�|
ds�|
ds�|
dr�tdd||t|
d�t|�|	d�|	s�ttj�dSdS)
Nrrdr�r�r"r�r�r#rQr��r`r�r�r�r�r�rtr�)rrrw�applicability_statusrr<r r{rPrrr�r3r�SS_HELP_CALLr�r!r��SS_NO_INTERIM_PRO_SUPPORTrr�r��SS_IS_ATTACHED�SS_IS_NOT_ATTACHEDr�rV�
SS_LEARN_MORE)
rs�
esm_infra_ent�esm_apps_ent�esm_infra_status�esm_infra_applicability�esm_apps_status�esm_apps_applicabilityr<�is_ltsrtr��"security_upgradable_versions_infra�!security_upgradable_versions_appsr1r1r2�security_status�s���������




����
�
�r�cC�zt�}|d}dd�|D�}t|ddd�|r6ttj�td�ttj�t|�ttjjt	|�d��dSttj
�dS)NrTcS�g|]}|j�qSr1�rlrBr1r1r2rE+�z-list_third_party_packages.<locals>.<listcomp>T�r�r�rQ�rD)rPr�r3r�SS_THIRD_PARTY�SS_PACKAGES_HEADERr6�SS_SHOW_HINTr=r�SS_NO_THIRD_PARTY)r��third_party_packages�
package_namesr1r1r2�list_third_party_packages(s�

r�cCr�)NrScSr�r1r�rBr1r1r2rE?r�z-list_unavailable_packages.<locals>.<listcomp>Tr�rQr�)rPr�r3r�SS_UNAVAILABLEr�r6r�r=r�SS_NO_UNAVAILABLE)r��unknown_packagesr�r1r1r2�list_unavailable_packages<s�

rc	s�t�}|d}|d|d}||}t�}t|�d}|D]
\}}|�|j�qt�j}	t�}
t|�}t	|�}|�
�d}
|��d}tdd�|D���tdd�|D���t��fdd�|D��}t
|dd	d
�|
syt|	�rrt�ttj�dS|
tjkr�t�td�tdd|
|t|�t|�d
d�ttjjdd��td�t|	�s�r�ttjjdd��t���r�ttjjdd��t���pƈ}|r�|r�tjjdd�}ntjjdd�}t|�t|�|r�ttjjt |�d��dSdSdS)Nr"r�r�rcSr�r1r�rBr1r1r2rEir�z+list_esm_infra_packages.<locals>.<listcomp>cSr�r1r�rBr1r1r2rElr�c�&g|]}|j�vr|j�vr|j�qSr1r�rB��available_package_names�installed_package_namesr1r2rEo�

�Tr�rQr�Fr�r�r�)!rP�setrr�addr�rr<r rrrwr��sortedr�r!r�r3rr�rr�r�r�rV�SS_SERVICE_HELPr=�SS_UPDATES_AVAILABLEr6�SS_UPDATES_INSTALLED�SS_FURTHER_OTHER_PACKAGES�SS_OTHER_PACKAGESr�r)rsr��infra_packages�mr_packages�all_infra_packages�
infra_updates�security_upgradable_versions�updater_r<r�r�r�r�r��remaining_package_names�	hint_list�msgr1rr2�list_esm_infra_packagesQs������	�

�	��rc	s�t�}|d}|d|d}||}t�}t|�d}|D]
\}}|�|j�qt�}	t|�}
|
��d}|
��d}t	dd�|D���t	dd�|D���t	��fdd�|D��}
t
|dd	d
�|	sjttj
�dStdd||t|�t|�dd
�ttjjdd��td�|rԈr�ttjjdd��t���r�ttjjdd��t���p��}|
r�|r�tjjdd�}ntjjdd�}t|�t|
�|r�ttjjt|�d��dSdSdS)Nr#r�r�rcSr�r1r�rBr1r1r2rE�r�z*list_esm_apps_packages.<locals>.<listcomp>cSr�r1r�rBr1r1r2rE�r�crr1r�rBrr1r2rE�rTr�r�Fr�r�rQr�)rPrrrrr�r rrwr�rr�r3rr�r�rVr	r=r
r6rrr
r�r)rsr��
apps_packages�um_packages�all_apps_packages�apps_updatesrrr_r�r�r�r�rrrr1rr2�list_esm_apps_packages�s~������	�
�	��r)rFF)J�collectionsrrr�enumr�	functoolsr�randomr�typingrr	r
rrrH�uaclientr
rrr�5uaclient.api.u.pro.security.status.reboot_required.v1r�(uaclient.api.u.pro.status.is_attached.v1r�uaclient.aptrrrr�uaclient.configr�uaclient.entitlementsrr�(uaclient.entitlements.entitlement_statusrrr�uaclient.systemrrrr r!r[r$r6r>�PackagerPrIr@rJrh�Versionrrr{r�r�r��boolr�r�r��intr�r�r�r�rrrr1r1r1r2�<module>s�

���
�%�
�@!�
�
�4����
�?	������
�2MY