+
    	:izg  c                   s.   ^ RI Ht . ROt^ R	It^ R
IHtHt ^ R	It^ R	It^ R	I	t	^ R	I
t
^ R	It^ RI5 ^ R	It^ RIHt ^ RIHt ^ RI5 ^ RI5 ^ RI5 ^ RI5 ^ RI5 ^ RI5 ^ RI5 ^ RIHt R t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]]
P@                  4      t! ! R R]4      t" ! R R]4      t# ! R R]4      t$ ! R R]%]&]']P
                  4      t(]PR                  ! ](4        ! R R]P
                  4      t*]PR                  ! ]*4       R	# )i    )print_functionAnalyzeThreadAnalyzePluginReportReceiverTestPluginReportReceiverSETroubleshootDatabaseSETroubleshootDatabaseLocalLogfileAnalyzerN)GObjectGLib)*)
cmp_to_key)
get_config)validate_database_docc                 s    W8  W8  ,
          # N )xZy   &&;/usr/lib/python3.14/site-packages/setroubleshoot/analyze.py<lambda>r   4   s    AEae$    c                   sD   a  ] tR t^;t o R tR tR tR tR tR t	Rt
V tR# )	PluginStatisticsc                s|    VP                   V n        R V n        R V n        R V n        R V n        R V n        R V n        R # r   )analysis_idnameanalyze_start_timeanalyze_end_timeanalyze_elapsed_timereport_start_timereport_end_timereport_elapsed_timeselfpluginr   r   __init__ZPluginStatistics.__init__=   s?    &&	"& $$(!!%##' r   c                s   \        V P                  4      pV P                  f   V P                  : RV: R2# \        V P                  V P
                  ,
          4      p\        V P                  4      pV P                  : RV: RV: RV: R2# )Nz: z elapsedz
 elapsed, z analyze elapsed, z report elapsed)format_elapsed_timer   r   r   r   r   )r   r   Ztotal_elapsed_timer      &   r   __str__ZPluginStatistics.__str__F   sz    243L3LM##+'+yy2FGG!4T5I5IDLcLc5c!d"5d6N6N"O II13GI\^ ^r   c                :    \         P                   ! 4       V n        R # r   )timer   r      &r   analyze_startZPluginStatistics.analyze_startR   s    "&))+r   c                ~    \         P                   ! 4       V n        V P                  V P                  ,
          V n        R # r   )r&   r   r   r   r'   r(   r   analyze_endZPluginStatistics.analyze_endU   s)     $		$($9$9D<S<S$S!r   c                r%   r   )r&   r   r'   r(   r   report_startZPluginStatistics.report_startY   s    !%r   c                r*   r   )r&   r   r   r   r'   r(   r   
report_endZPluginStatistics.report_end\   s)    #yy{#'#7#7$:P:P#P r   )r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno__r!   r$   r)   r+   r,   r-   __static_attributes____classdictcell____classdict__   @r   r   r   ;   s,     (
^.T-Q Qr   r   c                   sD   a  ] tR t^ct o R tR tR tR tR tR t	Rt
V tR# )	AnalyzeStatisticsc                sX    Wn         R V n        . V n        R V n        R V n        R V n        R # r   )num_plugins
cur_plugincalled_plugins
start_timeend_timeelapsed_time)r   r8   r   r   r!   ZAnalyzeStatistics.__init__e   s-    &  r   c                s
   R pR p\        V P                  4      pV P                  e:   \        V P                  4      pV'       d   \        V P                  V,          4      pRW0P                  WV P                  4       3,          # )NzB%d/%d plugins in %s elapsed, avg plugin %s elapsed, plugins=[
