HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/uaclient/api/u/pro/security/fix/__pycache__/__init__.cpython-310.pyc
o

nHJe�p�@s�ddlZddlZddlmZddlmZmZmZmZm	Z	m
Z
ddlmZm
Z
mZddlmZddlmZddlmZddlmZmZdd	lmZmZmZmZmZdd
lmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,dZ-dZ.d
Z/edde0fde0fde	e0fg�Z1ej2Gdd�dej3��Z4ej2Gdd�dej3��Z5ej2Gdd�dej3��Z6ej2Gdd�dej3��Z7Gdd�de�Z8Gdd�de�Z9Gdd�de8�Z:Gd d!�d!e�Z;Gd"d#�d#e8�Z<Gd$d%�d%e�Z=Gd&d'�d'e8�Z>Gd(d)�d)e�Z?Gd*d+�d+e8�Z@Gd,d-�d-e?�ZAGd.d/�d/e@�ZBGd0d1�d1e?�ZCGd2d3�d3e@�ZDGd4d5�d5e�ZEGd6d7�d7e�ZFGd8d9�d9eE�ZGGd:d;�d;e�ZHGd<d=�d=eE�ZIGd>d?�d?e�ZJGd@dA�dAe�ZKGdBdC�dCeK�ZLGdDdE�dEe�ZMGdFdG�dGe�ZNGdHdI�dI�ZOGdJdK�dKeO�ZP		dqdLe0dMe	e0dNe	ee0fdOdP�ZQdQe0dRe%dSe
eee!ffdTdU�ZRdQe0dRe%dSe
e!ee!ffdVdW�ZSdXee"dYe0dSe
ee0ee1ffdZd[�ZTd\ee
e0e#fd]ee0ee0ee0e0fffd^ee0ee0e0fffd_d`�ZUdQe0daedSeMfdbdc�ZVdQe0daedSeNfddde�ZWdQe0daedSeMfdfdg�ZXdQe0daedSeNfdhdi�ZYdYe0fdjdk�ZZddl�dQe0dme0dnee0e#fd]ee0ee0ee0e0fffd^ee0ee0e0ffdaedSeMfdodp�Z[dS)r�N)�defaultdict)�Any�Dict�List�
NamedTuple�Optional�Tuple)�apt�
exceptions�messages)�_enabled_services)�_is_attached)�UAConfig)�ContractExpiryStatus�get_contract_expiry_status)�
DataObject�Field�IntDataValue�StringDataValue�	data_list)�CVE�CVE_OR_USN_REGEX�USN�BinaryPackageFix�CVEPackageStatus�	FixStatus�UASecurityClient�_check_cve_fixed_by_livepatch�get_affected_packages_from_usn�'get_cve_affected_source_packages_status�get_related_usns�group_by_usn_package_status�*merge_usn_released_binary_package_versions�#query_installed_source_pkg_versionszstandard-updates�	esm-infra�esm-apps�UnfixedPackage�source_package�binary_package�versionc@seZdZdZdZdZdZdS)�FixStepType�attach�enablezno-opzapt-upgradeN)�__name__�
__module__�__qualname__�ATTACH�ENABLE�NOOP�APT_UPGRADE�r4r4�J/usr/lib/python3/dist-packages/uaclient/api/u/pro/security/fix/__init__.pyr*1s
r*c@seZdZdZdZdZdS)�FixPlanNoOpStatuszcve-already-fixed�system-not-affectedzcve-fixed-by-livepatchN)r-r.r/�
ALREADY_FIXED�NOT_AFFECTED�FIXED_BY_LIVEPATCHr4r4r4r5r69sr6c@�eZdZdZdZdS)�FixPlanAttachReasonzexpired-contract-token�required-pro-serviceN)r-r.r/�EXPIRED_CONTRACT�REQUIRED_PRO_SERVICEr4r4r4r5r<@�r<c@r;)�FixWarningTypezpackage-cannot-be-installedzsecurity-issue-not-fixedN)r-r.r/�PACKAGE_CANNOT_BE_INSTALLED�SECURITY_ISSUE_NOT_FIXEDr4r4r4r5rAFr@rAc@�2eZdZede�ede�gZdedefdd�Z	dS)�FixPlanStep�	operation�ordercC�||_||_dS�N�rFrG)�selfrFrGr4r4r5�__init__R�
zFixPlanStep.__init__N�
r-r.r/rrr�fields�str�intrLr4r4r4r5rEL�
�rEc@sNeZdZedee��edee��ede�gZdeedeedefdd�Z	dS)�AptUpgradeData�binary_packages�source_packages�pocketcC�||_||_||_dSrI�rTrUrV)rKrTrUrVr4r4r5rL^s
zAptUpgradeData.__init__N�
r-r.r/rrrrOrrPrLr4r4r4r5rSWs����rSc�BeZdZede�ede�ede�gZdedef�fdd�Z	�Z
S)�FixPlanAptUpgradeSteprF�datarGc�t�jtjj|d�||_dS�NrJ)�superrLr*r3�valuer\�rKr\rG��	__class__r4r5rLq�
zFixPlanAptUpgradeStep.__init__)r-r.r/rrrSrrOrQrL�
__classcell__r4r4rbr5r[j��r[c@sFeZdZede�ede�edee��gZdedeedefdd�Z	dS)�
AttachData�reason�required_servicerUcCrWrI�rhrUri)rKrhrUrir4r4r5rL}s
zAttachData.__init__N�
r-r.r/rrrrOrPrrLr4r4r4r5rgvs����rgcrZ)�FixPlanAttachSteprFr\rGcr]r^)r_rLr*r0r`r\rarbr4r5rL�rdzFixPlanAttachStep.__init__)r-r.r/rrrgrrOrQrLrer4r4rbr5rl�rfrlc@s:eZdZede�edee��gZdedeefdd�Z	dS)�
EnableData�servicerUcCrHrI�rnrU)rKrnrUr4r4r5rL�rMzEnableData.__init__Nrkr4r4r4r5rm��
�rmcrZ)�FixPlanEnableSteprFr\rGcr]r^)r_rLr*r1r`r\rarbr4r5rL�rdzFixPlanEnableStep.__init__)r-r.r/rrrmrrOrQrLrer4r4rbr5rq�rfrqc@s&eZdZede�gZdefdd�ZdS)�NoOpData�statuscCs
||_dSrI�rs)rKrsr4r4r5rL�s
zNoOpData.__init__N)r-r.r/rrrOrPrLr4r4r4r5rr�s�rrcrZ)�FixPlanNoOpSteprFr\rGcr]r^)r_rLr*r2r`r\rarbr4r5rL�rdzFixPlanNoOpStep.__init__)r-r.r/rrrrrrOrQrLrer4r4rbr5ru�rfrucs:eZdZede�ede�gZdedef�fdd�Z�ZS)�NoOpLivepatchFixDatars�
patch_versioncst�j|d�||_dS�Nrt)r_rLrw)rKrsrwrbr4r5rL�s
zNoOpLivepatchFixData.__init__)	r-r.r/rrrOrPrLrer4r4rbr5rv�s
�rvcrZ)�FixPlanNoOpLivepatchFixSteprFr\rGc�t�j||d�dS�N)r\rG�r_rLrarbr4r5rL��z$FixPlanNoOpLivepatchFixStep.__init__)r-r.r/rrrvrrOrQrLrer4r4rbr5ry�rfrycsNeZdZede�edee��ede�gZdedeedef�fdd�Z	�Z
S)�NoOpAlreadyFixedDatarsrUrVcst�j|d�||_||_dSrx)r_rLrUrV)rKrsrUrVrbr4r5rL�s
zNoOpAlreadyFixedData.__init__)r-r.r/rrrrOrPrrLrer4r4rbr5r~�s����r~c�BeZdZede�ede�ede�gZdede	f�fdd�Z
�ZS)�FixPlanNoOpAlreadyFixedSteprFr\rGcrzr{r|rarbr4r5rL�r}z$FixPlanNoOpAlreadyFixedStep.__init__)r-r.r/rrrvrrOr~rQrLrer4r4rbr5r��rfr�c@rD)�FixPlanWarning�warning_typerGcCrHrI�r�rG)rKr�rGr4r4r5rL�rMzFixPlanWarning.__init__NrNr4r4r4r5r��rRr�c@s:eZdZedee��ede�gZdeedefdd�Z	dS)�SecurityIssueNotFixedDatarUrscCrHrI�rUrs)rKrUrsr4r4r5rL�rMz"SecurityIssueNotFixedData.__init__NrYr4r4r4r5r��s
�r�csBeZdZede�ede�ede�gZdedef�fdd�Z	�Z
S)�#FixPlanWarningSecurityIssueNotFixedr�rGr\c�t�jtjj|d�||_dS�Nr�)r_rLrArCr`r\�rKrGr\rbr4r5rL
�
�
z,FixPlanWarningSecurityIssueNotFixed.__init__)r-r.r/rrrr�rOrQrLrer4r4rbr5r�rfr�c@s^eZdZede�ede�ede�edee��ede�gZdededededeef
dd�Z	dS)	�PackageCannotBeInstalledDatar(�binary_package_versionr'�related_source_packagesrVcCs"||_||_||_||_||_dSrI)r'r(r�rVr�)rKr(r�r'rVr�r4r4r5rLs
	
z%PackageCannotBeInstalledData.__init__Nrkr4r4r4r5r�s$������r�cr)�&FixPlanWarningPackageCannotBeInstalledr�rGr\cr�r�)r_rLrArBr`r\r�rbr4r5rL2r�z/FixPlanWarningPackageCannotBeInstalled.__init__)r-r.r/rrrr�rOrQr�rLrer4r4rbr5r�+rfr�c@s:eZdZede�ededd�gZdedeefdd�ZdS)�FixPlanError�msg�codeF��requiredcCrHrI�r�r�)rKr�r�r4r4r5rL@rMzFixPlanError.__init__N)	r-r.r/rrrOrPrrLr4r4r4r5r�:rpr�c@seZdZdS)�AdditionalDataN)r-r.r/r4r4r4r5r�Esr�c@sBeZdZedee��edee��gZdeedeefdd�Z	dS)�USNAdditionalData�associated_cves�associated_launchpad_bugscCrHrI�r�r�)rKr�r�r4r4r5rLP�
zUSNAdditionalData.__init__NrYr4r4r4r5r�Is���r�c@s�eZdZede�ededd�ede�edee�dd�edee��edee�dd�ed	edd�ed
e	dd�gZ
ddd�dededeedeed	e
ed
e	de
ede
eefd
d�ZdS)�
FixPlanResult�title�descriptionFr��expected_status�affected_packages�plan�warnings�error�additional_dataN)r�r�c	Cs4||_||_||_||_||_||_||_||_dSrI�r�r�r�r�r�r�r�r�)	rKr�r�r�r�r�r�r�r�r4r4r5rLfs
zFixPlanResult.__init__)r-r.r/rrrrEr�r�r�rOrPrrrLr4r4r4r5r�Zs:��������	�

�r�c@s>eZdZede�edee�dd�gZdedeefdd�ZdS)�FixPlanUSNResult�target_usn_plan�related_usns_planFr�cCrHrI�r�r�)rKr�r�r4r4r5rL�r�zFixPlanUSNResult.__init__N)	r-r.r/rr�rrOrrLr4r4r4r5r�|s���r�c	@s�eZdZ	ddedeedeeefdd�Zdedeee	ffd	d
�Z
dedeee	ffdd
�Zdedeefdd�Z
deee	ffdd�Zdefdd�Zedd��ZdS)�FixPlanNr�r�r�cCs6d|_||_||_||_g|_g|_d|_t�|_dS)N�)	rGr�r�r��	fix_steps�fix_warningsr�r�r�)rKr�r�r�r4r4r5rL�szFixPlan.__init__rFr\cCs�d}|tjkrt|jt�|�d�}nH|tjkr"t|jt�|�d�}n8|tj	krPd|vr6t
|jt�|�d�}n$d|vrEt|jt
�|�d�}nt|jt�|�d�}n
t|jt�|�d�}|j�|�|jd7_dS)N�rGr\rwrUr�)r*r0rlrGrg�	from_dictr1rqrmr2ryrvr�r~rurrr[rSr��append)rKrFr\�fix_stepr4r4r5�
register_step�s4
�
�
����zFixPlan.register_stepr�cCsVd}|tjkrt|jt�|�d�}n
t|jt�|�d�}|j�	|�|jd7_dS)Nr�r�)
rArCr�rGr�r�r�r�r�r�)rKr�r\�fix_warningr4r4r5�register_warning�s
��zFixPlan.register_warning�	error_msg�
error_codecCst||d�|_dS)Nr�)r�r�)rKr�r�r4r4r5�register_error�szFixPlan.register_errorr�cC�tdi|��|_dS�Nr4)r�r��rKr�r4r4r5�register_additional_data�r}z FixPlan.register_additional_data�returncCs^|jrdSt|j�dkr"t|jdt�r"|jdjjdkr"ttj	�S|j
r*ttj�Sttj�S)Nr�r�rr7)
r��lenr��
isinstancerur\rsrPr�SYSTEM_NOT_AFFECTEDr��SYSTEM_STILL_VULNERABLE�SYSTEM_NON_VULNERABLE�rKr4r4r5�_get_status�s�


zFixPlan._get_statusc
Cs*t|j|j|��|j|j|j|j|jd�S)Nr�)	r�r�r�r�r�r�r�r�r�r�r4r4r5�fix_plan�s�zFixPlan.fix_planrI)r-r.r/rPrrrLr*rrr�rAr�r�r�r��propertyr�r4r4r4r5r��s0���

��

�%�

�r�c@s"eZdZdeeeffdd�ZdS)�
USNFixPlanr�cCr�r�)r�r�r�r4r4r5r��r}z#USNFixPlan.register_additional_dataN)r-r.r/rrPrr�r4r4r4r5r��sr�r�r�r�cCs,|rd|��vrt|||d�St|||d�S)N�cve�r�r�r�)�lowerr�r�r�r4r4r5�get_fix_plan�s��r��issue_id�clientr�c
CsXz|j|d�}|j|d�}W||fStjy+}z
|jdkr%tj|d��|�d}~ww)N)�cve_id)�details��r�)�get_cve�get_noticesr
�SecurityAPIErrorr��SecurityIssueNotFound)r�r�r��usns�er4r4r5�
_get_cve_datas�
��r�c
Csrz
|j|d�}t||�}Wntjy'}z
|jdkr!tj|d��|�d}~ww|jds5tjd|dd��||fS)N)�	notice_idr�r��release_packagesz+metadata defines no fixed package versions.�)r��issue�
extra_info)�
get_noticer r
r�r�r��response�SecurityAPIMetadataError)r�r��usnr�r�r4r4r5�
_get_usn_datas 
��
�r��binary_pkgsrVcCsvg}g}t|�D].}|tjk}tj|j|d�}|r)t�|j|�dkr)|�|j�q|�t	|j
|j|jd��q||fS)N)�check_esm_cacher)r'r(r))�sortedr�'SECURITY_UBUNTU_STANDARD_UPDATES_POCKETr	�get_pkg_candidate_version�
binary_pkg�version_compare�
fixed_versionr�r&�
source_pkg)r�rV�upgrade_pkgs�unfixed_pkgsr�r��candidate_versionr4r4r5�_get_upgradable_pkgs5s0�������r��pkg_status_group�usn_released_pkgs�installed_pkgsc	Cs�tt�}tt�}|D]C\}}||j�||f�||��D].\}}|�|i�}	||	vr-q|	�|i��dd�}
t�|
|�dkrL||j�t|||
d��qq
||fS)Nr)r�r)r�r�r�)	r�list�
pocket_sourcer��items�getr	r�r)r�r�r��binary_pocket_pkgs�src_pocket_pkgs�src_pkg�
pkg_statusr�r)�usn_released_srcr�r4r4r5�,_get_upgradable_package_candidates_by_pocketWs,�
����r��cfgc
Cs�t|�\}}|rt|d�}|jtjtjj|d�d�|jSt	|d�}t
�}z
t||d�\}}Wn$tj
yS}	zt|d�}|j|	j|	jd�|jWYd}	~	Sd}	~	wwt||d�}
t|id�}|j}|jD]}
|
j}t|||
|||d	�S)
N�r�)rsrw�rFr\�r��r�r��r�r�)r��installed_packages��beta_pockets)r��issue_description�affected_pkg_statusr�r�r�)rr�r�r*r2r6r:r`r�rr#r�r
r�r�r��msg_coderr"r��noticesr��_generate_fix_plan)r�r��livepatch_cve_statusrwr�r�r�r�r�r�rr��cve_description�noticer4r4r5�
_fix_plan_cveusP�
��

