%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/imunify360/venv/lib/python3.8/site-packages/defence360agent/migrations/
Upload File :
Create Path :
Current File : //opt/imunify360/venv/lib/python3.8/site-packages/defence360agent/migrations/160_unmount_sigs_v1.py

"""
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>

Unmount sigs/v1 from CageFS."""
import logging
import subprocess
from pathlib import Path

logger = logging.getLogger(__name__)


def migrate(migrator, database, fake=False, **kwargs):  # NOSONAR python:S1142
    if fake:
        return

    try:
        from im360.subsys import clcagefs

        filename = clcagefs.CAGEFS_MP_FILENAME
    except ImportError:
        filename = "/etc/cagefs/cagefs.mp"

    try:
        text = Path(filename).read_text()
    except FileNotFoundError:  # indication of a non-cagefs system
        return  # nothing to do
    except Exception as e:  # NOSONAR pylint:W0703
        logger.exception("Can't read %s, reason: %s", filename, e)
        return
    else:
        if "/var/imunify360/files/sigs/v1" not in text:
            return  # nothing to do

    try:
        subprocess.check_call(
            r"sed -i.im360-bak '\:/var/imunify360/files/sigs/v1:d' %s"
            " && grep /var/imunify360/files/sigs/v1 /proc/mounts"
            " | awk '{ print $2 }' | xargs -rn1 umount"
            " && /usr/sbin/cagefsctl --wait-lock --unmount-all"
            " && /usr/sbin/cagefsctl --wait-lock --force-update-etc"
            " && /usr/sbin/cagefsctl --wait-lock --remount-all" % (filename,),
            shell=True,
            executable="/bin/bash",
        )
    except Exception as e:  # NOSONAR pylint:W0703
        logger.exception("Can't unmount sigs/v1, reason: %s", e)


def rollback(migrator, database, fake=False, **kwargs):
    pass

Zerion Mini Shell 1.0