%s
])lenr:   r=   r"   r8   called_plugins_to_string)r   r=   Zavg_plugin_timeZn_calledr#   r   r$   ZAnalyzeStatistics.__str__m   sy    t**+(.t/@/@AL"5d6G6G(6R"SU**L--/11 	1r   c                st    R P                  V P                   Uu. uF  p\        V4      NK  	  up4      # u upi )
)joinr:   str)r   r      & r   r?   Z*AnalyzeStatistics.called_plugins_to_stringz   s/    yy$*=*=>*=Q#a&*=>??>s   5c                r%   r   )r&   r;   r'   r(   r   startZAnalyzeStatistics.start}   s    ))+r   c                r*   r   )r&   r<   r;   r=   r'   r(   r   endZAnalyzeStatistics.end   s$    		 MMDOO;r   c                s    \        V4      V n        V P                  P                  V P                  4       V P                  P	                  4        R # r   )r   r9   r:   appendr)   r   r   r   
new_pluginZAnalyzeStatistics.new_plugin   s6    *62""4??3%%'r   )r:   r9   r=   r<   r8   r;   N)r.   r/   r0   r1   r!   r$   r?   rD   rE   rG   r2   r3   r4   r6   r   r7   r7   c   s)     !1@&<( (r   r7   c                   s2   a  ] tR t^t o R tR tR tRtV tR# )r   c                s|    R V n         \        4       V n        \        R\	        V P                  4      ,          4       R # )NzNumber of Plugins = %d)environmentZload_pluginsplugins	log_debugr>   r'   r(   r   r!   ZAnalyze.__init__   s*    #~*S->>?r   c           	     s    \        VP                  VP                  VP                  VP                  VP
                  VP                  R 7      pV# ))hostaccessscontexttcontexttclasstpath)ZSEFaultSignaturerK   rL   rM   rN   rO   rP   )r   avcsig   && r   get_signatureZAnalyze.get_signature   s=    ::\\\\::)) 
r   c           	     s   \        R V,          4       VP                  4        V P                  f   \        4       V n        VP                  P
                  e%   VP                  P
                  P                  4        \        R/ RVP                  bRVP                  bRVP                  bRVP                  bRVP                  bRVP                  bRVP                  bR	VP                  bR
VP                  bRVP                   bRVP"                  bRV P%                  V4      bRV P                  bRVP                  P
                  bR\'        VP                  P(                  4      bRVP+                  4       bRRb pV P,                   F  p VP/                  V4      pVe   VP0                  R8X  d   \        R4        R# VP0                  eE   VP0                  R8w  d4   VP0                  R8X  g   VP0                  R8X  d   VP0                  Vn        \3        V\4        4      '       d'   V F  pVP6                  P9                  V4       K   	  K  VP6                  P9                  V4       K  K  	  VPS                  V4       R#   \:         d   p\=        T\>        P@                  R7       \B        PB                  ! \B        PD                  RTPF                  ,          4       \>        PH                  ! 4       w  rp
\        RPK                  \L        PN                  ! T
4      4      4       T P,                  PQ                  T4        Rp?EK  Rp?ii ; i)zanalyze_avc() avc=%sNaudit_eventsourcespathrP   Zsrc_rpm_listZtgt_rpm_listrM   rN   rO   portrK   rR   rH   line_numberslast_seen_datelocal_idlevelZyellowZwhitez!plugin level white, not reportingZredZgreenfilezPlugin Exception %s r@   r   )*rJ   ZupdaterH   ZSEEnvironmentrU   rY   sortZSEFaultSignatureInforV   rW   rP   Zsrc_rpmsZtgt_rpmsrM   rN   rO   rX   rK   rT   	TimeStampZ	timestampgenerate_idrI   analyzer\   Z
isinstanceZlistZplugin_listrF   	ExceptionprintsysstderrsyslogLOG_ERRr   Zexc_inforA   	tracebackZ	format_tbremovereport_problem)r   rQ   report_receiversiginfor    ZreportZreZv1Zv2Zv3s   &&&        r   analyze_avcZAnalyze.analyze_avc   s   (3./

#,D??''3OO((--/& 

::
 ))
 ))	

 
 
 \\
 \\
 ::
 
 
 ""3'
 ((
 55
 %S__%>%>?
  %002!
" #
( llF,,%||w.!"EF
 ||/GMMU4J!<<50FLLG4K,2LLGM!&$//!'A#//66q9 "(  ++226:! & #8 	&&w/  ,acjj)fnn.DvGYGY.YZ"||~$))I$7$7$;<=##F++,s&   1JBJJMB2MM)rH   rI   N)	r.   r/   r0   r1   r!   rT   ro   r2   r3   r4   r6   r   r   r      s     @
;0 ;0r   c                   s0   a  ] tR t^t o RR ltR tRtV tR# )r   c                s    \         P                  P                  V 4       \        P                  V 4       Wn        W n        R # r   )	threadingThreadr!   r   queuetimeout)r   rr   rs      &&&r   r!   ZAnalyzeThread.__init__   s.    !!$'
r   c                s     V P                   P                  4       w  r\        R4       \        P                  ! ^ 4       V P                  W4       \        RP                  V P                  4      4       \        P                  ! V P                  4       K    \         dU   p\        P                  ! \        P                  RT,          4       \        \        P                  ! 4       4        Rp?LRp?ii ; i)Tz)AnalyzeThread.run(): Cancel pending alarmz!Exception during AVC analysis: %sNz,AnalyzeThread.run(): Set alarm timeout to {})rr   ZgetrJ   signalZalarmro   rc   rg   rh   Zsyslog_traceri   Z
format_excformatrs   )r   rQ   rl   rn   r#   r   runZAnalyzeThread.run   s    5'+zz~~'7$EFQ  6 DKKDLLYZLL&	  5fnn.QTU.UVY113445s   AB C6"A
C11C6)rr   rs   N)i
   )r.   r/   r0   r1   r!   rw   r2   r3   r4   r6   r   r   r      s     ' 'r   c                   s2   a  ] tR t^t o R tR tR tRtV tR# )r   c                    Wn         R # r   databaser   rz   r   r   r!   ZPluginReportReceiver.__init__   s     r   c                s    V P                   P                  VP                  4      pVP                  V4       V P                   P	                  V4       \        R 4       V#   \         dY   pTP                  \        8X  d>   \        R4       TP                  Tn
        T P                   P                  T4      p Rp?T# h Rp?ii ; i)zsignature found in databaseznot in database yetN)rz   lookup_signaturerR   Zupdate_mergemodify_siginforJ   ProgramErrorerrnoERR_NO_SIGNATURE_MATCHrZ   first_seen_dateadd_siginfo)r   rm   Zdatabase_siginforn      &&  r   rk   Z#PluginReportReceiver.report_problem   s    	#}}==gkkJ))'2MM(()9:34    	ww00/0*1*@*@'#'==#<#<W#E    	s   AA   C+AB>=B>>Cc                sJ    V P                   P                  P                  4       # r   )rz   sigsZgenerate_local_idr'   r(   r   ra   Z PluginReportReceiver.generate_id  s    }}!!3355r   ry   N)	r.   r/   r0   r1   r!   rk   ra   r2   r3   r4   r6   r   r   r      s     !  6 6r   c                   s8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )r   i  c                s.   < \         \        V `  V4       R # r   )Zsuperr   r!   )r   rz   	__class__s   &&r   r!   Z!TestPluginReportReceiver.__init__  s    &6x@r   c                sR    \        R VP                  P                  ,          4       R# )zAnalysis Result: %sN)rd   rR   r   r   rm   r   r   rk   Z'TestPluginReportReceiver.report_problem  s    #w{{'>'>?@r   r   )	r.   r/   r0   r1   r!   rk   r2   r3   Z__classcell__)r   r5   s   @@r   r   r     s     AA Ar   c                   s   a  ] tR tRt o RR ltR tR tR tR tRR lt	RR	 lt
