from collections import defaultdict from defence360agent.contracts.config import ConfigFile from defence360agent.rpc_tools.lookup import RootEndpoints from defence360agent.utils.config import update_config from defence360agent.rpc_tools import lookup from defence360agent.api.server.events import EventsAPI from defence360agent.feature_management.checkers import config_cleanup class AdvisorEndpoints(RootEndpoints): @lookup.bind("advisor", "apply") async def advisor_apply(self, advices): return await self._apply(advices) @lookup.bind("advisor", "apply-all") async def apply_all(self): advices = await EventsAPI.advices() return await self._apply(advices) async def _apply(self, advices): target_conf = defaultdict(dict) current_conf = ConfigFile().config_to_dict() for advise in advices: self._extract_conf_from_advise(advise, current_conf, target_conf) await update_config(self._sink, target_conf) return {"items": config_cleanup(ConfigFile().config_to_dict())} @staticmethod def _extract_conf_from_advise(advise, current_conf, target_conf): for section_key, section_value in advise["ignore"].items(): for value_key, ignored_values in section_value.items(): if current_conf[section_key][value_key] in ignored_values: return for section_key, section_value in advise["config_action"].items(): target_conf[section_key].update(section_value)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
schema | Folder | 0755 |
|
|
schema_responses | Folder | 0755 |
|
|
__init__.py | File | 15.07 KB | 0644 |
|
advisor.py | File | 1.49 KB | 0644 |
|
endpoints.py | File | 10.6 KB | 0644 |
|
hooks.py | File | 2.82 KB | 0644 |
|
hosting_panel.py | File | 1.48 KB | 0644 |
|
myimunify.py | File | 2.77 KB | 0644 |
|
permissions.py | File | 311 B | 0644 |
|
plesk_stats.py | File | 4.33 KB | 0644 |
|
reputation_management.py | File | 1.95 KB | 0644 |
|
schema.py | File | 6.16 KB | 0644 |
|