%PDF- %PDF-
Direktori : /opt/imunify360/venv/lib/python3.8/site-packages/defence360agent/simple_rpc/ |
Current File : //opt/imunify360/venv/lib/python3.8/site-packages/defence360agent/simple_rpc/schema.py |
""" This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. Copyright © 2019 Cloud Linux Software Inc. This software is also available under ImunifyAV commercial license, see <https://www.imunify360.com/legal/eula> """ from cerberus.errors import BaseErrorHandler, BasicErrorHandler from defence360agent.contracts.config import UserType from defence360agent.rpc_tools.middleware import ( add_eula, add_license, add_license_user, add_malicious_count, add_version, counts, default_to_items, max_count, preserve_remote_addr, send_command_invoke_message, ) from defence360agent.rpc_tools.utils import prepare_schema class ErrorHandler(BaseErrorHandler): messages = BasicErrorHandler.messages.copy() def collect_errors(self, error): if error.child_errors: for err in error.child_errors: yield from self.collect_errors(err) else: # avoid abstract error: required field yield "field: '{}', value: '{}', error: {}".format( error.field, error.value, self.messages.get(error.code, "").format( *error.info, constraint=error.constraint, field=error.field, value=error.value)) def __call__(self, errors): string_representation = [] for error in errors: for info in self.collect_errors(error): string_representation.append(info) return string_representation def init_validator(schema_validator, validate_middleware, schema_paths): _validator = schema_validator( prepare_schema(schema_paths), error_handler=ErrorHandler) # NOTE: it is processed in the reversed order, see _apply_middleware _middleware = { None: [ (send_command_invoke_message, (UserType.ROOT, UserType.NON_ROOT)), # validation before processing the data ( validate_middleware(_validator), (UserType.ROOT, UserType.NON_ROOT) ), # inject license for root (add_license, (UserType.ROOT,)), # inject license for regular user (add_license_user, (UserType.NON_ROOT,)), # inject eula (add_eula, (UserType.ROOT,)), # inject version (add_version, (UserType.ROOT, UserType.NON_ROOT)), # for backward compatibility (default_to_items, (UserType.ROOT, UserType.NON_ROOT)) ], ('malware', 'ignore', 'list'): [ # need for backward compatibility # convert result -> tuple (max_items, items) -> # dict {max_items:<int>, items:[...]} (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('whitelist', 'ip', 'list'): [ (counts, (UserType.ROOT, UserType.NON_ROOT)) ], ('blacklist', 'ip', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('graylist', 'ip', 'list'): [ (counts, (UserType.ROOT, UserType.NON_ROOT)) ], ('whitelist', 'ip', 'add'): [ (preserve_remote_addr, (UserType.ROOT, UserType.NON_ROOT)) ], ('blacklist', 'ip', 'add'): [ (preserve_remote_addr, (UserType.ROOT, UserType.NON_ROOT)) ], ('whitelist', 'country', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('blacklist', 'country', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('graylist', 'country', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('blacklist',): [ (counts, (UserType.ROOT, UserType.NON_ROOT)) ], ('malware', 'malicious', 'list'): [ (add_malicious_count, (UserType.ROOT, UserType.NON_ROOT)), (max_count, (UserType.ROOT, UserType.NON_ROOT)), ], ('malware', 'history', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('malware', 'user', 'list'): [ (add_malicious_count, (UserType.ROOT, UserType.NON_ROOT)), (max_count, (UserType.ROOT, UserType.NON_ROOT)), ], ('malware', 'suspicious', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('malware', 'on-demand', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('malware', 'on-demand', 'list-user'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('whitelisted-crawlers', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('blocked-port', 'list'): [ (counts, (UserType.ROOT, UserType.NON_ROOT)) ], ('blocked-port-ip', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('rules', 'list-disabled'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('proactive', 'ignore', 'list'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('feature-management', 'show'): [ (max_count, (UserType.ROOT, UserType.NON_ROOT)) ], ('ip-list', 'synced'): [ (counts, (UserType.ROOT, UserType.NON_ROOT)) ], ('ip-list', 'local', 'list'): [ (counts, (UserType.ROOT, UserType.NON_ROOT)) ], ('ip-list', 'local', 'add'): [ (preserve_remote_addr, (UserType.ROOT, UserType.NON_ROOT)) ], ('ip-list', 'local', 'delete'): [ (preserve_remote_addr, (UserType.ROOT, UserType.NON_ROOT)) ], } _middleware_exclude = { ('enable-plugin', ): [ add_eula ], ('disable-plugin', ): [ add_eula ], ('install-vendors', ): [ add_eula ], ('uninstall-vendors', ): [ add_eula ], ('add-sudouser', ): [ add_eula ], ('delete-sudouser', ): [ add_eula ], ('doctor', ): [ add_eula ], ('captcha', 'update-localizations'): [ add_eula ], ('captcha', 'compile-localizations'): [ add_eula ], ('update', ): [ add_eula ], ('kcarectl', 'disable-auto-update'): [ add_eula ], ('kcarectl', 'enable-auto-update'): [ add_eula ], ('kcarectl', 'plugin-info'): [ add_eula ], ('register', ): [ add_eula ], ('unregister', ): [ add_eula ], ('rstatus', ): [ add_eula ], ('update-license', ): [ add_eula ], ('3rdparty', 'list'): [ add_eula ], ('admin-emails', ): [ add_eula ], ('list-docroots',): [ add_eula ], ('features', 'list'): [ add_eula ], ('features', 'status'): [ add_eula ], ('features', 'install'): [ add_eula ], ('features', 'remove'): [ add_eula ], ('feature-management', 'native', 'enable'): [ add_eula ], ('feature-management', 'native', 'disable'): [ add_eula ], ('feature-management', 'native', 'status'): [ add_eula ], ('rules', 'update-app-specific-rules'): [ add_eula ], ('support', 'send'): [ add_eula ], ('3rdparty', 'conflicts'): [ add_eula ], ('smtp-blocking', 'reset'): [ add_eula ], ('smtp-blocking', 'sync'): [ add_eula ], ('malware', 'on-demand', 'check-detached'): [ add_eula ], ('checkdb', ): [ add_eula ], ('restore-configs', ): [ add_eula ], } return _validator, _middleware, _middleware_exclude