ok
Direktori : /opt/imunify360/venv/lib/python3.11/site-packages/im360/simple_rpc/ |
Current File : //opt/imunify360/venv/lib/python3.11/site-packages/im360/simple_rpc/smart_advice.py |
import logging from defence360agent.api.server.events import EventsAPI from defence360agent.rpc_tools import lookup from defence360agent.utils import Scope from defence360agent.contracts import config from defence360agent.contracts.config import ControlPanelConfig from defence360agent.contracts.myimunify_id import get_myimunify_users from defence360agent.utils.whmcs import get_upgrade_url_link 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 [] users_to_report = set( [ item["username"] for item in await get_myimunify_users() if not item["protection"] ] ) users_to_pop = set() for user in users_to_report: conf = config.ConfigFile(user) if not conf.get("CONTROL_PANEL", "smart_advice_allowed"): users_to_pop.add(user) users_to_report = users_to_report - users_to_pop response = await EventsAPI.smart_advices() logging.info( "Smart Advice events API response " "with notifications: %s, users to report: %s", str(response), str(users_to_report), ) data = [ event for event in response if event.get("smartadvice_user") in users_to_report ] for item in data: item["upgrade_url"] = get_upgrade_url_link( item.get("smartadvice_user"), item.get("smartadvice_domain") ) return data @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, }