wo4h7DddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZddlmZddlmZmZejeZejdZGd d eZed d d gZGddeZGdde ZdZdZdZ dS)N) namedtuplewraps) Validator)ANTIVIRUS_MODE BackupRestoreMalware) LicenseCLN) BackupSystem get_backendz^[A-Fa-f0-9]{64}$ceZdZddZdS)ValidationErrorNcbt|tr |g|_n||_|pi|_dSN) isinstancestrerrors extra_data)selfrrs W/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/rpc_tools/validate.py__init__zValidationError.__init__s6 fc " " !!(DKK DK$*r)__name__ __module__ __qualname__rrrrrs(++++++rr OrderByBase column_namedescc4eZdZfdZedZxZS)OrderBycJt|||Sr)super__new__)clsrr __class__s rr$zOrderBy.__new__$swwsK666rc  tjd|dd\}}|||dkS#t$r5}tdt ||d}~wwxYw)zP :param ob_string: for example: 'user+', 'id-' :return: z ^(.+)([+|-])-zIncorrect order_by: ({}): {}N)recompilesplit ValueErrorformatr)r% ob_stringcol_namesignes r fromstringzOrderBy.fromstring's  Z77==iHH2NNHd3x-- -   .55c!ffiHH  sAA B0A>>B)rrrr$ classmethodr4 __classcell__r&s@rr!r!#sS77777  [     rr!ceZdZdZfdZdZdZdZdZde fdZ d Z d Z d Z d efd ZdZdZdZdZdZdZdZde fdZdZdZxZS)SchemaValidatorz%Y-%m-%dcHtj|i|i|_dSr)r#rr)rargskwargsr&s rrzSchemaValidator.__init__9s*$)&)))rcdt|tr|St|Sr)rr!r4rvalues r_normalize_coerce_order_byz*SchemaValidator._normalize_coerce_order_by=s- eW % % L!!%(((rcht|Sr)rstriplowerr>s r_normalize_coerce_sha256hashz,SchemaValidator._normalize_coerce_sha256hashBs&5zz!!'')))rc4trdS| tjS|S)NF)rr DATABASE_SCAN_ENABLEDr>s r_normalize_coerce_scan_dbz)SchemaValidator._normalize_coerce_scan_dbEs"  5 =0 0 rc4t|trdSdS)NTF)rr!r>s r_validate_type_order_byz'SchemaValidator._validate_type_order_byLs eW % % 4urr?cttt|Sr) SHA256_REGEXPmatchrrBr>s r_validate_type_sha256hashz)SchemaValidator._validate_type_sha256hashQs(""3u::#3#3#5#5666rc|rJtj|s-||d|dSdSdS)z#{'type': 'boolean', 'empty': False}zPath {} should be absoluteN)ospathisabs_errorr/)ris_absolute_pathfieldr?s r_validate_is_absolute_pathz*SchemaValidator._validate_is_absolute_pathTsc  O7=='' O E#?#F#Fu#M#MNNNNN O O O Orc|r? |ddS#t$r||dYdSwxYwdS)z{'type': 'boolean'}asciizMust only contain ascii symbolsN)encodeUnicodeEncodeErrorrR)risasciirTr?s r_validate_isasciiz!SchemaValidator._validate_isasciiZsr  F F W%%%%%% F F F E#DEEEEEE F F Fs  ??c t|Sr)intr>s r_normalize_coerce_intz%SchemaValidator._normalize_coerce_intbs5zzrreturnctjtjSr)mathceildatetimenow timestamp)rdocuments r_normalize_default_setter_nowz-SchemaValidator._normalize_default_setter_nowes-y*..00::<<===rcdS)a;{'type': 'dict', 'empty': False, 'schema': { 'users': {'type': 'list', 'allowed': ['non-root', 'root'], 'empty': False}, 'require_rpc': {'type': 'string', 'empty': True, 'default': 'running', 'allowed': ['running', 'stopped', 'any', 'direct']} }} Nrrr;r<s r _validate_clizSchemaValidator._validate_cliircdS)z"{'type': 'string', 'empty': False}Nrris r_validate_helpzSchemaValidator._validate_helpsrkrcdS)z4{'type': 'boolean', 'empty': True, 'default': False}Nrris r_validate_positionalz$SchemaValidator._validate_positionalwrkrcdS)z!{'type': 'string', 'empty': True}Nrris r_validate_return_typez%SchemaValidator._validate_return_type{rkrcdS)z5{'type': 'boolean', 'empty': False, 'default': False}Nrris r_validate_cli_onlyz"SchemaValidator._validate_cli_only~rkrcdS)z Parameter can be passed via the specified environment variable. The value specified via a CLI argument takes precedence. The rule's arguments are validated against this schema: {'type': 'string', 'empty': False} Nrris r_validate_envvarz SchemaValidator._validate_envvarrkrcdS)a Parameter will only be accepted if provided via environment variable specified by `envvar`. It will be rejected if passed as a CLI argument. The rule's arguments are validated against this schema: {'type': 'boolean', 'default': False} Nrris r_validate_envvar_onlyz%SchemaValidator._validate_envvar_onlyrkrcH|rtj|S|Sr)rOrPabspathr>s r_normalize_coerce_pathz&SchemaValidator._normalize_coerce_paths#  *7??5)) ) rcNt|tr|St|Sr)rr r r>s r_normalize_coerce_backup_systemz/SchemaValidator._normalize_coerce_backup_systems' e\ * * L5!!!rcttjrtjs||ddSdS)NzBackup is not enabled!)rENABLED backup_systemrR)rrTr?s r_validator_backup_is_enabledz,SchemaValidator._validator_backup_is_enabledsB% 9-*E*G*G 9 KK7 8 8 8 8 8 9 9r)rrr _DATE_FORMATrr@rDrGrIrrMrUr[r^r]rgrjrmrorqrsrurwrzr|rr6r7s@rr9r96sL))) *** 7s7777OOO FFF>>>>>   111CCC000DDD      C """ 9999999rr9c$|||id}||||isNtd|||jt |j|j|j|S)NT)always_return_documentz6Validation error with command {}, params {}, errors {}) normalizedvalidateloggerwarningr/rrrrf) validatorhashableparamsvaluess rrrs  ! ! 64"F   x)9: ; ;F D K K&)"2     i. 0DEEE  h ''rcfd}|S)Nc@tfd}|S)NcKt|d}t||d|d<|g|Ri|d{V}|S)Ncommandr)tupler)requestr;r<rresultfrs rwrapperz5validate_middleware..wrapped..wrappersqWY/00H (8WX%6!!GH 1W6t666v66666666FMrr)rrrs` rwrappedz$validate_middleware..wrappeds9 q       rr)rrs` rvalidate_middlewarers#      Nrcptdtfd}tr|SS)zz Decorator for CLI commands methods that ensures that the AV+ license is valid. :raises ValidationError: zImunifyAV+ license requiredcNKtjr|i|d{VSr)r is_valid_av_plus)r;r< exceptionfuncs r async_wrapperz/validate_av_plus_license..async_wrappersD  & ( ( /t.v........ .r)rrr)rrrs` @rvalidate_av_plus_licensersW =>>I 4[[[  Kr)!rcloggingrarOr+ collectionsr functoolsrcerberus.validatorr defence360agent.contracts.configrrr !defence360agent.contracts.licenser %defence360agent.subsys.backup_systemsr r getLoggerrrr,rK Exceptionrrr!r9rrrrrrrs """"""(((((( 988888KKKKKKKK  8 $ $ .// +++++i+++j(?@@ k&l9l9l9l9l9il9l9l9^ ( ( (    r