
    |*&i                     \    S SK r S SKrS SKJrJr  S SKJr  S SKJr  S SK	J	r	   " S S5      r
g)    N)ListAny)VulnerabilityIntelligence)Template)datetimec                      \ rS rSr\S\\   S\SS4S j5       r\S\\   S\SS4S j5       r	\S\S\
4S	 j5       r\S\\   S\SS4S
 j5       r\S\S\4S j5       r\S\\
   S\4S j5       r\S\\
   S\4S j5       r\S\\
   S\4S j5       r\S\\
   S\4S j5       r\S\\
   S\4S j5       r\S\S\4S j5       rSrg)&VulnerabilityIntelligenceReportService   vulnerabilitiesfilenamereturnNc                 ,   [        USSSS9 n[        R                  " U5      nUR                  / SQ5        U  GH0  nUR                  UR                  [
        R                  UR                  5      [
        R                  UR                  5      [
        R                  UR                  5      SR                  UR                  5      [
        R                  UR                  5      [
        R!                  UR"                  5      SR                  [%        UR&                  5      5      SR                  [%        UR(                  5      5      SR                  UR*                  5      /
5        GM3     S S S 5        [-        SU 35        g ! , (       d  f       N= f)	Nw utf-8)modenewlineencoding)
IDDatesURLsDescriptionszReference URLszBase Scores
SeveritieszVulnerable ComponentsTags
Weaknesses; z, Report was saved to )opencsvwriterwriterowidr	   _format_datesdates_format_urlsurls_format_descriptionsdescriptionsjoinreference_urls_format_base_scoresbase_scores_format_severities
severitieslistvulnerable_componentstags
weaknessesprint)r   r   filer    vulns        m/home/kali/cveseeker/services/vulnerability_intelligence/reports/vulnerability_intelligence_report_service.pygenerate_csv_report:VulnerabilityIntelligenceReportService.generate_csv_report	   s#   (b7CtZZ%FOO  
 (GG:HHT:GG		R:OOPTPaPabIId112:NNtO_O_`:MMdoo^IId4#=#=>?IId499o.IIdoo.!  ( D, 	$XJ/0- DCs   E!F
Fc                    U  Vs/ s H  n[         R                  U5      PM     nn[         R                  U5      n[        USSS9 n[        R
                  " X4SSS9  S S S 5        [        SU 35        g s  snf ! , (       d  f       N"= f)Nr   r   r   F   )ensure_asciiindentr   )r	   _serialize_vulnerability_convert_sets_to_listsr   jsondumpr3   )r   r   r5   	json_datar4   s        r6   generate_json_report;VulnerabilityIntelligenceReportService.generate_json_report#   sy    gvwgv_c;TTUYZgv	w:QQR[\	(C'2dIIiE!D 3 	$XJ/0 x22s   A4A99
Br5   c                    / U R                   QnUR                  5         U R                  U R                   Vs/ s H  o"S   US   S.PM     snU R                   Vs/ s H  o3S   US   US   S.PM     snU R
                   Vs/ s H  oDS   US   US   S.PM     snU R                   Vs/ s H  oUS   US   US   S.PM     snUU R                   Vs/ s H  ofS   US   US   S	.PM     snU R                   Vs/ s H  owS   US   US
   S.PM     sn[        U R                  5      [        U R                  5      U R                  S.$ s  snf s  snf s  snf s  snf s  snf s  snf )Nsourcedate)rF   rG   url)rF   rG   rH   text)rF   rG   rI   score)rF   rG   rJ   severity)rF   rG   rK   )r"   r$   r&   titlesr(   r*   r,   r.   r0   r1   r2   )r*   sortr"   r$   r&   rL   r(   r,   r.   r/   r0   r1   r2   )r5   r*   rG   rH   titledescrJ   rK   s           r6   r>   ?VulnerabilityIntelligenceReportService._serialize_vulnerability,   s   /4../''SWS]S]^S]4hfFS]^bfbkbklbk[^Hs6{3u:Vbklnrnynyznyej/5=RWX^R_`nyzpt  qB  qB  C  qBhlXVVZ[aVbc  qB  C,uy  vF  vF  G  vFlqXfX]^eXfg  vF  G GK  GV  GV  W  GV  {Cx&8(6BR`his`tu  GV  W%)$*D*D%EO//
 	
^lz C G Ws#   EEE
,EE!=E&c                    [         R                  S5      nU  Vs/ s H  n[         R                  U5      PM     n nU R                  5         [        R
                  " 5       R                  S5      nUR                  XUS9n[        USSS9 nUR                  U5        S S S 5        [        SU 35        g s  snf ! , (       d  f       N"= f)Nz(views/vulnerability_report_template.htmlz%d/%m/%Y)r   keywordsrG   r   r   r:   r   )r	   _load_templater>   reverser   nowstrftimerenderr   writer3   )r   rR   r   templater5   rG   rendered_htmlr4   s           r6   generate_html_report;VulnerabilityIntelligenceReportService.generate_html_report>   s    9HHIstm|}m|eiAZZ[_`m|}!||~&&z2 aef(C'2dJJ}% 3 	$XJ/0 ~ 32s   B3
B88
Ctemplate_filec                     [        U SSS9 nUR                  5       nS S S 5        [        W5      $ ! , (       d  f       N= f)Nrr   r:   )r   readr   )r]   r4   template_contents      r6   rS   5VulnerabilityIntelligenceReportService._load_templateN   s6    -w74#yy{ 8()) 87s   0
>r$   c           
      h    SR                  U  Vs/ s H  nSUS    SUS    3PM     sn5      $ s  snf )Nr   (rF   ): rG   r)   )r$   rG   s     r6   r#   4VulnerabilityIntelligenceReportService._format_datesT   s9    yyEREDAd8n-Sf?ERSSRs   /r&   c                 t    SR                  U  Vs/ s H  nSUS    SUS    SUS    3PM     sn5      $ s  snf )Nr   rd   rF   /rG   re   rH   rf   )r&   rH   s     r6   r%   3VulnerabilityIntelligenceReportService._format_urlsX   sE    yyVZ[VZsAc(m_Ac&k]#c%j\JVZ[\\[   5r(   c                 t    SR                  U  Vs/ s H  nSUS    SUS    SUS    3PM     sn5      $ s  snf )Nr   rd   rF   ri   rG   re   rI   rf   )r(   rO   s     r6   r'   ;VulnerabilityIntelligenceReportService._format_descriptions\   sG    yy[gh[gSWAd8n-QtF|nCV~N[ghiihrk   r,   c                 t    SR                  U  Vs/ s H  nSUS    SUS    SUS    3PM     sn5      $ s  snf )Nr   rd   rF   ri   rG   re   rJ   rf   )r,   rJ   s     r6   r+   :VulnerabilityIntelligenceReportService._format_base_scores`   sH    yy`kl`kW\AeHo.afc%.AQR`klmmlrk   r.   c                 t    SR                  U  Vs/ s H  nSUS    SUS    SUS    3PM     sn5      $ s  snf )Nr   rd   rF   ri   rG   re   rK   rf   )r.   rK   s     r6   r-   9VulnerabilityIntelligenceReportService._format_severitiesd   sM    yyoyzoyckAhx018F3C2DCQ[H\G]^oyz{{zrk   datac                 n   [        U [        5      (       a9  U R                  5        VVs0 s H  u  pU[        R	                  U5      _M     snn$ [        U [
        5      (       a&  U  Vs/ s H  n[        R	                  U5      PM     sn$ [        U [        5      (       a  [        U 5      $ U $ s  snnf s  snf )N)
isinstancedictitemsr	   r?   r/   set)rr   keyvalueitems       r6   r?   =VulnerabilityIntelligenceReportService._convert_sets_to_listsh   s    dD!!ptpzpzp|}p|blbeC?VVW\]]p|}}d##dhidh\`:QQRVWdhiic"":K ~is   "B,(B2 )__name__
__module____qualname____firstlineno__staticmethodr   r   strr7   rC   ru   r>   r[   r   rS   r#   r%   r'   r+   r-   r   r?   __static_attributes__r|       r6   r	   r	      s   1T2K-L 1X[ 1`d 1 12 1d3L.M 1Y\ 1ae 1 1 
'@ 
T 
 
" 1d3L.M 1cf 1ko 1 1 *c *h * *
 TT$Z TC T T ]4: ]# ] ] j4: j# j j nd n n n |tDz |c | | S S  r   r	   )r   r@   typingr   r   !models.vulnerability_intelligencer   jinja2r   r   r	   r|   r   r6   <module>r      s#    
   G  i ir   