R
 tR tR tR tR tR tR tR tR tRR ltR tR tR tRR ltR tR tRtV tR# )r   i  Nc                s@   Wn         R V n        \        W#V P                   4      V n        \        P
                  ! 4       V n        RV n        ^ V n        ^V n	        ^V n
        R V n        \        RR\        4      V n        R V n        \        RR4      pVe)   VP!                  4       pV'       d   \#        V4      V n        \%        RV P                  P&                  : RV P                  P(                  : RV P                  P                   : 24       V P+                  4        R # )NFrz   
max_alertsmax_alert_agezcreated new database: name=z, friendly_name=z, filepath=)filepathnotifyZSEDatabaseProperties
propertiesrp   ZLocklockfile_existsmodified_countauto_save_intervalauto_save_thresholdauto_save_timerr   Zintr   r   ZstripZparse_datetime_offsetrJ   r   friendly_nameload)r   r   r   r   r   s   &&&& r   r!   ZSETroubleshootDatabase.__init__  s     .tDMMRNN$	 "##& #$ZsC!":?$)//1M%:=%I"TXTcTcThThjnjyjy  kH  kH  JN  JY  JY  Jb  Jb  c  	d		r   c                s    V P                   '       g   V P                  '       g   R # V P                  P                  P	                  \        R 4      R7       V P                  '       Ed   \        4       pWP                  ,          p^ pV P                  P                   F  pVP                  V8  d    MV^,          pK!  	  V^ 8  Edt   \        RV P                  : RVP                  4       : 24       \        RV P                  P                  ^ ,          P                  P                  4       : RV P                  P                  V^,
          ,          P                  P                  4       : R24       \        RV P                  P                  V,          P                  P                  4       : RV P                  P                  R,          P                  P                  4       : R24       V P                  P                  R	V  Uu. uF  q3P                  NK  	  ppV F  pV P                  VR