����
�rc
Cs@t|d�}t�}z
t||d�\}}Wn(tjy:}zt|d�}|j|j|jd�t	|j
gd�WYd}~Sd}~wwt||d�}t|gid�}	|j
sMgn|j
|jsTgn|jd�}
t||j||	|||
d	�}g}|D]0}t||d�}t|gid�}	|j
s}gn|j
|js�gn|jd�}
|�t|j|j||	|||
d	��qit	||d�S)
Nr�r�r�rr�)r�rrr�)r�rrr�r�r�r�)rr#r�r
r�r�r�r�rr�r�rr"�cves_ids�
referencesrr�r��id)
r�r�r�r�r��related_usnsr�r�rr�r�r�r�r4r4r5�
_fix_plan_usn�sz

��������
�������rcCsR|rt�t|�s t|d�}tjj|d�}|j|j|j	d�|j
S|��}t||�S)Nr�r�r)
�re�matchrr�r�INVALID_SECURITY_ISSUE�formatr�r��namer��upperr�r�r�r�r�r4r4r5�fix_plan_cve�s

rcCsZ|rt�t|�s$t|d�}tjj|d�}|j|j|j	d�t
|jgd�S|��}t
||�S)Nr�r�rr�)rrrr�rrrr�r�rr�r�rrrr4r4r5�fix_plan_usn�s
�
rcCs.|tjkrtS|tjkrtS|tjkrtS|SrI)rr��STANDARD_UPDATES_POCKET�SECURITY_UA_INFRA_POCKET�ESM_INFRA_POCKET�SECURITY_UA_APPS_POCKET�ESM_APPS_POCKET)rVr4r4r5�get_pocket_short_names


