K6h) dZddlmZddlmZmZmZddlmZm Z m Z m Z m Z m Z mZmZmZmZmZddlmZddlmZmZGdde ZGd d e ZGd d e ZGd de ZGddee eZGddee eeZGddee ZGdde ZGdde Z Gdde Z!Gdde Z"Gdde Z#Gdd e Z$Gd!d"e Z%Gd#d$e eZ&Gd%d&e eZ'Gd'd(e eZ(Gd)d*e Z)Gd+d,ee eeZ*Gd-d.eZ+Gd/d0e Z,Gd1d2e Z-Gd3d4e Z.Gd5d6e Z/Gd7d8e Z0Gd9d:e Z1Gd;de Z3Gd?d@ee eZ4GdAdBeZ5GdCdDe Z6GdEdFe Z7GdGdHee eZ8GdIdJeZ9GdKdLee eZ:GdMdNeZ;GdOdPe eZ<GdQdRe Z=GdSdTe eZ>dUe e6eeeeeee'e e f DZ?dVS)Wu  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 )deepcopy)ListOptionalSet) AccumulatableAck FilesUpdatedLockableMessageNoopReceived Reportable ReportTargetShortenReprListMixin Splittable)QueuedScanState)MalwareDatabaseHitInfoMalwareDatabaseScanReportceZdZdZdZdS)MalwareScanTaskz/ Creates task to scan file for malware MALWARE_SCAN_TASKN__name__ __module__ __qualname____doc__DEFAULT_METHODL/opt/imunify360/venv/lib/python3.11/site-packages/imav/contracts/messages.pyrr-s)NNNrrceZdZdZdS)MalwareScanCompleteMALWARE_SCAN_COMPLETENrrrrrrr r"r"5s,NNNrr"ceZdZdZdS)MalwareCleanCompleteMALWARE_CLEAN_COMPLETENr$rrr r&r&9s-NNNrr&ceZdZdZdS)MalwareRestoreCompleteMALWARE_RESTORE_COMPLETENr$rrr r)r)=/NNNrr)c"eZdZdZfdZxZS)MalwareScanSummaryMALWARE_SCAN_SUMMARYcVd|D}tj|d|i|dS)Nc"g|] }d|di S)summaryr.0items r z/MalwareScanSummary.__init__..Fs!@@@$)T)_-@@@ritemssuper__init__selfr6argskwargs __class__s r r9zMalwareScanSummary.__init__Ds=@@%@@@$6e6v66666r)rrrrr9 __classcell__r>s@r r-r-As=+N777777777rr-c.eZdZdZdZdZdZfdZxZS)MalwareScanResultMALWARE_SCAN_RESULTresultscVd|D}tj|d|i|dS)Nchg|]/}d|dD|dd0S)c"i|] \}}|dv || S)>r<typescanidr)r3keyvalues r z9MalwareScanResult.__init__...Vs4"U888888rr1rF)r1rF)r6r2s r r5z.MalwareScanResult.__init__..Ssd    &*9o&;&;&=&=  ?      rr6r7r:s r r9zMalwareScanResult.__init__RsL        $6e6v66666r) rrrr LIST_SIZE BATCH_SIZE BATCH_FIELDr9r?r@s@r rBrBJsL*NIJK777777777rrBc*eZdZdZdZeefZdefdZ dS) MalwareScanz+ Represents results of single scan MALWARE_SCANreturnc4|d}|duS)NrF)get)r;rFs r do_accumulatezMalwareScan.do_accumulateks((9%%d""rN) rrrrrr-rB LIST_CLASSboolrXrrr rSrScsK$N$&78J#t######rrSceZdZdZdZdS)MalwareMRSUploadzk Used to isolate a possibly long running uploading to MRS from the other MalwareScan handlers. MALWARE_MRS_UPLOADNrrrr r\r\ps *NNNrr\ceZdZdZdS)MalwareScanQueueMALWARE_SCAN_QUEUENr$rrr r_r_y)NNNrr_ceZdZfdZxZS)MalwareScanQueuePutcNt||dS)N)paths scan_argsr7)r;rerfr>s r r9zMalwareScanQueuePut.__init__~s& u :::::rrrrr9r?r@s@r rcrc}s8;;;;;;;;;rrcceZdZfdZxZS)MalwareScanQueueRemovecLt|dS)N)scan_idsr7)r;rkr>s r r9zMalwareScanQueueRemove.__init__s$ (+++++rrgr@s@r riris8,,,,,,,,,rriceZdZfdZxZS)MalwareScanQueueRecheckcHtdSNr7r;r>s r r9z MalwareScanQueueRecheck.__init__ rrgr@s@r rmrm8rrmceZdZfdZxZS)MalwareScanQueueStopBackgroundcHtdSror7rps r r9z'MalwareScanQueueStopBackground.__init__rqrrgr@s@r rtrtrrrrtc<eZdZddddeedeffdZxZS)MalwareScanQueueUpdateStatusNrkstatusrkrycNt||dS)Nrxr7)r;rkryr>s r r9z%MalwareScanQueueUpdateStatus.__init__s( (6:::::r)rrrrstrrr9r?r@s@r rwrws`'+t;;;9;5D;;;;;;;;;;rrwc$eZdZdxZ\ZZZZdZdS)MalwareResponse)BLACKWHITEKNOWNUNKNOWNMALWARE_RESPONSEN) rrrTYPESr~rrrrrrr r}r}s&+OOE (E5%'NNNrr}ceZdZdZdS)MalwareSendFilesMALWARE_SEND_FILESNr$rrr rrrarrceZdZdZdS)MalwareRescanFilesMALWARE_RESCAN_FILESNr$rrr rr+NNNrrc4eZdZdZdZddddddfd ZxZS)MalwareCleanupTaskz' Creates task to cleanup files MALWARE_CLEANUP_TASKN) standard_onlycause initiatorscan_id post_actioncVt||||||dS)N)hitsrrrrrr7)r;rrrrrrr>s r r9zMalwareCleanupTask.__init__sB '#      r)rrrrrr9r?r@s@r rrsd,N            rrcPeZdZdZdZdZdZedee ffd Z xZ S)MalwareCleanupListMALWARE_CLEANUP_LISTrDrErmessagesc#|Kt|D]}t|di}|rkt |t rVd|dgD}||z }|D]}||||d<|VdS)Nresultch|] }|j Sr) orig_file)r3hits r z2MalwareCleanupList._split_items..s'!!!&)CM!!!rr)r8 _split_itemsrrW isinstancedictkeyspop)clsrmessager current_paths extra_pathspathr>s r rzMalwareCleanupList._split_itemssww++H55  Ggkk(B7788F +*VT22 +!!-4[[-D-D!!! %kkmmm; '%%DJJt$$$$$*!MMMM  r) rrrrrOrPrQ classmethodrrrr?r@s@r rrsi,NIJK D$7     [     rrceZdZdZdZeZdS)MalwareCleanupz. Represents results of single cleanup MALWARE_CLEANUPN)rrrrrrrYrrr rrs$'N#JJJrrceZdZdZdS)MalwareIgnorePathUpdatedzESignal through a message bus that MalwareIgnorePath has been updated.Nrrrrrrr rrsOODrrcteZdZUdZeeeed<eed<eed<eed<eeed<eed<eed<eed <eed <e e ed <eeed <d d d d dddddeeedeededededed ed ed e e deed eeffdZ de fdZ dZdZdZxZS)MalwareDatabaseScanz1 Represents results of a single MDS scan r<rrrJerrorstarted completedtotal_resourcestotal_maliciousrrrN)rrrrrrrc `t||||||||| | |  dS)N) r<rrrJrrrrrrrr7) r;r<rrrJrrrrrrrr>s r r9zMalwareDatabaseScan.__init__sQ ++  rreportcl||j|j|j|j|jdS)N)rrrrr)updaterrrrr)r;rs r update_with_reportz&MalwareDatabaseScan.update_with_reportsC N&"2"2      rc.||SN)r)r)r;rs r update_with_errorz%MalwareDatabaseScan.update_with_error s{{{)))rctroNotImplementedError)r;rLrMs r __setitem__zMalwareDatabaseScan.__setitem__#!!rctror)r;rLs r __delitem__zMalwareDatabaseScan.__delitem__&rr)rrrrrrr{__annotations__intrrr9rrrrrr?r@s@r rrs 49  III LLL III C= LLLNNN $ %%%%}  ,0##'   tCy! sm          () } C=      : )B    ***""""""""""rrceZdZdZdS)MalwareDatabaseRestorez4 Represents results of a single MDS restore Nrrrr rr*srrcBeZdZUdZeed<eed<dedeffd ZxZS)MalwareDatabaseRestoreTaskz. Represents a single MDS restore task rapp_namecNt||dS)N)rrr7)r;rrr>s r r9z#MalwareDatabaseRestoreTask.__init__8s& dX66666rrrrrr{rr9r?r@s@r rr0sk IIIMMM7S7C7777777777rrcreZdZUdZeeed<eeed<deedeeffd ZxZS)MalwareDatabaseCleanupz4 Represents results of a single mds cleanup succeededfailedcNt||dS)N)rrr7)r;rrr>s r r9zMalwareDatabaseCleanup.__init__Ds6       r) rrrrrrrr9r?r@s@r rr<s)**** & '''' -. *+          rrc4eZdZUdZeed<deffd ZxZS)MalwareDatabaseCleanupFailedz* Signifies an MDS cleanup failure rcLt|dSrr7r;rr>s r r9z%MalwareDatabaseCleanupFailed.__init__V$ u%%%%%rrr@s@r rrO[ JJJ&&&&&&&&&&&rrc4eZdZUdZeed<deffd ZxZS)MalwareDatabaseRestoreFailedz* Signifies an MDS restore failure rcLt|dSrr7rs r r9z%MalwareDatabaseRestoreFailed.__init__arrrr@s@r rrZrrrceZdZdZdS)RefreshImunifyPatchSubscriptionz-Refresh Imunify Patch user subscription info.Nrrrr rres7777rrceZdZdZdS)MalwareCleanupRevertListMALWARE_CLEANUP_REVERT_LISTNr$rrr rri2NNNrrceZdZeZdS)MalwareCleanupRevertN)rrrrrYrrr rrms)JJJrrceZdZdZdS)CheckDetachedScansMALWARE_CHECK_DETACHED_SCANSNr$rrr rrqs3NNNrrceZdZdZdS)VulnerabilityPatchTaskVULNERABILITY_PATCH_TASKNr$rrr rrur+rrceZdZdZdS)VulnerabilityPatchListrNr$rrr rryrrrceZdZdZeZdS)VulnerabilityPatchrN)rrrrrrYrrr rr}s&N'JJJrrceZdZdZdS)VulnerabilityPatchRevertListrNr$rrr rrrrrceZdZeZdS)VulnerabilityPatchRevertN)rrrrrYrrr rrs-JJJrrceZdZdZdS)VulnerabilityPatchFailedCLEANUP_FAILEDNr$rrr rrs%NNNrrceZdZdZdS)WordpressPluginActionWP_SECURITY_PLUGIN_ACTIONNr$rrr rrs0NNNrrc*eZdZdZdZejZdZdS)WordpressPluginTelemetryzX Information about telemetry event related to Imunify Security WordPress plugin WP_SECURITY_PLUGIN_EVENTc@d|jjS)Nz{}())formatr>r)r;s r __repr__z!WordpressPluginTelemetry.__repr__s}}T^8999rN) rrrrrrAPITARGETrrrr rrs<0N  F:::::rrcg|] }|j Sr)r)r3msgs r r5r5s+ rN)@rcopyrtypingrrr"defence360agent.contracts.messagesrrr r r r r rrrrimav.malwarelib.configrimav.malwarelib.scan.mds.reportrrrr"r&r)r-rBrSr\r_rcrirmrtrwr}rrrrrrrrrrrrrrrrrrrrrrrrMSGS_WITHOUT_IPrrr r s*&&&&&&&&&&                          322222 )))))g)))-----'---.....7...00000W00077777-w 77777777,gz:7772 # # # # #- # # #*****w********w***;;;;;*;;; ,,,,,-,,, . %5 ;;;;;#3;;;(((((gx((( *****w***,,,,,(,,,        6':z4$$$$$]$$$     w   >">">">">"'>">">"BW 7 7 7 7 7 7 7 7     W   &&&&&&7&&&&&&&&7&&&88888g888333333Wj333*****=***4444444400000W000,,,,,17J,,,(((((((( 33333#7*333.....}...&&&&&w &&&11111G111 : : : : :w : : :   r