R7       K  	  V P                   '       d   \        V P                  P                  4      V P                   ,
          pV^ 8  dn   V P                  P                  R	V  Uu. uF  q3P                  NK  	  pp\        RV\        V4      V3,          4       V F  pV P                  VR
R7       K  	  R	# R	# R	# u upi u upi )Fc                 sB    \        V P                  VP                  4      # r   )cmprZ   )ZaZbr   r   r   Z.SETroubleshootDatabase.prune.<locals>.<lambda>8  s    #aFVFVXYXhXhBir   )Zkeyzprune by age: max_alert_age=z min_time_to_survive=zprune by age: pruning [z - Z]zprune by age: keeping [NT)prunez*prune first %d alerts, len(sigs=%d sigs=%si)r   r   r   signature_listr_   r   r`   rZ   rJ   rv   rR   delete_signaturer>   )r   Zmin_time_to_surviveZkeeprm   r   rR   s   &     r   r   ZSETroubleshootDatabase.prune3  s   4#5#5#5 			  %%*5i*j%k"++#5#55D9933)),??	 4
 axUYUgUgi|  jD  jD  jF  G  Htyy?W?WXY?Z?i?i?p?p?rtxt}t}  uM  uM  NR  UV  NV  uW  uf  uf  um  um  uo  p  qtyy?W?WX\?]?l?l?s?s?uw{  xA  xA  xP  xP  QS  xT  xc  xc  xj  xj  xl  m  n37993K3KET3RS3R3RSC))#T):   ???tyy//04??BDax37993K3KET3RS3R3RSF$PSTXPY[_I``aC))#T):    	 T Ts   
K6 K;c                rx   r   )r   r   r   r   r   
set_notifyZ!SETroubleshootDatabase.set_notifyT  s    r   c                s    V P                   P                   FC  pVP                  VP                  8  g   K   VP                  pVP                  Vn        W!n        KE  	  R # r   )r   r   rZ   r   )r   rm   Ztmps   &  r   validateZSETroubleshootDatabase.validateW  sI    yy//G%%(?(??,,)0)@)@&*-' 0r   c                s   \        4       V n        V P                  f   R # \        P                  P                  V P                  4      '       dk   \        P                  ! V P                  4      pV\        ,          ^ 8  d9   V P                  P                  V P                  R\        4      '       d   RV n
        V P                  4        V P                  4        R # )Nr   T)SEFaultSignatureSetr   r   ospathexistsstatST_SIZEZread_xml_filer   r   r   r   )r   	stat_inforC   r   r   ZSETroubleshootDatabase.load_  s    ')	== 77>>$--((.I!A%99**4==&BWXX'+D$

r   c                sz   V P                   f   R # \        RV P                   : RV P                  : 24       V'       g   V P                  4        V P                  P                  RV P                   4       RV n        ^ V n        V P                  e*   \        P                  ! V P                  4       R V n        R # R # )Nzwriting database () modified_count=r   T)
r   rJ   r   r   r   Z	write_xmlr   r   r	   Zsource_remover   r   r   r   saveZSETroubleshootDatabase.saven  s    == t}}dNaNabcJJL		FDMM2+t334#'D  ,r   c                sf   V ;P                   ^,          un         V P                  f   R# V P                   V P                  8  g   V P                  '       g   V P	                  V4       R# V P
                  f:   \        P                  ! V P                  R,          V P                  4      V n        R# R# )i   Ni  )
