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: //usr/lib/python3/dist-packages/uaclient/__pycache__/security_status.cpython-38.pyc
U

��Jh�h�@s�ddlmZddlmZmZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZmZddlZddlmZmZmZmZdd	lmZdd
lmZddlmZmZmZmZmZddl m!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�Z0dd�Z1edd�dd��Z2edeej3fd�dd�Z4ej3ej5e6d�dd�Z7edd�e6e6e8d�d d!��Z9e6e
e6efej:e6d"�d#d$�Z;eej3ee6eeej:e6ffd%�d&d'�Z<e!e
e6efd(�d)d*�Z=ee
e6efd�d+d,�Z>ee6eeej:e6ffe
e6efee
e6efd-�d.d/�Z?e!e
e6efd(�d0d1�Z@dKee6eej3fe6e8dd4�d5d6�ZAd7d8�ZBd9d:�ZCe6e6e'e&eDeDe8d;�d<d=�ZEd>d?�ZFe!d@�dAdB�ZGdCdD�ZHdEdF�ZIdGdH�ZJdIdJ�ZKdS)L�)�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�get_pkg_candidate_version)�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$eZdZdZdZdZdZdZdZdS)�UpdateStatusz2Represents the availability of a security package.Zupgrade_availableZupgrade_available_not_preferredZpending_attachZpending_enableZupgrade_unavailableN)	�__name__�
__module__�__qualname__�__doc__�	AVAILABLE�AVAILABLE_NOT_PREFERRED�
UNATTACHED�NOT_ENABLED�UNAVAILABLE�r/r/�:/usr/lib/python3/dist-packages/uaclient/security_status.pyr%(sr%cCstt�|��dS)N)�printrZcreate_package_list_str)�packagesr/r/r0�print_package_list1sr3)�maxsizecCsRt�j}dd�|�fddd�|�fddd�|�fd	dd
�|�fddd�|�fd	iS)N�Ubuntuz{}-security�standard-securityZ
UbuntuESMAppsz{}-apps-securityr$Z	UbuntuESMz{}-infra-securityr#z{}-apps-updatesz{}-infra-updates)r �series�format)r7r/r/r0�%get_origin_information_to_service_map5s�r9�str)�returnc	Cs`tt�}tt��F}dd�|jD�}||d<t�|�}|D]}|t||��|�q8W5QRX|S)NcSsg|]}|jr|�qSr/)�current_ver��.0�packager/r/r0�
<listcomp>Gsz4get_installed_packages_by_origin.<locals>.<listcomp>�all)	r�listrrr2�apt_pkg�DepCache� get_origin_for_installed_package�append)�result�cache�installed_packages�	dep_cacher?r/r/r0� get_installed_packages_by_originAs
�
��rK)r?rJr;cCs�|js
dS|jj}t|�dkr@|�|�}|r6|j|kr:dS|j}|D]B\}}t��|j|jfd�}|tkrr|S|jdkrD|j	SqDdS)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.
    ���unknownr5�third-party)
r<�	file_list�lenZget_candidate_verr9�get�origin�archive�ESM_SERVICESZ	component)r?rJZavailable_origins�	candidaterS�_�servicer/r/r0rEVs$

�
rE)�pkg�versionr;cCst|dd�}|r||kSdS)z;Returns True if the package version is a candidate version.F)Zcheck_esm_cache)r)rYrZZcandidate_versionr/r/r0�_is_candidate_version{sr[)�service_name�ua_inforZr;cCsl|dks|dr@||dkr@t|jj|j�}|r8tjjStjjS|dsPtjjS||dkrdtj	jStj
jS)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.
    )r6�standard-updates�attached�enabled_services�entitled_services)r[�
parent_pkg�name�ver_strr%r*�valuer+r,r-r.)r\r]rZZis_candidater/r/r0�get_update_status�s$
�
���
�rf)r2r;c	Cs,tt�}tt���}|D�]}|jr|jD]�}||jkr*d}|jD]<\}}t��|j	|j
f�}|rB||�||jf�d}q�qB|jdd}	|s*d|	j
kr*|d�||	jf�q*|j
|kr||j
}
|
jD]N}||jkr�|jD]8\}}t��|j	|j
f�}|r�||�||jf�q�q�q�qW5QRX|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.
    FTrZ	backportsr^)rrBrrr<�version_listrPr9rRrSrTrFZsiterc)r2rGZ	esm_cacher?rZZcounted_as_securityrSrWrXZexpected_originZesm_packager/r/r0�filter_updates�sL



�����




