H9NtddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z ddl mZddlmZddlmZmZdd lmZdd lmZdd lmZmZdd lmZdd lmZmZm Z ddl!m"Z"dZ#dZ$dZ%dZ&d'e$e#Z(ej)e*Z+eeegGddeZ,dS)N)Path)Optional)pack) DoesNotExistJOIN)suppress)feature) PROACTIVEFULL)instance)ValidationError)CommonEndpointsbind)Scope) ProactiveProactiveIgnoredPathProactiveIgnoredRule)get_sites_for_user iz(/usr/share/i360-php-opts/rules_whitelistzI{}s{}Ic eZdZejZdZdZdZdZ e ddddZ e dd dd Z e dd ddd Z dd eededeedeefdZ ddedeedeefdZe dd dddZe dd d ddZe dd ddddZe dd ddddZdS)ProactiveEndpointsc|dgtt|z zz }tt||dg|RS)z :param path: some path string like "/some/path" :param rules: some array with ints like [1, 2, 3] or [] :param path_id: :return: rutf8)MAX_WHITELIST_RULESlenrIGNORE_ENTRY_PACK_PATTERNencode)selfpathrulespath_ids O/opt/imunify360/venv/lib/python3.11/site-packages/im360/simple_rpc/proactive.py_make_bytes_from_path_entryz.ProactiveEndpoints._make_bytes_from_path_entry(sS !+c%jj899 %w F0C0C FK    ctdtjtttt j}d}d}tj |dD]0\}}d|D}|| |||z }|dz }1|r ttd5}| tdt| |dddn #1swxYwYt!jtdtd dS#t$$r2}tt)|Yd}~dSd}~wwxYwt+t$5t!jttd ddddS#1swxYwYdS) Nz%Recreating proactive ignore list filer%c|jSNr )xs r#z?ProactiveEndpoints._generate_ignore_list_file..=safr%cHg|]}t|dd|jj S)proactiveignoredruleN)getattrr.rule_id).0rs r# zAProactiveEndpoints._generate_ignore_list_file..>sA14d;;&.r%wbIiz/Proactive ignore list file successfully updatedz/Proactive ignore list file successfully cleaned)loggerinforselectrjoinr LEFT_OUTER itertoolsgroupbyr$openWHITELIST_FILENAMEwriterAPI_VERoschmodFileNotFoundErrorwarningstrrremove)rpathswhitelist_file_bytes path_numberr r!whitelist_filees r#_generate_ignore_list_filez-ProactiveEndpoints._generate_ignore_list_file5s ;<<<$+ "6  $#T_ 5 5  # $,U4D4DEE  KD%E !D$D$De[%%   1 KK  O ',d33?~"((c7););<<<"(()=>>>???????????????+U333 MNNNNN$ ' ' 's1vv&&&&&&&&& '+,, O O ,--- MNNN O O O O O O O O O O O O O O O O O OsN+E >D > E DE D7E F'FF4GG#&G#c<|dStj|jS)Nr)pwdgetpwnampw_uidrusernames r#_get_uidzProactiveEndpoints._get_uidXs  1<))0 0r%cV|&ttj|jSdSr))rrNrOpw_dirrQs r# _get_homedirzProactiveEndpoints._get_homedir^s(   X..566 64r% proactivelistNcKg}|r8|dr#tj|}t|}t jd|||d|S)N site_search)uid user_sites)getrNrOrrfetchrS)ruserkwargsr\ user_infos r#proactive_listz!ProactiveEndpoints.proactive_listdsy  7FJJ}-- 7 T**I+I66J  d##   >D   r%detailscK dtj|||iS#t$r#t d|wxYw)NitemszEvent {} does not exist)rrdrSrr format)ridr`s r#proactive_detailsz$ProactiveEndpoints.proactive_detailsnsl HY.r4==3F3FGGH H H H H!";"B"B2"F"FGG G Hs ).-AignorecPKtj||fi|Sr))rr_rV)rr`ras r#proactive_ignore_listz(ProactiveEndpoints.proactive_ignore_listus-#)$*;*;D*A*ALLVLLLr%homedirr r0 rule_namec||td|8|t|jvr$td|dSdS)Nz5rule_name should be specified if rule_id is specifiedz)Unable to add {} to ignore: not permitted)r rparentsrg)rrmr r0rns r#_validate_ignore_itemz(ProactiveEndpoints._validate_ignore_itemysu  9#4!G   d4jj000%?FFtLL  10r%ctj5tj|\}}|s+|jdkr ddddS|rtj|||nFtj tj |k ddddS#1swxYwYdS)Nr*r)r r0rn) r dbatomicr create_or_getr!countrdeletewherer execute)rr r0rn ignored_pathcreateds r#_add_ignore_itemz#ProactiveEndpoints._add_ignore_itemsM [   ! !  $8$F%%% !L' ,"4":":"<"<"A"A          $2%w) %+--33(-=')))                  s9C%A CCCaddmanycK||}|D]}|j|fi||D]}|jdi||dS)Nr])rVrqr|rL)rrfr`rmitems r#proactive_ignore_addmanyz+ProactiveEndpoints.proactive_ignore_addmanys##D)) 8 8D &D &w 7 7$ 7 7 7 7 * *D !D ! ) )D ) ) ) ) '')))))r%addcK|||||||||||dSr))rqrVr|rL)rr r0rnr`s r#proactive_ignore_addz'ProactiveEndpoints.proactive_ignore_addsi ""   d # #T7I    dGY777 '')))))r%rwcpK|R||}|D]:}|t|jvr"td|;|D]H}t jt j|k I| dS)Nz"Unable to delete {}: not permitted) rVrrpr rgrrwrxr ryrL)rrGr`rmps r#proactive_ignore_deletez*ProactiveEndpoints.proactive_ignore_deletes  ''--G  $q''/11)<CCAFF2   A ' ) ) / /$)Q.  giiii '')))))r%rulecK||}|%|t|jvrtdtj5 tj|}n#t$rtdwxYwtj tj |jktj|k}|ratj tj |jk}|s|dddn #1swxYwY|dS)Nz$Unable do delete rule: not permittedr*zPath not found)rVrrpr r rsrtrr^rrrwrxr"r r0ryr8rvdelete_instancerL)rr rhr`rmpath_obj num_deleted num_ruless r#proactive_ignore_delete_rulez/ProactiveEndpoints.proactive_ignore_delete_rules##D))  gT$ZZ5G&G&G!"HII I [   ! ! / / 8/3>>> 8 8 8%&6777 8%+--(0HMA(0B6  /)/11U/78=HIIUWW!/,,...1 / / / / / / / / / / / / / / /4 '')))))s+EA54E5BCEE"Er))NN)NNN)__name__ __module__ __qualname__rIM360SCOPEr$rLrSrVrrcrirlrrrEintrqr|rrrrr]r%r#rr$sG KE    !O!O!OF111   T+v     T+y!!HHH"!H  T+x((MMM)(M"&#' $#  C= ."&#' #C= . T+x++***,+* T+x''7;***('* T+x622 * * *32 * T+x622***32***r%r)-rNr;loggingrApathlibrtypingrstructrpeeweerr contextlibr)defence360agent.feature_management.lookupr ,defence360agent.feature_management.constantsr r defence360agent.modelr defence360agent.rpc_toolsr defence360agent.rpc_tools.lookuprrdefence360agent.utilsrim360.model.proactiverrr)defence360agent.wordpress.site_repositoryrrMAX_FILE_STRINGr@r>rgr getLoggerrr6rr]r%r#rs  %%%%%%%%======HHHHHHHH******555555BBBBBBBB'''''' IHHHHH ?%,,(  8 $ $ TFB*B*B*B*B*B*B*B*B*B*r%