r   r   r   r   r   r   r	   Ztimeout_addr   auto_save_callbackr   r   r   mark_modifiedZ$SETroubleshootDatabase.mark_modified}  s    q == !9!99AQAQAQIIe!!)  !8!84!?!%!8!8:   *r   c                st    \        R V P                  : RV P                  : 24       V P                  4        R# )zauto_save database (r   F)rJ   r   r   r   r'   r(   r   r   Z)SETroubleshootDatabase.auto_save_callback  s&    PTPcPcde		r   c                s    V P                   f   R # \        P                  P                  V P                   4      '       d?   \	        RV P                   ,          4       \        P
                  ! V P                   4       R # R # )Nzdeleting database (%s))r   r   r   r   rJ   rj   r'   r(   r   rj   ZSETroubleshootDatabase.remove  sM    == 77>>$--((.>?IIdmm$ )r   c                :    V P                   P                  4        R # r   )r   acquirer'   r(   r   r   ZSETroubleshootDatabase.acquire      		r   c                r   r   )r   releaser'   r(   r   r   ZSETroubleshootDatabase.release  r   r   c                s   R pV P                   P                  V4      p\        R\        V4      RP	                  V Uu. uF  pRVP
                  ,          NK  	  up4      3,          4       \        V4      ^ 8X  d   \        \        4      h\        V4      ^8  dN   \        R\        V4      RP	                  V Uu. uF  pRVP
                  ,          NK  	  up4      3,          4       V^ ,          P                  pV# u upi u upi )Nz1lookup_signature: found %d matches with scores %s,z%.2f)	r   Zmatch_signaturesrJ   r>   rA   Zscorer~   r   rm   )r   rR   rm   Zmatchesr      &&   r   r|   Z'SETroubleshootDatabase.lookup_signature  s2   )),,S1EWWZW_W_  |C  aD  |Cvwagjkjqjqaqaq  |C  aD  XE  IF  F  	Gw<1566w<!ISQX\[^[c[c  @G  eH  @Gz{eknonunueueu  @G  eH  \I  MJ  J  K!*$$ aD eHs   C<9Dc                s    V P                   P                  V4      pVf*   \        RV,          4       \        \        RV,          4      hV# )Nzlookup_local_id: %s not foundzid (%s) not found)r   lookup_local_idrJ   r~   ZERR_SIGNATURE_ID_NOT_FOUND)r   r[   rm   rS   r   r   Z&SETroubleshootDatabase.lookup_local_id  sC    ))++H5?5@A9;NQY;YZZr   c                s    V P                   P                  V4      pV P                  '       d'   V P                  P                  R VP                  4       V P                  4        V# )Zadd)r   r   r   signatures_updatedr[   r   r   r   r   r   Z"SETroubleshootDatabase.add_siginfo  sJ    ))''0;;;KK**5'2B2BCr   c                s    V P                   # r   )r   r'   r(   r   get_propertiesZ%SETroubleshootDatabase.get_properties  s    r   c                s    \        R V,          4       VR8X  d   V P                  # \        4       pV P                  V4      pVP	                  V4       V# )zquery_alerts: criteria=%sr
   )rJ   r   r   r   r   )r   Zcriteriar   rm   r   r   query_alertsZ#SETroubleshootDatabase.query_alerts  sN    -89s?99 #$&&x0!r   c                s   \        R V,          4        V P                  V4      pT P
                  P                  T4       T P                  '       d'   T P                  P                  RTP                  4       T P                  T4       R#   \         d-   pTP                  \        8X  d   \        R4        Rp?R# h Rp?ii ; i)zdelete_signature: sig=%sSignature not found!NZdelete)rJ   r|   r~   r   r   r   Zremove_siginfor   r   r[   r   )r   rR   r   rm   rn   s   &&&  r   r   Z'SETroubleshootDatabase.delete_signature  s    ,s23	++C0G 			  );;;KK**8W5E5EF5!  	ww0001	s   B C B=<B==Cc                s    V P                   '       d'   V P                   P                  R VP                  4       V P                  4        R# )ZmodifyN)r   r   r[   r   r   r   r   r}   Z%SETroubleshootDatabase.modify_siginfo  s1    ;;;KK**8W5E5EFr   c                s    \        R V: RV: 24        V P                  V4      pTP                  T4      pT#   \         d-   pTP                  \        8X  d   \        R4        Rp?R# h Rp?ii ; i)z evaluate_alert_filter: username=z sig=r   NZignore)rJ   r|   r~   r   r   Zevaluate_filter_for_user)r   rR   usernamerm   rn   Zactions   &&&   r   evaluate_alert_filterZ,SETroubleshootDatabase.evaluate_alert_filter  si    3OP	++C0G 11(;  	ww0001	s   9 A0 A+*A++A0c           
     s:   \        R V: RV: RV: RV: 24        V P                  V4      pTP                  T4      pTP                  Y44       T P                  T4       R#   \         d-   pTP                  \        8X  d   \        R4        Rp?R# h Rp?ii ; i)zset_user_data: username= item=z data= sig=
