yo4h RddlZddlZddlZddlZddlmZddlmZmZm Z m Z ddl Z ddl Z ddl mZddlmZmZddlmZejeZdZejd d ed e jfd Zd e efd ZGddejZ Gddej!ZdS)N) defaultdict)DictListOptionalSet)NoCP)get_non_system_usersrun)basez;/opt/imunify360/venv/share/imunify360/no_cp/schema-v{}.yaml)maxsizeversionreturnctt|5}tj|}t j|cdddS#1swxYwYdS)z*Returns a validator for given API version.N)open_SCHEMA_PATH_TMPLformatyaml safe_loadcerberus Validator)r schema_fileschemas ^/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/subsys/panels/no_cp/panel.py_get_validatorrs &&w// 0 0*K ,,!&))******************s(AA!$A!cDK ttjttjgd{V}n=#t $rYdSt j$rt$r}td|d}~wwxYw|\}}}|dkr"td | tj | }n"#t$r}td|d}~wwxYw|d}|tdt|t r|dkr|t"jks"td |t%|}||}|std |j|S) z8Runs a script, validates its JSON output and returns it.Nzfailed to run scriptrzexited with code: {}zCannot decode output as JSONrz#output does not have`version` fieldzinvalid API version: {}zvalidation error: {})r Config CLIENT_SCRIPTstrLATEST_VERSIONFileNotFoundErrorasyncioCancelledError Exception ScriptErrorrjsonloadsdecodeget isinstanceintrrvalidateerrors) resultexccodestdout_datar validatoroks r_get_client_datar7s;F0#f6K2L2LMNNNNNNNN tt  ! ;;;011s:;OD&! qyy077==>>>Cz&--//** CCC899sBChhy!!G?@@@7C  E qLL t* * *3::7CCDDDw''I   D ! !B D0)2BCCC Ks38= A7 A7"A22A7)&C C/C**C/ceZdZdS)r&N)__name__ __module__ __qualname__rr&r&?sDr=r&ceZdZdZeZedZddZddZ edZ dZ de e fd Zdee e e ffd Zdee e e ffd Zdee fd Zdee e ffd Zde fdZdS)rzno panelcdS)NFr<clss r is_installedzNoCP.is_installedGsur=Nc KdSNr<)selfnames renable_imunify360_pluginzNoCP.enable_imunify360_pluginK  r=c KdSrDr<)rE plugin_names rdisable_imunify360_pluginzNoCP.disable_imunify360_pluginNrHr=c KdS)N0r<r@s rrz NoCP.versionQs sr=cZKtd{V}|gSd|dDS)Ncg|] }|d S)rFr<.0domains r z)NoCP.get_user_domains..Ys===6v===r=domainsr7rEr4s rget_user_domainszNoCP.get_user_domainsUsE%'''''''' <I==T)_====r=rc6KdtDS)Ncg|] }|j Sr<)pw_name)rQpws rrSz"NoCP.get_users..\s<<z,NoCP.get_domain_to_owner..bs2   28F6NVG_-   r=rTrUrVs rget_domain_to_ownerzNoCP.get_domain_to_owner^sR%'''''''' <I  <@O    r=cKtd{V}|iStt}|dD])}||d|d*t |S)NrTr`rF)r7rlistappenddict)rEr4user_to_domainsrRs rget_domains_per_userzNoCP.get_domains_per_userfs%'''''''' <I%d++9o D DF F7O , 3 3F6N C C C CO$$$r=ctSrD)setr\s rbasedirsz NoCP.basedirsqs uu r=c"KtSrD)rfr\s r list_docrootszNoCP.list_docrootstsvv r=c KdS)z8 Returns panel url :return: str r<)rEusernames rpanel_user_linkzNoCP.panel_user_linkws rr=rD)r9r:r;NAMEr& exception classmethodrBrGrKrrWrr r]rrbrhrrkrmrqr<r=rrrCsU DI[        [>>> =c==== 4T#Y+?     %Dd3i,@ % % % %#c(T#s(^r=r)"r# functoolsr'logging collectionsrtypingrrrrrr defence360agent.contracts.configrrdefence360agent.utilsr r ror getLoggerr9loggerr lru_cacher,rrrfr7PanelExceptionr& AbstractPanelr<r=rrs ######,,,,,,,,,,,, ;;;;;;;;;;;;;;  8 $ $A Q*C*H$6*** *B     $%   999994 99999r=