
    |*&i                     d    S SK r S SKJrJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJr   " S S5      rg)	    N)DictCallableOptional)load_github_poc_data)load_nist_data)load_cisa_kev_data)load_trickest_cve_datac                   |    \ rS rSrS\4S jrS rS\S\4S jr	S\S	\
4S
 jrSS\S\\   4S jjrS\4S jrS rSrg)CacheManager	   configc                 Z    Xl         0 U l        0 U l        / U l        U R	                  5         g N)r   
cache_datacache_eventsloading_threadsload_caches)selfr   s     4/home/kali/cveseeker/services/cache/cache_manager.py__init__CacheManager.__init__
   s*    !    c                   ^  T R                   R                  S0 5      nT R                   R                  S0 5      R                  S0 5      nSU 4S j4SU 4S j4SU 4S	 j4S
.nU 4S jU 4S jU 4S jU 4S jS.n0 nUR                  5        H  u  pgU(       d  M  Xc;   d  M  X6   u  pXU'   M!     UR                  5        H"  u  pU(       d  M  X;   d  M  X;  d  M  XJ   XZ'   M$     UR                  5        Hr  u  p[        R                  " 5       T R
                  U'   [        R                  " T R                  X4S9nT R                  R                  U5        UR                  5         Mt     g )N	providers
enrichmentsourcesnist_cachedc                  .   > [        T R                  5      $ r   r   r   r   s   r   <lambda>*CacheManager.load_caches.<locals>.<lambda>   s    ^DKK5Pr   cisa_kevc                  .   > [        T R                  5      $ r   r   r   r    s   r   r!   r"      s    /A$++/Nr   github_poc_cachedc                  .   > [        T R                  5      $ r   r   r   r    s   r   r!   r"      s    =QRVR]R]=^r   )NistCachedAPI
CISAKEVAPIGitHubCachedAPIc                  .   > [        T R                  5      $ r   r   r    s   r   r!   r"      s    >$++#>r   c                  .   > [        T R                  5      $ r   r%   r    s   r   r!   r"      s     24;; ?r   c                  .   > [        T R                  5      $ r   r(   r    s   r   r!   r"      s    )=dkk)Jr   c                  .   > [        T R                  5      $ r   )r	   r   r    s   r   r!   r"      s    2H2Ur   )r   r#   r&   trickest_cve_github_cached)targetargs)r   getitems	threadingEventr   Thread
_load_datar   appendstart)r   providers_configenrichment_configprovider_loadersenrichment_loadersloaders_to_useprovider_nameenabled	cache_keyloader_funcsource_namethreads   `           r   r   CacheManager.load_caches   sG   ;;??;; KKOOL"=AA)RP ,-PQ%'NO 35^_
 ??!J*U	
 &6&<&<&>"Mw=<)9)H&	,7y) '?
 %6$;$;$= Kw;<42D2QN/ %>
 '5&:&:&<"I+4??+<Di(%%T__IC[\F  ''/LLN	 '=r   namerC   c                     U" 5       n[         R                  " 5          X0R                  U'   U R                  U   R	                  5         S S S 5        g ! , (       d  f       g = fr   )r5   Lockr   r   set)r   rG   rC   datas       r   r8   CacheManager._load_data4   sB    }^^$(OOD!d#'') s   ,A
A plugin_namereturnc                 |    U R                   R                  U[        R                  " 5       5      R	                  5       $ r   )r   r3   r5   r6   is_setr   rM   s     r   is_data_readyCacheManager.is_data_ready:   s+      $$[)//2CDKKMMr   Ntimeoutc                 h    U R                   R                  U5      nU(       a  UR                  US9  g g )N)rT   )r   r3   wait)r   rM   rT   events       r   wait_for_dataCacheManager.wait_for_data=   s.    !!%%k2JJwJ' r   c                 8    U R                   R                  U5      $ r   )r   r3   rQ   s     r   get_dataCacheManager.get_dataB   s    "";//r   c                 J    U R                    H  nUR                  5         M     g r   )r   join)r   rE   s     r   ensure_all_data_loaded#CacheManager.ensure_all_data_loadedE   s    **FKKM +r   )r   r   r   r   r   )__name__
__module____qualname____firstlineno__r   r   r   strr   r8   boolrR   r   floatrX   r[   r_   __static_attributes__ r   r   r   r   	   se    t !F*s * *N N N( (x (
0C 0r   r   )r5   typingr   r   r   -services.cache.loaders.github_poc_data_loaderr   'services.cache.loaders.nist_data_loaderr   +services.cache.loaders.cisa_kev_data_loaderr   /services.cache.loaders.trickest_cve_data_loaderr	   r   ri   r   r   <module>ro      s$     + + N B J R> >r   