r   N)rJ   r|   r~   r   r   Zget_user_dataZupdate_itemr}   )r   rR   r   itemdatarm   rn   Z	user_datas   &&&&&   r   set_user_dataZ$SETroubleshootDatabase.set_user_data  s    8UY[_adef	++C0G ))(3	d)G$  	ww0001	s   A# #B. BBBc                s   \        R V: RV: RV: 24        V P                  V4      pTP                  Y#T4       T P                  T4       R#   \         d-   pTP                  \        8X  d   \        R4        Rp?R# h Rp?ii ; i)zset_filter: username=z filter_type=r   r   N)rJ   r|   r~   r   r   Zupdate_user_filterr}   )r   rR   r   Zfilter_typer   rm   rn   s   &&&&&  r   
set_filterZ!SETroubleshootDatabase.set_filter  sv    xQ\^abc	++C0G 	""8$?G$  	ww0001	s   A B B BBc                sz    V P                   P                  P                  V4      V n        V P	                  4        R # r   )r   usersadd_useruserr   r   r   r   r   r   ZSETroubleshootDatabase.add_user  s(    IIOO,,X6	r   c                sL    V P                   P                  P                  V4      # r   )r   r   get_userr   r   r   r   ZSETroubleshootDatabase.get_user  s    yy''11r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )F) )r.   r/   r0   r1   r!   r   r   r   r   r   r   r   rj   r   r   r|   r   r   r   r   r   r}   r   r   r   r   r   r2   r3   r4   r6   r   r   r     s~     ,;B.(
:
%

""
% %2 2r   c                   s  a  ] tR tRt o R]P
                  P                  R]P                  ]P                  33R]P
                  P                  R]P                  ]P                  ]P                  33/t
R tR tR tR tR	tV tR# )
r   i  r   Nzasync-errorc                s    \         P                   P                  V 4       \        P                  V 4       Wn        V P                  P	                  V 4       R # r   )r   r!   	RpcManagerz   r   r{   r   r   r!   Z$SETroubleshootDatabaseLocal.__init__  s9      &4    &r   c                s<    V P                   P                  V4       R # r   )rz   r   r   r   r   r   Z&SETroubleshootDatabaseLocal.set_notify$  s      (r   c                s   \        V P                  P                  : R VP                  : RRP	                  V Uu. uF  p\        V4      NK  	  up4      : RV: 24       V P                  V,          p\        V P                  VP                  R4      pVf7   \        \        RVP                  : RV P                  P                  : 24      h V! V!  Vn        RVn        VP                  e   VP                  .Vn        TP                  e$   \        P                   ! T P"                  T4       R# R# u upi   \         d/   pTP                  TP                  .Tn        RTn         Rp?LlRp?ii ; i)	z emit Z(r   z) id=Nzmethod z not found in base class of Zmethod_returnZerror_return)rJ   r   r.   ZmethodrA   rB   Zasync_rpc_cacheZgetattrrz   r~   ZERR_METHOD_NOT_FOUNDZreturn_argsZreturn_typer   strerrorr   idle_addZprocess_async_return)	r   Zrpc_idtypeZrpc_defZargsZargZ	async_rpcZfuncrn   s	   &&&&*    r   emit_rpcZ$SETroubleshootDatabaseLocal.emit_rpc'  s@   DNN,C,CW^^UXU]U]sw^xswlo_bcf_gsw^xUy  |B  C  	D((0	t}}gnnd;<3LSNN\`\j\j\s\stv v	3$($KI!$3I!$$0)2)>)>(?	%
   ,T66	B - _y  	3%&WWajj$9I!$2I!!	3s   D52D: :E3$E..E3c                sP    \        R V: RV: 24       V P                  RW4       R# )z*signatures_updated() database local: type=r   r   N)rJ   emit)r   r   r   rt   r   r   Z.SETroubleshootDatabaseLocal.signatures_updated:  s    DRVWX		&3r   ry   )r.   r/   r0   r1   r   SignalFlagsRUN_LASTTYPE_PYOBJECTZTYPE_STRINGZTYPE_INT__gsignals__r!   r   r   r   r2   r3   r4   r6   r   r   r     s      					%	%tg.C.CWEZEZ-[\				%	%tg.A.A7CSCSU\UhUh-ij	L')C&4 4r   c                   s   a  ] tR tRt o R]P
                  P                  R]P                  33R]P
                  P                  R]P                  33/t	RR lt