��rh)�cfgr;cCs�t|�j}|ggd�}|r�t|�}t|�}|��tjkrF|d�d�|��dt	j
krf|d�d�|��tjkr�|d�d�|��dt	j
kr�|d�d�|S)z7Returns the Pro information based on the config object.)r_r`rarar$rr`r#)r�is_attachedrrZcontract_statusrZENTITLEDrF�application_statusr�ENABLED)rirjr]Zinfra_entitlementZapps_entitlementr/r/r0�get_ua_info�s.
�
��
��rmcCs�zt��}Wntjk
r&gYSXt�j}|dk	r�|dk	r�||jkr�|jdk	r�|jjdkr�|jjdk	r�t	|jj�dkr�dd�|jjD�SgS)NZappliedrcSs"g|]}|jpd|jpdd��qS)rLF�rcZpatchedrn)r>Zfixr/r/r0r@s�z,get_livepatch_fixed_cves.<locals>.<listcomp>)
r�statusr
ZProcessExecutionErrorrZproc_version_signature_versionZkernel�state�fixesrQ)Z	lp_statusZour_kernel_versionr/r/r0�get_livepatch_fixed_cvess.
����
�
��	�rr)�upgradable_versionsr]r;cCsTg}|��D]B\}}|D]4\}}t|||�}|�|jj|j||||jd��qq|S)N)r?rZr\rorSZ
download_size)�itemsrfrFrbrcrd�size)rsr]�updatesrXrgrZrSror/r/r0�create_updates_lists��rwcCst|�}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.
    ZuarAZnum_installed_packagesr^�mainZnum_main_packages�
restrictedZnum_restricted_packages�universeZnum_universe_packages�
multiverseZnum_multiverse_packagesrOZnum_third_party_packagesrNZnum_unknown_packagesr#Znum_esm_infra_packagesr$Znum_esm_apps_packagesZnum_esm_infra_updatesZnum_esm_apps_updatesr6Znum_standard_security_updates�reboot_requiredz0.1Z
fixed_cves)Z_schema_version�summaryr2r)rmrKrQrhrwrr|rr)rir]r}�packages_by_originrIrsrvr/r/r0�security_status_dict/s:

���rrAF)�
package_lists�
show_items�always_showr;c	CsLt|d�}ttjj|d��dtt|��d}|dkrzt|d�t|d�t|d�}ttj�|�j||d	d
��|dkr�t|d�t|d
�t|d�}|s�|r�ttj�|�j||dd
��|dk�rt|d�}|s�|�rttj�|�j||d��|dk�r@t|d�}|�s&|�r@ttj	�|�j||d��td�dS)NrA)�count� rM)rAr#rxryr#�Main/Restricted)�offsetr��
repository)rAr$rzr{r$�Universe/Multiverse)rArOrO)r�r�)rArNrNrL)
rQr1rZSS_SUMMARY_TOTALr8r:ZSS_SUMMARY_ARCHIVE�	pluralizeZSS_SUMMARY_THIRD_PARTYZSS_SUMMARY_UNAVAILABLE)	r�r�r�Ztotal_packagesr�Zpackages_mrZpackages_umZpackages_thirdpartyZpackages_unknownr/r/r0�_print_package_summaryasn

�
����

�
����

���
���	r�cCsHt�j}t|�j}d�t|j�t|j��}tt	j
j|d��td�dS)Nz{}/{}��daterL)r r7r�eolr8r:Zmonth�yearr1rZSS_INTERIM_SUPPORT)r7�eol_dater�r/r/r0�_print_interim_release_support�s

r�cCsBt�j}t|�r4t|�j}ttjjt	|j
�d��n
ttj�dS)Nr�)r r7r"rr�r1rZSS_LTS_SUPPORTr8r:r�ZSS_NO_SECURITY_COVERAGE)r7r�r/r/r0�_print_lts_support�s

r��rXr��service_status�service_applicability�installed_updates�available_updatesrjc
Cs�t�j}t|�j}|tjkr6tjj||t	|j
�d�}	ntjj||t	|j
�d�}	|rn|	dtj�
|�j|d�7}	|r�|	dtj�
|�j|d�7}	t|	�|r�|tjkr�|tjkr�td�ttjj|d��td�dS)N)r�rXr�)rXr�r�r�)rvrL�rX)r r7rZeol_esmrrlrZSS_SERVICE_ENABLEDr8r:r�ZSS_SERVICE_ADVERTISEZSS_SERVICE_ENABLED_COUNTSr�ZSS_SERVICE_ADVERTISE_COUNTSr1�DISABLEDrZ
APPLICABLEZSS_SERVICE_COMMAND)
rXr�r�r�r�r�rjr7Zeol_date_esm�messager/r/r0�_print_service_support�sF	

��
��

��
���r�cCsbt�}|dkr$ttj�td�dSt�tj�}||}|jdkr^ttj	j
|jd��td�dS)NrLr)�days)rr1rZSS_UPDATE_UNKNOWNr�nowrZutcr�ZSS_UPDATE_DAYSr8)Zlast_apt_updater�Ztime_since_updater/r/r0�_print_apt_update_call�s

r�)ric
	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�|s�t|�r�t�ttj�dS|tjkr�t�|	�rttj�n
