jrPV.|ddlZddlZddlZddlZddlZddlmZddlmZmZm Z ddl m Z ddl m Z mZmZddlmZddlZddlmZddlmZdd lmZdd lmZmZdd lmZejeZ d Z!d Z"edddgZ#edddgZ$Gdde#Z%Gdde$Z&GddeZdZ'dS)N) namedtuple)datedatetime timedeltawraps) IPv4Network IPv6Network ip_network)Path)SchemaValidator)validate) Webshield) IPSetPortlibipset)IPtoday yesterday PortProtoBaseportproto PeriodBasesincetoc4eZdZfdZedZxZS) PortProtoc4|tjvr"td|tj|cxkrtjks$ntd|t |||S)NzProtocol {} is not supportedzPort {} is incorrect)rPROTOS ValueErrorformatMIN_PORTMAX_PORTsuper__new__)clsrr __class__s N/opt/imunify360/venv/lib/python3.11/site-packages/im360/simple_rpc/validate.pyr$zPortProto.__new__s  ( ( (;BB5IIJJ J"T>>>>I,>>>>>3::4@@AA AwwsD%000c |d\}}t|}|||S#t$r5}tdt ||d}~wwxYw)N:zIncorrect port_proto ({}): {})splitintrr str)r% pp_stringrres r' fromstringzPortProto.fromstring&s #//#..KD%t99D3tU## #   /66s1vvyII  s25 A40A//A4__name__ __module__ __qualname__r$ classmethodr0 __classcell__r&s@r'rrsS11111[r(rc4eZdZfdZedZxZS)Periodc  tj|tj|fnA#t$r4}tdt |d}~wwxYwt |||S)NzIncorrect value for period: {})r fromtimestamprr r-r#r$)r%rrr/r&s r'r$zPeriod.__new__3s N  "5 ) )8+A"+E+E E E E N N N=DDSVVLLMM M NwwsE2...s(, A*/A%%A*c   tj}||ddddz }|tkr+t j|z t j}}n|t krUt j|z tdz }t j|z }||}}n!d} t|dd|ddc} nI#ttf$r5} td |t| d} ~ wwxYw td|Ds"td t fd |D} | | i} tjtd i| z t j}}|||S) Nr)hourminutesecond microseconddays)weeksrChoursminutessecondsz#Invalid string from period: {} ({})c3&K|] }|dV dSrN).0p_names r' z$Period.fromstring..Xs&%K%KFfQi%K%K%K%K%K%Kr(zInvalid suffix: {}c34K|]}|dk|VdSrJrK)rLxpsfxs r'rNz$Period.fromstring..\s+JJrSBqE\\\\\\JJr(rK)rnowreplace total_secondsTODAYtime YESTERDAYrr,r IndexErrorr r-endswithtuplenext timestamp)r% period_stringrRseconds_since_midnightrr from_dateto_date period_namesvalr/ sfx_expanded real_argsrQs @r'r0zPeriod.fromstring;slnn #++1Qqa+HH H -//  E ! ! &<8=99      @?r(c b|sdS|}tj}||krN||dtjdtj|||jz}||kr1||d||jdSdS)Nz)Expiration contains expired timestamp {}!z%x %X %ZzRExpiration time {} is too far into the future. It is more than {} seconds from now)rVrr strftimegmtimeMAX_IPSET_TIMEOUT)rirrjexpiration_timerRmax_expiration_times r'_validator_expirationz%SchemaValidator._validator_expirations  Fikk c ! ! KK;BBM*dk/.J.JKK   "D$:: 0 0 0 KK;&$*@AA       1 0r(cNtjs||ddSdS)Nz8This command is not supported when webshield is disabled)rENABLErrs r'_validator_webshield_is_enabledz/SchemaValidator._validator_webshield_is_enableds=  KKJ       r(N)r2r3r4rIPSET_TIMEOUT_MAXrrkrorrrtrwrzr|r~rrrrrKr(r'r r gs 2AAA%%% 333 >>>   ===   .r(r cttjtdz }|dz |dz |dz fdfdfdfd}|S) Nz../..z3defence360agent/simple_rpc/schema_responses/anotherz(imav/simple_rpc/schema_responses/anotherz)im360/simple_rpc/schema_responses/anotherc|}|r|S|}|r|S|Srm) with_nameexists)filenamecore_schema_pathimav_schema_path core_schemas im360_schemas imav_schemass r'#get_file_from_schema_responses_dirsz@validate_middleware..get_file_from_schema_responses_dirsss'11(;;  " " $ $ $# #'11(;;  " " $ $ $# #&&x000r(c|dz} |d5}tj|cdddS#1swxYwYdS#t$rtd|YdSwxYw)Nz.jsonrzSchema file not found: %s)openjsonloadFileNotFoundErrorloggerwarning) return_type schema_pathfrs r'get_response_schemaz0validate_middleware..get_response_schemas99 ' !   !!#&& $!y|| $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $     NN6 D D D44 s3AA AA  AA A%A=<A=c>Kj|dd}|dS|}|dSdg|d} tj||dS#tj$r*}t d||||Yd}~dSd}~wwxYw)Nrsuccess)resultmessagesdataz5Validating %r using schema %r failed with error "%s".)exc_info)schemaget jsonschemarValidationErrorrcritical)hashablerrrtargeterrorr validators r'validate_responsez.validate_middleware..validate_responses&**84488MM   F$$[11 > F &2vFF    / / / / /)    OOG           s A##B2BBcBtfd}|S)NcKt|d}t||d|d<|g|Ri|d{V}tj|||S)Ncommandparams)rZrasyncio ensure_future)requestargskwargsrrrrrs r'wrapperz5validate_middleware..wrapped..wrappersWY/00H (8WX%6!!GH 1W6t666v66666666F  !"3"3Hf"E"E F F FMr(r)rrrrs` r'wrappedz$validate_middleware..wrappeds> q        r()r ospathdirname__file__) rbaserrrrrrrs ` @@@@@@r'validate_middlewarers )) * *W 4DOOLDDLFFM1111111     .$ Nr()(rrloggingrrV collectionsrrrr functoolsr ipaddressr r r pathlibr r"defence360agent.rpc_tools.validater SchemaValidatorBaserim360.contracts.configrim360.internals.corerrdefence360agent.utils.validater getLoggerr2rrUrWrrrr9rrKr(r'rs   """"""..........::::::::::877777,,,,,,44444444------  8 $ $   ?VW,=>> Z wo 6 6  (22222Z222jaaaaa)aaaHCCCCCr(