)!@\dZddlZddlZddlmZddlmZmZmZddl m Z ddl m Z m Z mZddlmZddlmZdd lmZdd lmZmZdd lmZdd lmZmZdd lmZddl m!Z!ddl"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)ee*Z+Gdde e Z,GddZ-Gdde,Z.dS)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 N) getLogger)AnyOptionalUnion) MessageType) MessageSink MessageSourceexpect)TheSink)Scope)MalwareDatabaseScan)MalwareScanResourceTypeMalwareScanType) MalwareScan)ScanAlreadyCompleteError ScanInfoErrorAiBolitDetachedScan) DetachedScan)MDSDetachedScan)QueueSupervisorSync)aggregate_result)fill_results_ownercjeZdZUejjZejZ dZ e e d<iZ eeeeeffe d<dZdZeejddZd Zd Zed efd Zed eeeefded efdZ eej!dZ"e#dZ$dZ%dS)DetachedScanPluginNsink results_cachec&K||_||_dSN)loopr)selfr rs Z/opt/imunify360/venv/lib/python3.11/site-packages/imav/malwarelib/plugins/detached_scan.py create_sourcez DetachedScanPlugin.create_source@s  c KdSr)r!r s r" create_sinkzDetachedScanPlugin.create_sinkDs  r$T) async_lockcKt|}|js(||d{V}||dd<|S|jr||d{VS||d{VS)Nsummarytotal_malicious)MalwareScanMessageInfo is_detached_count_total_malicious is_summary_handle_summary_handle_results)r!message message_typer+s r" complete_scanz DetachedScanPlugin.complete_scanGs-g66 ' 7$($?$?$H$HHHHHHHO4CGI 0 1N  $ 7--g66666666 6))'222222222r$cK|dd}||jvrtj|dd<|j||d<||d{V}||dd<tj|dd}|r/|j|dd<tj||S)Nr*scanid completedresultsr+r6 scan_args) rtimepopr.rqueuefindargsremove)r!r2scan_idr+ queued_scans r"r0z"DetachedScanPlugin._handle_summaryUs)$X. d( ( (.2ikkGI { +!%!3!7!7!@!@GI $($?$?$H$HHHHHHHO4CGI 0 1-388y)(39K >2=2B ";/#)00===r$cK||d{V}t|}|d}tdtj|d}|j|rI|jd|d<|jd|d<|j|d<tj || ds| d r!d |d <| d{V|S|dd}|d |j |<t|j }|d krtd|dS|j}|j|d<|j|d<|j|d<t%j|d<| d |j|d<|j|d<| d d|d <||d<||d{V}||dd <|rI|jd|d<|jd|d<|j|d<tj || d{V|S)Nr*z Scan stoppedr6r9 file_patternsexclude_patternsr:patherrorrr+r8zMalwareScan cache size is %dstartedr7 total_filestype)rr,loggerinforr=r>summary_from_dbr?r@get_recheck_scan_queuerlenrGr6rFrIr;total_resourcesrKr.) r!r2r3r*rBrA cache_sizescanr+s r"r1z"DetachedScanPlugin._handle_resultses--g66666666-g66 )$ N###)/44GH+6+;O+L(.9.>&/*+(3'7 $#)00==={{6"" gkk'&:&: -.)*..000000000i(2G*1)*z=DetachedScanPlugin._count_total_malicious..s>   AqV9Q< -66666r$r8)rQitemsr2s r"r.z)DetachedScanPlugin._count_total_malicioussE  #I.4466      r$ resource_typerAc t|Srrr`rAs r"_get_detached_scanz%DetachedScanPlugin._get_detached_scans #7+++r$c,K|d}|d}|||} |d{V}n#t$rO}td||Yd}~t jt|j ddSd}~wt$rZ}t d|j j ||Yd}~t jt|j ddSd}~wwxYw t jt|j dn-#t jt|j dwxYw|j|d{VdS)NrAr`z??q   ;(7(:%$$r$N) ryrzr{__doc__rpropertyr-r/rNr&r$r"r,r,s~999   X //X/ % %X % % %r$r,ceZdZejZedeee e fde de fdZ e ejdefdZdS)DetachedScanPluginIm360r`rArUcx|*t|tjurt|St|Sr)rDBrrrbs r"rcz*DetachedScanPluginIm360._get_detached_scansC  $ #M 2 2&) * *#7++ +"7+++r$r2cKtj|d}|r;tj||d{VdSdS)NrAr9)rr=r>r@rP)r!r2rBs r"complete_scan_dbz(DetachedScanPluginIm360.complete_scan_dbsw)/44GIrsX* '''''''''':::::: 766666''''''777777BAAAAA766666======JJJJJJ======>>>>>> 8  VOVOVOVOVOmVOVOVOr"%"%"%"%"%"%"%"%J-----0-----r$