PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /opt/imunify360/venv/lib/python3.11/site-packages/im360/subsys/panels/plesk/
Server: Linux cloud.virginhosting.lk 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
IP: 128.140.68.198
Choose File :

Url:
Dir : //opt/imunify360/venv/lib/python3.11/site-packages/im360/subsys/panels/plesk/remoteip.py

import os
from typing import Optional, Tuple

from defence360agent.utils import check_run
from im360.subsys.panels.base import RemoteIPInterface

__all__ = []  # type: list

_REMOTEIP = "remoteip"
_RPAF = "rpaf"
_HTTPD_IS_NOT_RUNNING = "httpd is not running"
_NGINX_MNG_CMD = ("/usr/local/psa/admin/sbin/nginxmng", "-s")


async def _enable_httpd_module(name: str):
    await check_run(["plesk", "sbin", "httpd_modules_ctl", "-e", name])


async def _is_nginx_proxy_on() -> bool:
    return b"Enabled" in (
        await check_run(
            _NGINX_MNG_CMD,
            env=dict(os.environ, LC_ALL="C"),
        )
    )


class RemoteIP(RemoteIPInterface):
    _REMOTEIP_MODULE_NAMES: Tuple[bytes, ...] = (
        b"mod_remoteip",
        b"remoteip_module",
        b"rpaf_module",
    )

    async def remoteip_activated(self) -> bool:
        return await self._is_loaded_to_apache()

    async def remoteip_install(self) -> Optional[str]:
        for m in (_REMOTEIP, _RPAF):
            await _enable_httpd_module(m)
        if await _is_nginx_proxy_on():
            await check_run(["service", "nginx", "reload"])
        return None