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

Dir : /opt/imunify360/venv/lib/python3.11/site-packages/im360/simple_rpc/
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/simple_rpc/smart_advice.py

from defence360agent.rpc_tools import lookup
from defence360agent.utils import Scope
from defence360agent.contracts.config import ControlPanelConfig
from defence360agent.myimunify.advice.advice_manager import (
    get_advice_notifications,
    make_advice,
)
from defence360agent.myimunify.advice.hosting_smart_advice_api import (
    sync_advices,
)


class SmartAdviceEndpoints(lookup.RootEndpoints):
    SCOPE = Scope.IM360

    @lookup.bind("smart-advice", "notifications")
    async def smart_advice_notifications(self):
        if not ControlPanelConfig.SMART_ADVICE_ALLOWED:
            return []
        return await get_advice_notifications()

    @lookup.bind("smart-advice", "get-options")
    async def smart_advice_get_options(self):
        return {
            "mu_plugin_installation": ControlPanelConfig.SMART_ADVICE_ALLOWED,
            "advice_email_notification": ControlPanelConfig.ADVICE_EMAIL_NOTIFICATION,
        }

    @lookup.bind("smart-advice", "sync")
    async def sync_smart_advice(self):
        if not ControlPanelConfig.SMART_ADVICE_ALLOWED:
            return []
        advices = await make_advice()
        ok = await sync_advices(advices)
        if ok:
            return []
        else:
            raise Exception("Failed to sync advices")