VULN_CHECK_I913V6 (f:JdZddlmZddlmZddlmZddlZddlZddlZddlm Z ddl m Z ddl m Z mZdd lmZd ZGd d e j$Zy) zUpdateInfo CLI command.)absolute_import)print_function)unicode_literalsN)commands) OptionParser)_ exact_widthunicodec&td|DS)z7Return maximum length of items in a non-empty iterable.c32K|]}t|ywN)r ).0items @/usr/lib/python3.12/site-packages/dnf/cli/commands/updateinfo.py z_maxlen..&s6XT{4 Xs)max)iterables r_maxlenr$s 6X6 66c eZdZdZej edejedejedejedejediZ ededed ed d Z d d d d d d ddZ ddgee jzZedZdZdddegZfdZedZdZdZdZdZdZdZdZd Zd!Zd"Z d#Z!d$Z"d%Z#d&Z$xZ%S)'UpdateInfoCommandz)Implementation of the UpdateInfo command.bugfix enhancementsecurityunknown newpackagez Critical/Sec.zImportant/Sec.z Moderate/Sec.zLow/Sec.)Critical ImportantModerateLowlistinfosummary)zlist-updateinfoz list-securityzlist-seczinfo-updateinfoz info-securityzinfo-seczsummary-updateinfo updateinfoupifz!display advisories about packages available installedupdatesallc:tt| |d|_y)zInitialize the command.N)superr__init___installed_query)selfcli __class__s rr-zUpdateInfoCommand.__init__Cs /4 $rc |j}|jddddtd|jddddtd |jd dd dtd |jd dddtdgd}|j}|jddddtd|jddddtd|jddddtd|jddddtd |jd!d"ddtd# |jd$d%d&||d'tjtd()y)*Nz --available _availabilityr' store_constz?advisories about newer versions of installed packages (default))destconstactionhelpz --installedr(z?advisories about equal and older versions of installed packagesz --updatesr)zbadvisories about newer versions of those installed packages for which a newer version is availablez--allr*z3advisories about any versions of installed packages)r$r"r#z --summary _spec_actionr$z$show summary of advisories (default)z--listr"zshow list of advisoriesz--infor#zshow info of advisoriesz --with-cvewith_cveF store_truez'show only advisories with CVE reference)r5defaultr7r8z --with-bzwith_bzz,show only advisories with bugzilla referencespec*SPECrzPackage specification)nargsmetavarchoicesr<r7r8)add_mutually_exclusive_group add_argumentrrPkgNarrowCallback)parser availabilitycmds output_formats r set_argparserzUpdateInfoCommand.set_argparserHs::< !! {=TU " W !! {=TU " W !! oY}<= " > !! /}HI " K+;;= "";^9*7()*P(Q # S ""8.*7()*C(D # F ""8.*7()*C(D # F Lz5#/!"#L!M  O Ki#/!"#Q!R  T F#v$($q'#/#A#A!"#:!;  =rc d|jj_d|jj_|jj |j vr3|j |jj |j_n;|jjr%|jj|j_|jjr&|jj|j_ n|jjr%|jjd|jvr|j|j_ n4|jjjd|j_ t|j_|jj"r3|jj j%t&j(|jj*r3|jj j%t&j,|jj.r3|jj j%t&j0|jj2r3|jj j%t&j4|jjr[|jjjd}|dk(r4|jj j%t&j(n|dk(r4|jj j%t&j,n|dvr4|jj j%t&j4n|dk(r4|jj j%t&j0nS|dvrd|j_n=|dk(rd|j_n&|jjj;d||jj<r:|jjj?|jj<y y ) zADo any command-specific configuration based on command arguments.Trrr)rsecr) bugzillasbzscvesN) r0demandsavailable_repossack_activationoptscommanddirect_commands spec_actionr9r3rHr>availabilitiesavailability_defaultpopset_advisory_typesraddhawkeyADVISORY_BUGFIXrADVISORY_ENHANCEMENTrADVISORY_NEWPACKAGErADVISORY_SECURITYr=r:insertadvisoryextend)r/r>s r configurezUpdateInfoCommand.configurens+/(+/( 99   4 4 4$($8$89J9J$KDII !yy%%(, (>(> % 99 " "%)YY%<%>TYY^^A%6d>Q>Q%Q)-)B)B &)-););A)> &%(E ! 99   II % % ) )&*@*@ A 99 II % % ) )&*E*E F 99   II % % ) )&*D*D E 99   II % % ) )&*B*B C 99>>99>>%%a(Dx ))--f.D.DE& ))--f.I.IJ,, ))--f.F.FG% ))--f.H.HI--$( !%) " %%a. 99   IINN ! !$))"4"4 5 rc|jjdk(r1|j|jj}t d}n|jjdk(r1|j |jj}t d}nz|jjdk(r1|j |jj}t d}n0|j|jj}t d}|jjdk(r|j|y|jjdk(r|j|y|j||y)z#Execute the command with arguments.r(r)r*r'r"r#N) rTrHinstalled_apkg_adv_instsr>rupdating_apkg_adv_instsall_apkg_adv_instsavailable_apkg_adv_instsrW display_list display_infodisplay_summary)r/apkg_adv_insts descriptions rrunzUpdateInfoCommand.runs  99 ! ![ 0!::499>>JNK.K YY # #y 0!99$))..INI,K YY # #u ,!44TYY^^DNE(K!::499>>JNK.K 99 F *   n - YY " "f ,   n -   =rc"|jE|jjjj j |_|jj |j|j}t|dkDS)N)nameevr__gter) r.basesackqueryr(applyfilterrsevrlen)r/apackageqs r_newer_equal_installedz(UpdateInfoCommand._newer_equal_installedsj  ($(IINN$8$8$:$D$D$F$L$L$ND !  ! ! ( (hmmhll ( S1vzrc|jjs|jjso|jjsY|jjsC|jj s-|jj s|jjsyj|jjvrytfd|jjDry|jjr#j|jjvry|jjr=t|jjDcgc]}j|c}ry|jj r=t|jj Dcgc]}j|c}ry|jj r?tjDcgc]}|jtjk(!c}ry|jjr?tjDcgc]}|jtjk(!c}ryycc}wcc}wcc}wcc}w)NTc3^K|]$}tjj|&ywr)fnmatch fnmatchcaseid)rpatrds rrz6UpdateInfoCommand._advisory_matcher..s#Ow""8;;4*-F)rTr\r>severitybugzillarPr:r=typeany match_bug match_cve referencesr^ REFERENCE_CVEREFERENCE_BUGZILLA)r/rdbugcverefs ` r_advisory_matcherz#UpdateInfoCommand._advisory_matchersyy((  ** **  ** )) ==DII55 5 O O O 99  ("3"3tyy7I7I"I 99  #$))J\J\&]J\3x'9'9#'>J\&]"^ 99>>cdiinn"Uns8#5#5c#:n"UV 99  @S@ST@SCHH 4 44@STU 99  XEXEXYEXcCHH 9 99EXYZ'^"UUZsI3(I81$I=$Jc#0K|j|D]}j|jj}|j |}t fd|j jD}|s|sf|j}||fyw)z4Return (adv. package, advisory, installed) triplets.c3^K|]$}tjj|&ywr)rrrs)rrr|s rrzAUpdateInfoCommand._apackage_advisory_installed..s*!<,:S")!4!4X]]C!H,:rN) get_advisory_pkgs get_advisoryrurvrrrTr>r~) r/ pkgs_querycmptypespecsrdadvisory_matchapackage_matchr(r|s @r_apackage_advisory_installedz.UpdateInfoCommand._apackage_advisory_installeds"44W=H,,TYY^^s A7B;Bc|jj}|jjd}|j }|r9|j |jj|j }|S)z|j|jf||j|jf<pt j |jS)zMake the summary of advisories.)rrr^rbr collectionsCountervalues)r/roid2typeapkgrdr(s r_summaryzUpdateInfoCommand._summarys +9 'T8Y#+==GHKK }} 8 88=E]]HL]L]<^h&7&789,:""7>>#344rc |j|}|rttd|zdtd|tjfdtd|tj fdtd|tj dffdtd|tj d ffdtd |tj d ffdtd |tj d ffdtd|tj dffdtd|tj fdtd|tjfdtd|tjfg }td|D}|D])\}}}|s td|d|zzt||fz+|jjjr|jjyy)z"Display the summary of advisories.zUpdates Information Summary: rzNew Package notice(s)zSecurity notice(s)rzCritical Security notice(s)rzImportant Security notice(s)rzModerate Security notice(s)r zLow Security notice(s)r!zUnknown Security notice(s)NzBugfix notice(s)zEnhancement notice(s)zother notice(s)c3DK|]}|ds t|dyw)Nr )rvs rrz4UpdateInfoCommand.display_summary..(sH> 2 2 HH * * , 3rc fd}fd}t}|D]j\}}}|jd|jd|j}jj sjj r|jD]} | jtjk(rjj s7| jtjk(rjj sk|j|jf|j|||jft| j<!|j|jf|j|||jft|j<mg} dx} x} } t!|j#dD]\\}}}}t%| t'|} |j#D]P\}}t%| t'|} ||}t%| t'|} | j)||||||fR| D]S\}}}}}j*j,j.rt1d|| || || ||fz@t1d || || ||fzUy ) zDisplay the list of advisories.c@jjdk(sy|ryy)Nr*zi  )rTrH)instr/s r inst2markz1UpdateInfoCommand.display_list..inst2mark2s!99))U2rc|tjk(r%jj|t dSj j|t dS)Nz Unknown/Sec.r)r^rbSECURITY2LABELgetr TYPE2LABEL)typsevr/s r type2labelz2UpdateInfoCommand.display_list..type2label:sJf...**..sAn4EFF**3) ==r-.rc |dS)Nrxs rz0UpdateInfoCommand.display_list..Rs ^_`a^brkeyz%s%-*s %-*s %-*s %sz%s%-*s %-*s %sN)dictrsrzarchrTr:r=rrr^rrr setdefaultupdatedrsorteditemsrr{appendrurverboser)r/rorrnevra_inst_dictrrdr(nevraradvlistidwtlwnwraupdatedraidatypesevrs` rrlzUpdateInfoCommand.display_list0s8  > &)7 %D(I"&))TXXtyyAEyy!!TYY%6%6#..Cxx6#<#<O..y(BRBR/SUYU[\]`]c]cd /! x'8'8i:**E9h>N>N+OQUQWXYaYdYde*8cB067L7L7NTb0c , #UD(WRU$B!( X#s3x("H-#s5z* $eUHMN "11d4; /T3uhyy~~%%+tS#sE2uV^.__`&$S#ue)LLM 4;rc  jjjjjj t dt dt dt dt dt dt dt dt d t d f  fd }t }|D]\}}}|j||| td jt|d y)z/Display the details about available advisories.z Update IDTypeUpdatedBugsCVEs DescriptionSeverityRightsFiles Installedc|jgjj|jt dgt |j ggg|jxsdj|jg|jxsdjtt fd|jDdg }|jD]}|jtj k(r=|dj#dj%|j|j&xsd]|jtj(k(s{|dj#|j|dj+|dj+s d|d<d|d<j,j.d k(r|r t d n t d g|d <t1 }g}|j#d |j#d|j&z|j#d t3 |D]O\}}|ddgfvrt5|D]4\}} |dk(r|nd} |t7| z } |j#d| d| | fz6Qdj9|S)Nrrc3RK|]}|jvr|j ywr)rfilename)rpkgarchess rrzHUpdateInfoCommand.display_info..advisory2info..ss)23DC!hh&0<<3Ds$'z{} - {}rr*truefalse zO===============================================================================rrz %*s%s: %s )rrrrrr rrp splitlinesrrightsrr[packagesrr^rrformattitlersortrTrHrzip enumerater join)rdr( attributesrrlinesr atr_linesiliner key_paddingrlabelsr/rs r advisory2infoz5UpdateInfoCommand.display_info..advisory2infois9 $$X]]AiLAB))*+%%+779""#&B224s283D3D223 J **88v888qM(()9)9#&&#))/r)RSXX!5!55qM((0 + qM   qM    $ 1 $ 1 yy%%..76QwZ H 1 FOEE LL " LL. / LL "$' $; yv.(3GAt#$6%rC"'+c*:":KLL Rd/K!KL 4%<99U# #rz c"|jSr)lowerrs rrz0UpdateInfoCommand.display_info..s 1779rrN) rurv list_archesrrrr[r]rr r) r/ror advisoriesrrdr(rrrs ` @@@rrmzUpdateInfoCommand.display_infoas++-))..((K.!F)Qy\1V9F)Q}-q}akG*a n.& $PU )7 %D(I NN=9= >*8 fkk&1DEFGr)&__name__ __module__ __qualname____doc__r^r_rr`rbrrarrrVr"keysaliasesr$rYrXr- staticmethodrKrfrqr~rrrrkrhrirjrrnrlrm __classcell__)r1s@rrr)sG3((!H+--q/?**AjM))1Y<,,a o ?J #$O"4#$%5#6"#O"4z],N /5.4.4.4.4.4.7 9OV$tO,@,@,B'CCG34G&!9e5IJN% #=#=J36l>, 6 4FN O Z 5-<.Nb4Hrr)r __future__rrrrrr^dnf.clirdnf.cli.option_parserrdnf.i18nrr dnf.pycompr rCommandrrrrr(sC*&%' .#7 lH((lHr