[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.191.28.200: ~ $
import datetime
import pwd
import time

from defence360agent.contracts.messages import MessageType
from defence360agent.contracts.config import (
    int_from_envvar,
)
from defence360agent.contracts.plugins import (
    MessageSink,
    MessageSource,
)
from defence360agent.utils import (
    recurring_check,
    split_for_chunk,
    Scope,
)
from defence360agent.subsys.panels.cpanel import cPanel
from defence360agent.subsys.panels.hosting_panel import HostingPanel
from defence360agent.contracts.myimunify_id import get_myimunify_users


class SendDomainList(MessageSink, MessageSource):
    SCOPE = Scope.AV_IM360

    def __init__(self, period=None):
        self._task = None
        if period:
            self._period = period
        else:
            self._period = int_from_envvar(
                "IMUNIFY360_SEND_DOMAIN_PERIOD",
                int(datetime.timedelta(days=1).total_seconds()),
            )

    async def create_sink(self, loop):
        """MessageSink method"""

    async def create_source(self, loop, sink):
        self._loop = loop
        self._sink = sink

        self._task = self._loop.create_task(
            recurring_check(self._period)(self._send_domain_list)()
        )

    async def shutdown(self):
        if self._task is not None:
            self._task, t = None, self._task
            t.cancel()
            await t

    def _panel_domain_type_to_imunify(self, panel_type: str) -> str:
        return {
            "main": "primary",
            "parked": "alias",
        }.get(panel_type, panel_type)

    async def _create_domain_list_msg(self):
        hp = HostingPanel()
        if hp.NAME != cPanel.NAME:
            return

        domains = []
        myimunify_users = await get_myimunify_users()
        for user in myimunify_users:
            username = user["username"]
            user_pwd = pwd.getpwnam(username)
            for domain_data in hp.get_user_domains_details(username):
                domains.append(
                    {
                        "username": username,
                        "docroot": domain_data["docroot"],
                        "name": domain_data["domain"],
                        "securesite_user_id": user["myimunify_id"],
                        "uid": user_pwd.pw_uid,
                        "type": self._panel_domain_type_to_imunify(
                            domain_data["type"]
                        ),
                    }
                )
        timestamp = time.time()
        for chunk in split_for_chunk(domains, chunk_size=3000):
            msg = MessageType.DomainList()
            msg["timestamp"] = timestamp
            msg["domains"] = chunk
            yield msg

    async def _send_domain_list(self):
        async for msg in self._create_domain_list_msg():
            await self._sink.process_message(msg)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
__init__.py File 0 B 0644
accumulate.py File 3.53 KB 0644
backup_info_sender.py File 3.06 KB 0644
check_license.py File 7.58 KB 0644
checkpoint.py File 1.23 KB 0644
client.py File 9.43 KB 0644
config_merger.py File 828 B 0644
config_watcher.py File 1.89 KB 0644
event_hook_executor.py File 777 B 0644
event_monitor.py File 3.32 KB 0644
event_monitor_message_processor.py File 6.33 KB 0644
files_recurring_update.py File 1.09 KB 0644
icontact_sender.py File 4.36 KB 0644
idle_time_out.py File 1.21 KB 0644
lve_utils_install.py File 1.58 KB 0644
myimunify.py File 1.43 KB 0644
ping.py File 536 B 0644
send_domain_list.py File 2.79 KB 0644
send_server_config.py File 10.1 KB 0644