r )r�rrc
Cs8t|�}tt�}t||tt|����d�}	|r|	�|�|dkr/|	jtj	dt
jjid�|	j
St||�}
t|
���D]!\}}|dkrS|	jtjdd�|D�|d�d	�q:t|||�\}}
q:|sa|	j
StjtjtjfD]�}||}|
|}d
d�|D�}t|�}|s�|r�|	jtj	t
jj||d�d�qit||�\}}|r�|D]}|	jtj|j|j|j||d�d	�q�|tjk�r|tjkr�d
}nd}t|�j s�|	jtj!d||d�d�nt"|�\}}|t#j$kr�|	jtj!t%j&j|d�d�t'|�j(p�g}|r�dd�|D�ng}||v�r|	jtj)||d�d�|	jtj*|||d�d�qi|	j
S)Nr�rrsr��releasedcS�g|]\}}|�qSr4r4��.0r��_r4r4r5�
<listcomp>6s�z&_generate_fix_plan.<locals>.<listcomp>r�)r�r\cSr"r4r4r#r4r4r5r&Ps)rsrUrV)r(r�r'r�rVr$r%r=rj)rhrUcSsg|]}|j�qSr4)r)r$rnr4r4r5r&�srorX)+r�rr�r�r��keysr�r�r*r2r6r9r`r�r!r�r�rArCr�rr�rrr r8r�rBr(r)r'r
�is_attachedr0rr�ACTIVEr<r>r�enabled_servicesr1r3)r�rrr�r�r�r��countr�r��pkg_status_groups�status_valuer�r�rV�
pkg_src_groupr��source_pkgs�pocket_namer�r��unfixed_pkg�service_to_check�contract_expiry_statusr%r*�enabled_services_namesr4r4r5rs�
�

�����
�������

��	
����
����	r)NN)\�enumr�collectionsr�typingrrrrrr�uaclientr	r
r�-uaclient.api.u.pro.status.enabled_services.v1r�(uaclient.api.u.pro.status.is_attached.v1r
�uaclient.configr�uaclient.contractrr�uaclient.data_typesrrrrr�uaclient.securityrrrrrrrrrrr r!r"r#rrrrPr&�unique�Enumr*r6r<rArErSr[rgrlrmrqrrrurvryr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr rr4r4r4r5�<module>s� @
��
	"k���

���
���
���
�"��
�1F���
����	