%PDF- %PDF-
Direktori : /opt/imunify360/venv/share/imunify360/config_schema/ |
Current File : //opt/imunify360/venv/share/imunify360/config_schema/antivirus.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> """ import os NOTIFY, CLEANUP, CLEANUP_ON_SCHEDULE = ( "notify", "cleanup", "cleanup_on_schedule", ) NONE, DAY, WEEK, MONTH = "none", "day", "week", "month" DEFAULT_INTENSITY_CPU = 2 DEFAULT_INTENSITY_IO = 2 DEFAULT_INTENSITY_RAM = 2048 DEFAULT_RESOURCE_MANAGEMENT_CPU_LIMIT = 2 DEFAULT_RESOURCE_MANAGEMENT_IO_LIMIT = 2 DEFAULT_RESOURCE_MANAGEMENT_RAM_LIMIT = 500 def nullable(coerce): def f(value): if value is None: return value return coerce(value) return f def myimunify_rules(myimunify): """ To prevent turning off MyImunify if feature flag exists """ if not os.path.exists("/var/imunify360/myimunify-freemium.flag"): return myimunify if "enable" in myimunify and not myimunify["enable"]: myimunify["enable"] = True return myimunify def get_root_config(): return { "BACKUP_RESTORE": { "type": "dict", "schema": { "max_days_in_backup": { "type": "integer", "coerce": int, "min": 1, "default": 90, }, "cl_backup_allowed": { "type": "boolean", "default": True, }, "cl_on_premise_backup_allowed": { "type": "boolean", "default": False, }, }, "default": {}, }, "MALWARE_CLEANUP": { "type": "dict", "schema": { "trim_file_instead_of_removal": { "type": "boolean", "default": True, }, "keep_original_files_days": { "type": "integer", "coerce": int, "min": 1, "default": 14, }, }, "default": {}, }, "MALWARE_SCANNING": { "type": "dict", "schema": { "try_restore_from_backup_first": { "type": "boolean", "default": False, }, "default_action": { "type": "string", "default": CLEANUP, "allowed": [NOTIFY, CLEANUP, CLEANUP_ON_SCHEDULE], }, "notify_on_detect": { "type": "boolean", "default": False, }, "enable_scan_inotify": { "type": "boolean", "default": True, }, "optimize_realtime_scan": { "type": "boolean", "default": True, }, "enable_scan_modsec": { "type": "boolean", "default": True, }, "sends_file_for_analysis": { "type": "boolean", "default": True, }, "enable_scan_pure_ftpd": { "type": "boolean", "default": True, }, "scan_modified_files": { "type": "boolean", "default": None, "nullable": True, }, "cloud_assisted_scan": { "type": "boolean", "default": True, }, "rapid_scan": { "type": "boolean", "nullable": False, "default": True, }, "rapid_scan_rescan_unchanging_files_frequency": { "type": "integer", "coerce": nullable(int), "nullable": True, "default": None, }, "max_signature_size_to_scan": { "type": "integer", "coerce": int, "default": 1048576, }, "max_cloudscan_size_to_scan": { "type": "integer", "coerce": int, "default": 104857600, }, "max_mrs_upload_file": { "type": "integer", "coerce": int, "default": 104857600, }, "detect_elf": { "type": "boolean", "nullable": False, "default": True, }, "hyperscan": { "type": "boolean", "nullable": False, "default": False, }, "enable_scan_cpanel": { "type": "boolean", "nullable": False, "default": True, }, "crontabs": { "type": "boolean", "nullable": False, "default": True, }, }, "default": {}, }, "MALWARE_SCAN_SCHEDULE": { "type": "dict", "schema": { "interval": { "type": "string", "allowed": [NONE, DAY, WEEK, MONTH], "default": WEEK, }, "hour": { "type": "integer", "coerce": int, "min": 0, "max": 23, "default": 3, }, "day_of_week": { "type": "integer", "coerce": int, "min": 0, "max": 7, "default": 0, }, "day_of_month": { "type": "integer", "coerce": int, "min": 1, "max": 31, "default": 1, }, }, "default": {}, }, "MALWARE_SCAN_INTENSITY": { "type": "dict", "schema": { "cpu": { "type": "integer", "coerce": int, "min": 1, "max": 7, "default": DEFAULT_INTENSITY_CPU, }, "io": { "type": "integer", "coerce": int, "min": 1, "max": 7, "default": DEFAULT_INTENSITY_IO, }, "ram": { "type": "integer", "coerce": int, "min": 1024, "default": DEFAULT_INTENSITY_RAM, }, "user_scan_cpu": { "type": "integer", "coerce": int, "min": 1, "max": 7, "default": 2, }, "user_scan_io": { "type": "integer", "coerce": int, "min": 1, "max": 7, "default": 2, }, "user_scan_ram": { "type": "integer", "coerce": int, "min": 1024, "default": 1024, }, }, "default": {}, }, "MALWARE_DATABASE_SCAN": { "type": "dict", "schema": { "enable": { "type": "boolean", "default": False, }, "db_timeout": { "type": "integer", "coerce": int, "min": 1, "default": 15, }, }, "default": {}, }, "RESOURCE_MANAGEMENT": { "type": "dict", "schema": { "cpu_limit": { "type": "integer", "coerce": int, "min": 1, "max": 7, "default": DEFAULT_RESOURCE_MANAGEMENT_CPU_LIMIT, }, "io_limit": { "type": "integer", "coerce": int, "min": 1, "max": 7, "default": DEFAULT_RESOURCE_MANAGEMENT_IO_LIMIT, }, "ram_limit": { "type": "integer", "coerce": int, "min": 500, "default": DEFAULT_RESOURCE_MANAGEMENT_RAM_LIMIT, }, }, "default": {}, }, "ERROR_REPORTING": { "type": "dict", "schema": {"enable": {"type": "boolean", "default": True}}, "default": {}, }, "SEND_ADDITIONAL_DATA": { "type": "dict", "schema": { "enable": { "type": "boolean", "default": True, } }, "default": {}, }, "ADMIN_CONTACTS": { "type": "dict", "schema": { "emails": { "type": "list", "schema": {"type": "string"}, "nullable": False, "default": [], }, "enable_icontact_notifications": { "type": "boolean", "nullable": False, "default": True, }, }, "default": {}, }, "PERMISSIONS": { "type": "dict", "schema": { "support_form": { "type": "boolean", "nullable": True, "default": True, }, "advisor": { "type": "boolean", "nullable": True, "default": True, }, "user_ignore_list": { "type": "boolean", "nullable": True, "default": False, }, "upgrade_button": { "type": "boolean", "nullable": False, "default": True, }, "allow_malware_scan": { "type": "boolean", "nullable": True, "default": False, }, "user_override_malware_actions": { "type": "boolean", "nullable": False, "default": False, }, "user_override_proactive_defense": { "type": "boolean", "nullable": False, "default": False, "coerce": "user_override_pd_rules", }, "allow_local_malware_ignore_list_management": { "type": "boolean", "nullable": False, "default": True, }, }, "default": {}, }, "LOGGER": { "type": "dict", "schema": { "max_log_file_size": { "type": "integer", "default": 62914560, # 60MB }, "backup_count": { # if 5, store app.log, app.log.1, up to app.log.5 "type": "integer", "default": 5, }, "syscall_monitor": {"type": "boolean", "default": False}, }, "default": {}, }, "SECURE_SITE": { "nullable": True, # readonly fields are ignored during validation/normalisation "readonly": True, "type": "dict", }, "MY_IMUNIFY": { "type": "dict", "coerce": (dict, myimunify_rules), "schema": { "enable": { "type": "boolean", "default": False, }, "purchase_page_url": { "type": "string", "default": "https://{{ your billing system host }}:?{{ port }}/", }, }, "default": {}, }, "CONTROL_PANEL": { "type": "dict", "schema": { "generic_user_notifications": { "type": "boolean", "default": True, }, }, "default": {}, }, } def get_non_root_config(): return { "BACKUP_RESTORE": { "type": "dict", "schema": { "max_days_in_backup": { "type": "integer", "nullable": True, "coerce": lambda x: x and int(x), "min": 1, "default": None, }, }, "default": {}, }, "MALWARE_SCANNING": { "type": "dict", "schema": { "default_action": { "type": "string", "default": None, "allowed": [NOTIFY, CLEANUP, CLEANUP_ON_SCHEDULE], "nullable": True, }, "try_restore_from_backup_first": { "type": "boolean", "nullable": True, "default": None, }, }, "default": {}, }, "SECURE_SITE": { "nullable": True, "readonly": True, "type": "dict" }, "MY_IMUNIFY": { "type": "dict", "coerce": (dict, myimunify_rules), "schema": { "enable": { "type": "boolean", "default": False, }, "purchase_page_url": { "type": "string", "default": "https://{{ your billing system host }}:?{{ port }}/", }, }, "default": {}, }, "CONTROL_PANEL": { "type": "dict", "schema": { "generic_user_notifications": { "type": "boolean", "nullable": True, "default": None, }, }, "default": {}, }, }