h/ fdZddlmZddlZddlmZddlmZddlm Z m Z m Z m Z m Z ddlmZddlmZdd lmZed d Gd d Zed d GddZed d GddZd dZd dZd!dZd!dZd dZd"dZdS)#u  This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program.  If not, see . Copyright © 2019 Cloud Linux Software Inc. This software is also available under ImunifyAV commercial license, see ) annotationsN) dataclass)Path)Any CollectionIterableSetTuple) hosting_panel) to_thread) CloudwaysUserT)eqfrozenc$eZdZUded<ded<dS)MalwareDatabaseHitErrorintcodestrmessageN__name__ __module__ __qualname____annotations__T/opt/imunify360/venv/lib/python3.11/site-packages/imav/malwarelib/scan/mds/report.pyrr"s" IIILLLLLrrceZdZUded<ded<ded<ded<ded<ded<ded <d ed <ded <ded <dZded<dZded<dZded<dZded<dZe d dZ e d!dZ e d dZ e d"dZ dS)#MalwareDatabaseHitInforscan_idpath signatureapp_namedb_hostdb_namerdb_portz#Tuple[MalwareDatabaseHitError, ...]errorsowneruserNz str | None table_name table_fieldz int | None table_row_infsnippetcN|j|j|j|j|j|jfSN)r!r#r$r&r%r")selfs r _get_db_infoz#MalwareDatabaseHitInfo._get_db_info9s* I M L L L N   rreturn Iterable[MalwareDatabaseHitInfo]c #K|dg|dgz}|d}|d}tjt||||}t |||d|d|dt d|d D|d || } |r0|D]+} |di| | d | d ddV,dS|di| dddVdS)Ndetailed_reportsdetailed_urls_reportsr! app_owner_uidapp database_host database_namec3NK|] }t|d|dV!dSrrNr.0errs r z5MalwareDatabaseHitInfo.from_report..UsH(F S^DDr error_list database_port r r!r#r$r%r'r&r(r)sigidsnpt)r"r-zBAD URLr)getr override_uid_by_pathrdicttuple) clsreportusers_from_panelpw_allr r5r!r(r)hit_info_paramsdetailed_reports r from_reportz"MalwareDatabaseHitInfo.from_reportCs"::&8"== #RA A  6NO,!6 JJ/  +/E]?+?+!,/?+ + + +   #3  c%-g6+//;;  #!#     rdatarJc +$K|dgD]v}|dgD]]}|dgD]D}|d |d|d|dt||dd|VE^wdS) Ntablesfieldsrow_idsrEtablefieldrF)r"r*r+r,r-r)rHr)rLrSkwargsrXrYrow_ids r_get_hits_from_reportz,MalwareDatabaseHitInfo._get_hits_from_reportksXXh++  E8R00  #ii 266F#"&w-#(>$)'N&)&kk $ 0 0  !    rc #K|d}|d}tjt||||}|||d|d|dtd|dD|d||d }|d g|d gz} | D]} |j| fi|Ed{VdS) Nr!r7r8r9r:c3NK|] }t|d|dV!dSr<r=r>s rrAz?MalwareDatabaseHitInfo.iter_from_scan_report..sH(F S^DDrrBrCrDr5r6)r rIrrKrHr\) rLrMrNrOr r!r(r)rZr5rQs riter_from_scan_reportz,MalwareDatabaseHitInfo.iter_from_scan_report{s( 6NO,!6 JJ/   u o.o.!,/o.   "::&8"== #RA A   0 L LO0s0KKFKK K K K K K K K K L Lrhitsset[MalwareDatabaseHitInfo]ci}|D]}|}||vr|||< t|Sr/)r1setvalues)rLr`db_hitshitdb_infos rget_hits_per_dbz&MalwareDatabaseHitInfo.get_hits_per_dbsW ' 'C&&((Gg%%#& 7>>##$$$r)r2r3)rSrJr2r3)r`r3r2ra)rrrrr*r+r,r-r1 classmethodrRr\r_rhrrrrr(sKLLL IIINNNMMMLLLLLLLLL////JJJ III!J!!!!"K"""" $M$$$$G   %%%[%N   [ LLL[L>%%%[%%%rrcBeZdZUded<ded<ded<ded<ded<dS) MalwareDatabaseScanReportzSet[MalwareDatabaseHitInfo]r`rstarted completedtotal_resourcestotal_maliciousNrrrrrkrksH%%%%LLLNNNrrkreportsIterable[dict]r2rcRttd|DdS)Nc38K|]}|d|dzVdS) start_time running_timeNrr?rMs rrAz'_last_completed_time..sE  |$vn'==      rrdefault)rmaxrps r_last_completed_timer{sG    %         rcRttd|DdS)Nc3&K|] }|dV dS)rtNrrvs rrAz&_first_started_time..s'??VF<(??????rrrw)rminrzs r_first_started_timers, s??w???KKK L LLrc>ttd|S)Nc|dduS)Nr8rrs rz_found..s5!5riterfilterrzs r_foundrs 55w?? @ @@rc>ttd|S)Nc|ddkS)N#count_of_detected_malicious_entriesrrrs rrz_malicious..sa=>Brrrzs r _maliciousrs*  B B     rc4td|DS)Nc3BK|]}|ddVdS) rows_countrN)rHrvs rrAz&_total_scanned_rows..s0AAvvzz,**AAAAAAr)sumrzs r_total_scanned_rowsrs AAAAA A AArhit_report_listCollection[dict]r rc Kttjd{V}t t jd{V}t}tt|D]/}|tt ||||z}0t|}t|}t|}t|} t||||| Sr/)rcr HostingPanel get_usersr pwdgetpwallrrrr_rr{rlenrk) rr rNrOr`rMrlrmrnros r scan_reportrs !;!=!=!G!G!I!IIIIIIIJJS\** * * * * * *F 55DVO4455    " 8 8(&'      "/22G$_55I)/::O$iiO $ gy/?  r)rprqr2r)rprqr2rq)rrr rr2rk)__doc__ __future__rr dataclassesrpathlibrtypingrrrr r defence360agent.subsys.panelsr defence360agent.utils.threadsr imav.malwarelib.utils.cloudwaysr rrrkr{rrrrrrrrrs*#""""" !!!!!!88888888888888777777333333999999 d4   !   d4   {%{%{%{%{%{%{%! {%| d4   !     MMMMAAAABBBBr