OwlCyberSecurity - MANAGER
Edit File: 009_revisium_scan_history.cpython-311.pyc
� ����N�6h�#�����������������������$����d�Z�ddlZddlZddlZddlZddlZddlmZ�ddlm Z �ddl mZ�ddlm Z �ddlmZ�ddlmZ�dd lmZ�dd lmZ�ddlmZmZmZmZ�ddlmZmZmZ��ej��������e ������������Z!�G�d ��d������������Z"�ed��������������G�d��d��������������������������Z#dede$fd�Z%�G�d��d������������Z&�G�d��de&������������Z'�G�d��de&������������Z(�G�d��de(������������Z)de$fd�Z*de$fd �Z+d!e,fd"�Z-d#e,d$e$fd%�Z.d&efd'�Z/ed*d(���������������Z0ed*d)���������������Z1dS�)+uQ�� 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 <https://www.gnu.org/licenses/>. Copyright © 2019 Cloud Linux Software Inc. This software is also available under ImunifyAV commercial license, see <https://www.imunify360.com/legal/eula> Migrate scan/cleanup/restore history from revisium extension for Plesk�����N)�abstractmethod)�defaultdict)� dataclass)�iglob)�Path)�uuid4)�file_hash_and_size)�CleanupStorage)�find_revisium_db�get_domain_docroot�get_revisium_db�get_vhosts_dir)�batched� get_owner�skip_for_im360c��������������������F�����e�Zd�ZdZdZdZed����������������Zed����������������ZdS�)�dbNc������������������r�����|j���������d���������|�_��������|j���������d���������|�_��������|j���������d���������|�_��������d�S�)N� malware_scans�malware_hits�malware_history)�orm�MalwareScan� MalwareHit�MalwareHistory)�cls�migrators��� �^/opt/imunify360/venv/lib/python3.11/site-packages/imav/migrations/009_revisium_scan_history.py�initzdb.init6���s4������"�,��7���!��n�5���%�\�*;�<���������c�����������������������t����������|d�������������D�]6}|���������������������t����������|�������������������������������������������������������������7d�S�)Ni���)�n)r����insert_many�list�execute)r����model�data�batchs��� r���r#���zdb.insert_many<���sQ�������T�T�*�*�*�� 5�� 5�E����d�5�k�k�*�*�2�2�4�4�4�4� 5�� 5r ���) �__name__� __module__�__qualname__r���r���r����classmethodr���r#�����r ���r���r���r���1���sW���������������K��J��N��=��=���[�=� ��5��5���[�5��5��5r ���r���F)�eqc��������������������L�����e�Zd�ZU�eed<���eed<���dZeed<���dZeed<���d��Z d��Z dS�)�Hit�path� signatureN�hash�sizec������������������*�����t����������|�j��������������������S��N)r3���r1�����selfs��� r����__hash__zHit.__hash__I���s�������D�I���r ���c������������������"�����|�j���������|j���������k����S�r6���)r1���)r8����others��� r����__eq__z Hit.__eq__L���s�������y�E�J�&�&r ���)r)���r*���r+���r����__annotations__�strr3���r4����intr9���r<���r-���r ���r���r0���r0���B���sf���������������� �J�J�J��N�N�N��D�#�����D�#���������'��'��'��'��'r ���r0����report_path�returnc������������������������ �|�������������������������������������5�}t����������j��������|������������cd�d�d��������������S�#�1�swxY�w�Y���n3#�t����������$�r&}t�������������������������������d|�|�������������Y�d�}~nd�}~ww�xY�wi�S�)NzCan't get report %s due to %s)�open�json�load� Exception�logger�error)r@����f�excs��� r���� get_reportrK���P���s�������H� � � � � �� �1��9�Q�<�<� �� �� �� �� �� �� �� �� �� �� �� ����� �� �� �� �� ����H��H��H����4�k�3�G�G�G�G�G�G�G�G�����H���� �Is2����A��7�A��;�A��;�A�� A3� A.�.A3c��������������������V�����e�Zd�ZdZdZdededefd�Ze d����������������Z ed����������������ZdS�)�ReportN� report_dir�owner� timestampc������������������J�����||�j���������z��|�_��������||�_��������ddd|d�|�_��������d�S�)N�file� on-demand�root)� resource_type�cause� initiator�ctime)�REPORT_FILEr1���� default_owner�common_history_info)r8���rN���rO���rP���s��� r����__init__zReport.__init__]���s:��������!1�1�� �"���#� ��� $ ��$ �� � � r ���c������������������*�����t����������|�j��������������������S�r6���)rK���r1���r7���s��� r����row_datazReport.row_datag���s�������$�)�$�$�$r ���c�����������������������d�S�r6���r-���r7���s��� r����update_historyzReport.update_historyk���s�������r ���) r)���r*���r+���rY����TASKr���r>���r?���r\����propertyr^���r���r`���r-���r ���r���rM���rM���Y���s}���������������K��D� �4�� ��� ��� �� �� �� ���%��%���X�%��� �� ���^� �� �� r ���rM���c��������������������"�����e�Zd�ZdZdZdefd�ZdS�)�Scanzresult_scan.ser�scan�hitsc����������� �����������|�j���������d��������������������������������������������D�]�\��}}|dk����r�|D�]�}t����������t����������|d���������������������|d���������|d���������|d����������������������}||������������������������������t����������|j��������������������dt����������|j��������������������p|�j��������t����������|j��������������������p|�j��������d �|�j ��������������������������d�S�) Nr'����vulners�fn�sn�sha256�sz)r1���r2���r3���r4����found�r1����event� file_owner� file_user) r^����itemsr0���r����appendr>���r1���r���rZ���r[���)r8���rf����section� maliciousr'����hits��� r���r`���zScan.update_historyt���s�������"&�-��"7�"=�"=�"?�"?�� �� ��G�Y��)�#�#��!�� �� ����d�4�j�)�)�"�4�j��h���d�� ��������S� � � � #�C�H� � �!(�%�c�h�/�/�E�4�3E�%.�s�x�%8�%8�%N�D�<N� �����2�� �� �� �� � � �� r ���N)r)���r*���r+���rY���ra����dictr`���r-���r ���r���rd���rd���p���s9��������������#�K��D��4������������r ���rd���c��������������������"�����e�Zd�ZdZdZd��Zd��ZdS�)�Curezresult_cure.ser�curec������������������:�����ddddddd�����������������������|������������S�)N�failed_to_cleanup�cleanup_done�cleanup_removed)������������������������)�get)r8����status_codes��� r����_get_statuszCure._get_status����s2������"�� �"�"�"� �� ���#�k� � � r ���c����������� �������|����|�j���������d��������������������������������������������D�]�\��}}t����������t����������|������������|d����������������������}||������������������������������||����������������������|d���������������������t ����������|j��������������������p|�j��������t ����������|j��������������������p|�j��������d�|�j ������������������������d�S�)Nr'����sig)r1���r2����statusrn���) r^���rr���r0���r���rs���r����r���r1���rZ���r[���)r8���rf���rR���r'���rv���s��� r���r`���zCure.update_history����s��������-��/�5�5�7�7�� �� �J�D�$��4��:�:��e��=�=�=�C���I��� �!�-�-�d�8�n�=�=�"+�C�H�"5�"5�"K��9K�!*�3�8�!4�!4�!J��8J� ��� ��.�� �� �� �� � �� r ���N)r)���r*���r+���rY���ra���r����r`���r-���r ���r���ry���ry�������s<��������������#�K��D��������������r ���ry���c�������������������������e�Zd�ZdZd��ZdS�)�Undo�undoc�����������������������dS�)N�restore_originalr-���)r8����args�kwargss��� r���r����zUndo._get_status����s������!�!r ���N)r)���r*���r+���ra���r����r-���r ���r���r����r��������s(���������������D�"��"��"��"��"r ���r����rf���c�����������������������t�����������j�����������������������������|������������������������������������������������}t�������������������������������t����������j��������|�������������d�S�r6���)� itertools�chain� from_iterable�valuesr���r#���r���)rf���r'���s��� r����save_historyr��������s<�������?�(�(������7�7�D��N�N�2�$�d�+�+�+�+�+r ���c����������������������g�}|������������������������������������D��]\��}}|j�������������������������������������������r�t����������j��������t����������j��������|j��������������������z��}|�����������������������������������r4t����������t ����������|������������t����������j��������������������\��|_ ��������|_ ��������|j ���������|j �����������t����������|d���������������d���������}|���������������������|�j ��������t����������|j��������������������t ����������|j��������������������|j��������d|j ��������|j ��������|d���������dk����rdn|d���������d���������������� t �������������������������������t ����������j��������|�������������d�S�) Nc�����������������������|�d���������S�)NrX���r-���)�rs��� r����<lambda>zsave_hits.<locals>.<lambda>����s �������'� ��r ���)�key���Tro���r����rm���)�scanid�user� orig_file�typeru���r3���r4���r����)rr���r1����existsr ����storage_namer ���r>����hashlibrk���r3���r4����sortedrs���r����r���r2���r���r#���r���)re���rf����db_hitsrv����historyr�����last_changes��� r���� save_hitsr��������sQ������G�� � ���������W��8�?�?���� �&�+�n�.I���/��/���I�����!�!�� �%7�� �N�N�G�N�&��&�"���#�(���x��3�8�#3�� ��.B�.B�C�C�C�B�G�K��N�N�"�k�%�c�h�/�/�!$�S�X����M�!%��H��H��'�w�/�3E�E�E�� ��(��1� �� � �� �� �� ��N�N�2�=�'�*�*�*�*�*r ���� domain_idc�����������������������t������������������������}|���������������������dt����������|�������������f������������}|�����������������������������������}|d���������|d���������d�S�)NzDSELECT last_scan_cnt_files, error_code FROM pool WHERE domain_id = ?r���r���)�total_resourcesrH���)r ����execute_sqlr?����fetchone)r����r����cursor�db_datas��� r����get_extra_scan_datar��������sV������ � � �B� �^�^�N� �Y�������F���o�o���G�&�q�z�G�A�J�?�?�?r ���� scan_path�scan_resultc������������������������|d���������}t�����������j�����������������������������t������������������������j��������t����������|d���������|d���������z ��������������|d���������d|d���������|�|d���������|d���������d� � ��� ��������S�) N�stats�end_time� exec_timerS���r����rH����cnt_cureablerR���) r�����started� completedr����r����r1���rH����total_maliciousrU���)r���r����creater����hexr?���)r����r����� scan_statss��� r����create_malware_scanr��������sx�������W�%�J� �>� � ��w�w�{��J�z�*�Z��-D�D�E�E��Z�(� �#�$5�6� ��'�"�#�N�3���!�� �� �� r ����domain_results_pathc������������������@����|�j������������������������������d������������\��}}t����������|������������}t����������|�����������������������������������������������}t����������|�dz��������������}t����������j��������t����������j��������h|� ����������������������������������k����r]|t����������j�����������������d���������d���������|t����������j�����������������d���������d���������k�����r|� ��������������������t����������j���������������������t����������|i�|d����������t����������|��������������������������}t����������t����������������������}t����������t����������t����������fD�]C}|j��������|v�r8�||�|||j�����������������d���������d�������������������������������������������|��������������Dt#����������|�������������t%����������||�������������d�S�)Nz .revisiumztask.resultr����r����re���)r����r����)rN���rO���rP���)�name�splitr���r���rO���rK���ry���ra���r�����keys�popr����r����r���r$���rd���r`���r����r����) r�����_r����r����rO����tasksre���rf����reports ��� r����process_domain_scan_resultsr��������s������&�+�1�1�+�>�>�L�A�y�"�9�-�-�I���O�O�!�!�#�#�E��*�]�:�;�;�E�� � �4�9�������-�-� �d�i���!�*�-� �� � �7� #�J� /� 0�� 0�� � � �$�)������G�u�V�}�G�(;�I�(F�(F�G������D� ��t���D���t�$��#��#���;�%����F�.�����,�W�5�j�A� �� �� ���n�T�"�"�"������� �d�D�����r ���c������������������z����|st������������������������sd�S�t�������������������������������|��������������t����������j�����������������������������t ������������������������d������������}t����������|������������D�]R} �t����������t����������|�������������������������� #�t����������$�r&}t�������������������������������d||�������������Y�d�}~�Kd�}~ww�xY�wd�S�)Nz&*/.revisium_antivirus_cache/.revisium*z.Can't process revisium reports in %s due to %s) r���r���r����osr1����joinr���r���r����r���rF���rG���� exception)r����database�faker�����scan_results_dir_patternr����rJ���s��� r����migrater������s����������#�%�%������G�G�H����!�w�|�|����0� �� ��� %�%=�>�>������ �'��-@�(A�(A�B�B�B�B���� �� �� ����@�#�� �� �� �� �� �� �� �� ����� ������s����+B� B8�B3�3B8c�����������������������d�S�r6���r-���)r���r����r����r����s��� r����rollbackr����"��s�������Dr ���)F)2�__doc__r����rD���r�����loggingr�����abcr����collectionsr����dataclassesr����globr����pathlibr����uuidr����defence360agent.utilsr ����imav.malwarelib.cleanup.storager ����imav.migration_utils.revisiumr���r���r ���r����imav.migration_utils.otherr���r���r���� getLoggerr)���rG���r���r0���rw���rK���rM���rd���ry���r����r����r����r>���r����r����r����r����r����r-���r ���r����<module>r�������sR����J��J�.������������������������ � � � ��������������#��#��#��#��#��#��!��!��!��!��!��!��������������������������������������4��4��4��4��4��4��:��:��:��:��:��:�������������������������J��I��I��I��I��I��I��I��I��I� �� �8� $� $��5��5��5��5��5��5��5��5�"���e���� '�� '�� '�� '�� '�� '�� '���� '��D���T��������� �� �� �� �� �� �� �� �.���������6�������8���������6�������8"��"��"��"��"�4��"��"��"�,�t��,��,��,��,� +�$��+��+��+��+�B@�3��@��@��@��@��3���T����������T���������>�����������&�� �� �� ���� �� �� r ���