RR ltR tR tR	 tR
 tR tRtV tR# )r   iC  progressNstate-changedc                s*   \         P                   P                  V 4       \        V P                  P                  : R V: R24       Wn        RV n        RV n        ^V n        RV n	        RV n
        RV n        RV n        RV n        RV n        RV n        R# )z
.__init__()N)r   r!   rJ   r   r.   logfile_pathr^   fileno	read_sizerecord_readerrecord_receiveranalyzerrl   idle_proc_idr   r   )r   r   r   r   r!   ZLogfileAnalyzer.__init__K  s{      &t~~'>'>MN(	!## 
r   c                s   Ve   Wn         \        V P                  P                  : RV P                   : R24        \        P
                  ! V P                   4      pV\        ,          V n        \        V P                   4      V n	        V P                  P                  4       V n
        ^ T n        ^ T n        ^ T n        RT n        RT n        T P+                  RT P&                  4       \        P,                  P/                  T P                   4      pR\        P,                  P1                  T4      ^ ,          ,          T n        \5        R Y@P2                  R7      T n        \9        \8        P:                  4      T n        \?        4       T n         \C        4       T n"        \G        R	R
\H        4      '       g   \K        T P6                  4      T n&        R# \O        T P6                  4      T n&        R#   \         dt   p\        P                  ! \        P                  T P                  P                  : RTP                  : 24       TP                  T n        TP                  T n        ThR p?ii ; i)Nz.open(r   z	.open(): g        Fr   zfile: %s)r   Ztestrb   T)(r   rJ   r   r.   r   r   r   	file_sizeopenr^   r   EnvironmentErrorrg   rh   r   r   n_bytes_read
line_countrecord_countr   	cancelledr   r   ZbasenameZsplitextr   r   rz   ZAuditRecordReaderZTEXT_FORMATr   ZAuditRecordReceiverr   r   r   r   Zboolr   rl   r   )r   r   r   rn   Zlogfile_basenamer   r   r   ZLogfileAnalyzer.open_  s   # ,4>>#:#:D<M<MNO		 1 12I&w/DNT../DI))**,DK 		*dmm,77++D,=,=>'277+;+;<L+Ma+PQ.t5EUgUgh./@/L/LM24	&)T22#7#FD   $<DMM#JD 3   	MM&..T^^=T=TVWV`V`*abDJJJDMG		s   A+G) )I'4A.I""I'c                s   a \        V P                  P                  : R V P                  : R24       V P	                  4       o\
        P                  ! V3R l4      V n        R# )z.run(r   c                  s   < \        S 4      # r   )Znext)task_generators   r   r   Z%LogfileAnalyzer.run.<locals>.<lambda>  s
    $~2Fr   T)rJ   r   r.   r^   taskr	   r   r   )r   r   s   &@r   rw   ZLogfileAnalyzer.run  s>    $.."9"9499EF MM*FGr   c                s6   V P                   e:   \        P                  ! V P                  V P                  4      pR V n         R V n        V P
                  V P                  8  dQ   ^ R IpRV P
                  V P                  V P                  3,          p\        V4       VP                  V n        W0n        V P                  e3   V P                  P                  4        F  pV P                  V4       K  	  V P                  '       g   V P!                  RR4       R # R # )NzFfailed to read complete file, %d bytes read out of total %d bytes (%s)r   g      ?)r^   r   readr   r   r   r   r   r   rJ   ZEIOr   r   closeavc_event_handlerr   r   )r   new_dataZErrnor   rU   s   &    r   r   ZLogfileAnalyzer.close  s    99 wwt{{DNN;HDIDKt~~-!_))4>>4;L;LMNHhDJ$M+#3399;&&{3  < ~~~IIj#& r   c              #  s@  "   V P                  R R4       V P                  '       EdN    \        P                  ! V P                  V P                  4      P                  R4      pVR8X  d-   \        RV P                  ,          4       V P                  4        T ;P                   \#        X4      ,          un        T P$                  ^ 8  d5   \'        T P                   4      \'        T P$                  4      ,          T n        T P                  R
