
    Jh                        d dl Z d dlZd dlmZ d dlmZ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jJ                  ejL                  e$ejN                  d e edejP                        g      g      Z)y)    N)
namedtuple)defaults
exceptions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                j    	 t        t               |      }|S # t        j                  $ r d }Y |S w xY w)N)optionsr   )r   r   r   VulnerabilityDataNotFound)argsr   kwargsresults       2/usr/lib/python3/dist-packages/uaclient/cli/cve.py_get_cve_vulnerabilitiesr$      s=    {}#6 M // Ms    22c                    g }t               }|j                  D ]  }|j                  |i       j                         }t	        |      D ]~  }| j
                  j                  |      }|s!|j                  D ]O  }	|	j                  |k(  s|j                  t        ||	j                  |	j                  |	j                                ~   |S )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_pkgsr7       s    DBD// 
.22:rBGGI - 	J1::>>zJO*// 
Cxx8++%/+.>>+.>>,/OO	 
		& K    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@   :   s    N% ""g-!!LL!2!23 ++MM,"9"9: ,,	 !!LL!2!23 ++	( r8   c                	   | j                   j                         }t        | |      }|st        j                         ||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                               }	t1        |	      j3                         }t        dj                  |             t        dj                  t        j                   |             t        dj                  |j4                  j7                  d                   t        dj                  |j8                  j7                  d                   t        dj                  |j:                  j7                  d                   t        dj                  t=        j>                  |j@                                     |jB                  r$t        dj                  |jB                               |jD                  r$t        dj                  |jD                               t        d       t        dj                  djG                  tI        jJ                  |jL                  t        jN                  dddd                         |jP                  rNt        d       |jP                  D ]4  }
t        tI        jR                  |
t        jN                  ddd d!             6 |r/t        d"       |jU                         D ]  }t        d|z           nt        d#       |jV                  rj|jV                  D cg c]4  }|jX                  r&d$j                  |jZ                  |jX                        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)rG   rH   priorityrJ   rK   rL   related_usnsr;   )r0   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:).r6   upperr$   r   r   r+   r	   r'   r   get_release_inforD   printr   CLI_CVE_NOT_FOUND_IN_DATAr<   r   BASE_SECURITY_URLsysstderrr
   r   parse_rfc3339_dater@   r7   r   	to_stringrH   strftimevulnerability_data_published_atapt_updated_atr   colorize_priorityrM   rK   rL   jointextwrapwraprG   PRINT_WRAP_WIDTHrJ   fill
splitlinesrN   titler   )r    r   r!   r/   r-   cve_datarD   r.   affected_pkgs_tableaffected_pkgs_rowsnotelineusnrN   related_usns                  r#   
action_cverp   T   s   xx~~H24SA2244*///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   $9Rr6   T)help)	arguments)rq   rG   actionhelp_categorypreserve_descriptionargument_groups)*rZ   rc   collectionsr   uaclientr   r   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$   r7   r@   rp   CLI_CVECLI_CVE_DESCSECURITYCLI_CVE_ISSUEcve_command r8   r#   <module>r      s    
  " A A I K K " K K ( , $J
 88898  :44~#B 				%%''!//	
	r8   