Server IP : 66.29.132.122 / Your IP : 3.144.88.35 Web Server : LiteSpeed System : Linux business142.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : admazpex ( 531) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/thread-self/root/proc/thread-self/root/proc/self/root/opt/imunify360/venv/lib64/python3.11/site-packages/defence360agent/migrations/ |
Upload File : |
""" Used to fix issue with inability to unserialize stored scans. See DEF-23121 for details. """ import importlib import logging import pickle from pathlib import Path logger = logging.getLogger(__name__) SCANS_PATH = Path("/var/imunify360/aibolit/scans.pickle") IM360_MALWARELIB = "im360.malwarelib" AV_MALWARELIB = "imav.malwarelib" class AVUnpickler(pickle.Unpickler): def find_class(self, module, name): try: return super().find_class(module, name) except ModuleNotFoundError: if module.startswith(IM360_MALWARELIB): av_module = importlib.import_module( module.replace(IM360_MALWARELIB, AV_MALWARELIB) ) return getattr(av_module, name) raise def dump(obj, path): temp_path = path.with_name(path.name + ".temp") with temp_path.open("wb") as f: pickle.dump(obj, f) # to avoid the possibility of leaving a broken file, # if any errors occurred above temp_path.replace(path) def migrate(migrator, *_, fake=False, **__): if fake or not SCANS_PATH.exists(): return if IM360_MALWARELIB.encode() in SCANS_PATH.read_bytes(): try: with SCANS_PATH.open("rb") as f: obj = AVUnpickler(f).load() except Exception as exc: logger.exception( "Failed to load pickle scans %s: %s", SCANS_PATH, exc ) else: dump(obj, SCANS_PATH) def rollback(migrator, *_, fake=False, **__): pass