
    μg$                        d dl Z d dlZd dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZmZm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 d d
lmZ d dlmZ  edg d      Z ej<                  ej>                        defd       Z d Z!d Z"d Z# edejH                  ejJ                  e#ejL                  d e edejN                        g      g      Z(y)    N)
namedtuple)defaultsmessagessystemutil)VulnerabilityData)CVEInfoCVEsOptions_cves)#query_installed_source_pkg_versions)cli_util)ProArgumentProArgumentGroup
ProCommand)Table)HelpCategory)UAConfigAffectedPackagename
fix_status
fix_originfix_version)msgcfgc                ,    t        t               |      S )N)optionsr   )r   r
   )argsr   kwargss      2/usr/lib/python3/dist-packages/uaclient/cli/cve.py_get_cve_vulnerabilitiesr!      s    C00    c                    g }t               }|j                  D ]  }|j                  |i       j                         }t	        |      D ]~  }| j
                  j                  |      }|s!|j                  D ]O  }	|	j                  |k(  s|j                  t        ||	j                  |	j                  |	j                                ~  |c S  y )Nr   )r   related_packagesgetkeyssortedpackagescvesr   appendr   r   r   r   )
cve_vulnerabilitiescve_infocve_namerowsinstalled_pkgs_by_source
source_pkgbinary_pkgs
binary_pkgbinary_pkg_infocves
             r    _get_affected_pkgsr5      s    DBD// 
.22:rBGGI - 	J1::>>zJO*// 
Cxx8++%/+.>>+.>>,/OO	 
		  'r"   c                 ^   g }| D ]  }|j                   dk(  r\|j                  dj                  |j                        |j                   dj                  |j                        |j
                  g       n|j                  dj                  |j                        |j                   ddg        |S )Nfixedz{}:z({}) )r   r*   formatr   r   r   )affected_pkgsformatted_rowsaffected_pkgs      r    _format_affected_pkgsr=   5   s    N% ""g-!!LL!2!23 ++MM,"9"9: ,,	 !!LL!2!23 ++	( r"   c                   | j                   j                         }t        | |      }||j                  vrt	        |      j                         j                  di       j                  di       j                  |      }|st        j                         j                  }t        t        j                  j                  | j                   |dj                  t        j                  |            t        j                          y t#        |d   t%        j&                  |d         |d	   |d
   |d   |d   g       }d}nI|j                  |   }t)        t+        ||| j                               }	t-        |	      j/                         }t        dj                  |             t        dj                  t        j                  |             t        dj                  |j0                  j3                  d                   t        dj                  |j4                  j3                  d                   t        dj                  |j6                  j3                  d                   t        dj                  t9        j:                  |j<                                     |j>                  r$t        dj                  |j>                               |j@                  r$t        dj                  |j@                               t        d       t        dj                  djC                  tE        jF                  |jH                  t        jJ                  dddd                         |jL                  rNt        d       |jL                  D ]4  }
t        tE        jN                  |
t        jJ                  ddd d!             6 |r/t        d"       |jQ                         D ]  }t        d|z           nt        d#       |jR                  rj|jR                  D cg c]4  }|jT                  r&d$j                  |jV                  |jT                        6 }}|rt        d%       |D ]  }t        |        y y y c c}w )&N)r   security_issuesr)   z{}/{})issuereleaseurl)filedescriptionpublished_atubuntu_prioritynotes
cvss_scorecvss_severity)rD   rE   priorityrG   rH   rI   related_usnsr8   )r.   zname:            {}zpublic-url:      {}/{}zpublished-at:    {}z%Y-%m-%dzcve-cache-date:  {}zapt-cache-date:  {}zpriority:        {}zcvss-score:      {}zcvss-severity:   {}zdescription: |z{}
Fz  )widthbreak_long_wordsbreak_on_hyphensinitial_indentsubsequent_indentznotes:z  - z    zaffected_packages:zaffected_packages: []z  {}: {}zrelated_usns:),r4   upperr!   r)   r   r%   r   get_release_inforA   printr   CLI_CVE_NOT_FOUND_IN_DATAr9   r   BASE_SECURITY_URLsysstderrr	   r   parse_rfc3339_dater=   r5   r   	to_stringrE   strftimevulnerability_data_published_atapt_updated_atr   colorize_priorityrJ   rH   rI   jointextwrapwraprD   PRINT_WRAP_WIDTHrG   fill
splitlinesrK   titler   )r   r   r   r-   r+   cve_datarA   r,   affected_pkgs_tableaffected_pkgs_rowsnotelineusnrK   related_usns                  r    
action_cverm   O   s   xx~~H24SA*///c"SUS"B'S_S] 	 --/77G2299((#x'A'A8L : 
 ZZ  /00.1IJ/07#-"?3
 !&++H522HdhhG
 $);<FFH	

&
&x
01	 ''(B(BHM 
$$!!**:6	

 
$$??HH	
 
$$..77
C	

 
$$&&x'8'89	
 #**8+>+>?@#**8+A+ABC	
	II(("33%*%*#'&*		
 ~~hNN 
	D"33%*%*#)&,	
	 "#'224 	D$+	 	%&  ,,
yy chh		2
 
 /"+ #k"#  
s   9Q+r4   T)help)	arguments)rn   rD   actionhelp_categorypreserve_descriptionargument_groups))rW   r`   collectionsr   uaclientr   r   r   r   +uaclient.api.u.pro.security.cves._common.v1r   #uaclient.api.u.pro.security.cves.v1r	   r
   r   'uaclient.api.u.pro.security.fix._commonr   uaclient.clir   uaclient.cli.commandsr   r   r   uaclient.cli.formatterr   uaclient.cli.parserr   uaclient.configr   r   with_spinnerCLI_CVES_SPINNER_MSGr!   r5   r=   rm   CLI_CVECLI_CVE_DESCSECURITYCLI_CVE_ISSUEcve_command r"   r    <module>r      s    
  " 5 5 I K K " K K ( , $J
 888918 1 :144{#| 				%%''!//	
	r"   