MOON
Server: Apache
System: Linux server30c.hostingraja.org 3.10.0-962.3.2.lve1.5.63.el7.x86_64 #1 SMP Fri Oct 8 12:03:35 UTC 2021 x86_64
User: jibhires (1887)
PHP: 8.1.30
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, symlink, escapeshellcmd, pcntl_exec
Upload Files
File: //opt/imunify360/venv/lib/python3.11/site-packages/im360/subsys/panels/directadmin/custombuild.py
import logging
import functools
import os

from defence360agent.subsys.panels.base import PanelException
from defence360agent.subsys.panels.directadmin.config import ConfigOptions
from defence360agent.utils import check_run, CheckRunError

logger = logging.getLogger(__name__)


BASEDIR = "/usr/local/directadmin/custombuild"
BUILD = os.path.join(BASEDIR, "build")


class CustomBuildOptions(ConfigOptions):
    DEFAULT_FILENAME = os.path.join(BASEDIR, "options.conf")


async def build(option):
    return await check_run([BUILD, option], cwd=BASEDIR)


def custombuild2_only(fun):
    @functools.wraps(fun)
    async def wrapper(*args, **kwargs):
        try:
            out = await build("version")
        except (CheckRunError, FileNotFoundError, PermissionError):
            pass
        else:
            if out.startswith(b"2."):
                return await fun(*args, **kwargs)
        raise PanelException(
            "{} is only supported on installations "
            "with Custombuild 2.0".format(fun.__name__)
        )

    return wrapper