T P(                  4       T P*                  P-                  T4       F6  w  r4rVpT P/                  Y4YVT4       Rx  T P0                  '       g   K2  Rx  K8  	  Rx  EK`  V P                  R R4       Rx  R#   \         dT   pTP                  T n
        TP                  T n        T P                  4        T P                  R R4       Rx   Rp?ELPRp?i\         d(   p\        RT\        P                  R	7        Rp?ELRp?ii ; i5i)r   Zrunningzutf-8r   z	EOF on %sZstoppedFNr@   r]   r   T)r   r   r   r   r   ZdecoderJ   r   r   r   r   r   
ValueErrorrd   re   rf   r   r>   r   Zfloatr   r   feednew_audit_record_handlerr   )r   r   rn   record_typeevent_id	body_textfieldsline_numbers   &       r   r   ZLogfileAnalyzer.task  s    		/9-kkk0774;;?FFwOr>kD,=,==>JJL X.~~! %d&7&7 85;P PIIj$--0KOK]K]KbKbckKlG	;--kYXcd
>>>K	 Lm
 J		/9-+ $ WW
 !



		/95 0dACJJ//0sO   %HA-F CH&'HHAG& H&H3H4HHHHc                s*   \        R V,          4       VP                  4       '       dk   VP                  4       '       gS   VP                  4       ^ 8  d<   \	        V4      pV F(  pV P
                  P                  W0P                  4       K*  	  R# R# R# R# )z"avc_event_handler() audit_event=%sN)rJ   Zis_avcZ
is_grantedZnum_recordsZcompute_avcsr   ro   rl   )r   rU   ZavcsrQ   r   r   r   Z!LogfileAnalyzer.avc_event_handler  sw    6DE(>(>(@(@[E\E\E^abEb,D))#/C/CD  Fc(@r   c                sP   \        RV: RV: RV: 24       V ;P                  ^,          un        \        WW4V4      pV P                  P	                  V4       F  p V P                  V4       K  	  R#   \         d'   p\        T\        P                  R7        Rp?KG  Rp?ii ; i)z"called to enter a new audit recordz'new_audit_record_handler() record_type=z
 event_id=z body_text=r]   N)
rJ   r   ZAuditRecordr   r   r   r   rd   re   rf   )	r   r   r   r   r   r   Zaudit_recordrU   rn   s	   &&&&&&   r   r   Z(LogfileAnalyzer.new_audit_record_handler  s    Zegoqz{|Q";)[Y//44\BK*&&{3 C  *acjj))*s   A44B%?B  B%)r   r   rz   r   r^   r   r   r   r   r   r   r   r   r   r   r   r   rl   r   r   )r.   r/   r0   r1   r   r   r   Z
TYPE_FLOATr   r   r!   r   rw   r   r   r   r   r2   r3   r4   r6   r   r   r   C  sz     				%	%tg.@.@-BC				%	%tg.C.C-EF	L("H'.>E* *r   )r   r   r   r   r   r   r   )+Z
__future__r    Z__all__rg   Zgi.repositoryr   r	   r   ru   r&   rp   ri   r   re   Z	functoolsr   Zsetroubleshoot.configr   Zsetroubleshoot.avc_auditZsetroubleshoot.errcodeZsetroubleshoot.rpcZsetroubleshoot.rpc_interfacesZsetroubleshoot.signatureZsetroubleshoot.utilZsetroubleshoot.audit_dataZsetroubleshoot.xml_serializer   r   Zobjectr   r7   r   rq   r   r   r   r   r   ZSETroubleshootDatabaseInterfaceZ%SETroubleshootDatabaseNotifyInterfacer   Ztype_registerr   r   r   r   <module>r      s  ( &  ' 	      
   , & $   + & ! ' >$#Qv #QP$( $(RL0f L0b'GY-- '466 62Av Ar2V r2n*4)"A"G")//*4X   1 2
N*goo N*b   o &r   