ttj�td	�tdd
||t|
d�t|�|	d�|
d�sT|
d�sT|
d�rvtdd||t|
d�t|�|	d�|	�s�ttj�dS)
Nrr_rxryr#rzr{r$rLr�r�r�)rrrk�applicability_statusr r7r!rmrKrhr�r1rZSS_HELP_CALLr�r"r��SS_NO_INTERIM_PRO_SUPPORTrr�r�ZSS_IS_ATTACHEDZSS_IS_NOT_ATTACHEDr�rQZ
SS_LEARN_MORE)
ri�
esm_infra_ent�esm_apps_ent�esm_infra_status�esm_infra_applicability�esm_apps_status�esm_apps_applicabilityr7�is_ltsrjr~Z"security_upgradable_versions_infraZ!security_upgradable_versions_appsr/r/r0�security_status�s���������




����
�
r�cCsxt�}|d}dd�|D�}t|ddd�|rjttj�td�ttj�t|�ttjjt	|�d��n
ttj
�dS)NrOcSsg|]
}|j�qSr/�rcr=r/r/r0r@Asz-list_third_party_packages.<locals>.<listcomp>T�r�r�rL�r?)rKr�r1rZSS_THIRD_PARTY�SS_PACKAGES_HEADERr3�SS_SHOW_HINTr8rZSS_NO_THIRD_PARTY)r~Zthird_party_packages�
package_namesr/r/r0�list_third_party_packages>s�

r�cCsxt�}|d}dd�|D�}t|ddd�|rjttj�td�ttj�t|�ttjjt	|�d��n
ttj
�dS)NrNcSsg|]
}|j�qSr/r�r=r/r/r0r@Usz-list_unavailable_packages.<locals>.<listcomp>Tr�rLr�)rKr�r1rZSS_UNAVAILABLEr�r3r�r8rZSS_NO_UNAVAILABLE)r~Zunknown_packagesr�r/r/r0�list_unavailable_packagesRs�

r�c	s�t�}|d}|d|d}||}t�}t|�d}|D]\}}|�|j�q<t�j}	t�}
t|�}t	|�}|�
�d}
|��d}tdd�|D���tdd�|D���t��fdd�|D��}t
|dd	d
�|
s�t|	�r�t�ttj�dS|
tjk�rt�td�tdd|
|t|�t|�d
d�ttjjdd��td�t|	��s��rnttjjdd��t����r�ttjjdd��t����p��}|�r�|�r�tjjdd�}ntjjdd�}t|�t|�|�r�ttjjt |�d��dS)Nr#rxryrcSsg|]
}|j�qSr/r�r=r/r/r0r@sz+list_esm_infra_packages.<locals>.<listcomp>cSsg|]
}|j�qSr/r�r=r/r/r0r@�scs&g|]}|j�kr|j�kr|j�qSr/r�r=�Zavailable_package_namesZinstalled_package_namesr/r0r@�s

�Tr�rLr�Fr�r�r�)!rK�setrh�addrbr r7r!rrrkr��sortedr�r"r�r1rr�rr�r�r�rQ�SS_SERVICE_HELPr8�SS_UPDATES_AVAILABLEr3�SS_UPDATES_INSTALLED�SS_FURTHER_OTHER_PACKAGES�SS_OTHER_PACKAGESr�r)rir~Zinfra_packagesZmr_packagesZall_infra_packagesZ
infra_updates�security_upgradable_versions�updaterWr7r�r�r�r�r��remaining_package_names�	hint_list�msgr/r�r0�list_esm_infra_packagesgs������	�
�	

�r�c	s�t�}|d}|d|d}||}t�}t|�d}|D]\}}|�|j�q<t�}	t|�}
|
��d}|
��d}t	dd�|D���t	dd�|D���t	��fdd�|D��}
t
|dd	d
�|	s�ttj
�dStdd||t|�t|�dd
�ttjjdd��td�|�r���r2ttjjdd��t����rRttjjdd��t����pZ�}|
�r�|�rxtjjdd�}ntjjdd�}t|�t|
�|�r�ttjjt|�d��dS)Nr$rzr{rcSsg|]
}|j�qSr/r�r=r/r/r0r@�sz*list_esm_apps_packages.<locals>.<listcomp>cSsg|]
}|j�qSr/r�r=r/r/r0r@�scs&g|]}|j�kr|j�kr|j�qSr/r�r=r�r/r0r@�s

�Tr�r�Fr�r�rLr�)rKr�rhr�rbr!rrkr�r�r�r1rr�r�rQr�r8r�r3r�r�r�r�r)rir~Z
apps_packagesZum_packagesZall_apps_packagesZapps_updatesr�r�rWr�r�r�r�r�r�r�r/r�r0�list_esm_apps_packages�s~������	�
�	
�r�)rAF)L�collectionsrrr�enumr�	functoolsrZrandomr�typingrr	r
rrrCZuaclientr
rrrZ5uaclient.api.u.pro.security.status.reboot_required.v1rZ(uaclient.api.u.pro.status.is_attached.v1rZuaclient.aptrrrrrZuaclient.configrZuaclient.entitlementsrrZ(uaclient.entitlements.entitlement_statusrrrZuaclient.systemrrr r!r"rUr%r3r9ZPackagerKrDr:rE�boolr[ZVersionrfrhrmrrrwrr�r�r��intr�r�r�r�r�r�r�r/r/r/r0�<module>s�	
��%	
��@!
�4��?
�2MY