<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
import asyncio
import pathlib
import shutil

from defence360agent.subsys.panels import hosting_panel
from defence360agent.utils import importer

panel_users = importer.get(
    module="imav.malwarelib.utils.user_list", name="panel_users", default=None
)


def migrate(migrator, database, fake=False, **kwargs):
    if fake:
        return

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    users = loop.run_until_complete(panel_users())
    for user in users:
        path_obj = pathlib.Path(user["home"])
        old_path = str(path_obj.parent / ".rapid-scan-db" / path_obj.name)
        try:
            new_path = hosting_panel.HostingPanel().get_rapid_scan_db_dir(
                user["home"]
            )
        except OSError:
            continue
        if new_path is None or old_path == new_path:
            continue
        try:
            shutil.move(old_path, new_path)
        except OSError:
            pass


def rollback(migrator, database, fake=False, **kwargs):
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    users = loop.run_until_complete(panel_users())
    for user in users:
        path_obj = pathlib.Path(user["home"])
        old_path = str(path_obj.parent / ".rapid-scan-db" / path_obj.name)
        try:
            new_path = hosting_panel.HostingPanel().get_rapid_scan_db_dir(
                user["home"]
            )
        except OSError:
            continue
        if new_path is None or old_path == new_path:
            continue
        try:
            shutil.move(new_path, old_path)
        except OSError:
            pass
