wo4h$ddlZddlZddlZddlZddlZddlmZddlmZm Z m Z ddl Z ddl Z ddl mZmZddlmZddlmZddlmZddlmZmZmZd d lmZejeZej e!d zZ"d Z#d Z$ej%d de&de j'fdZ(dZ)dZ*de&fdZ+de&de&fdZ,dZ-dZ.dZ/de e&fdZ0Gddej1Z2Gddej3Z4dS)N) defaultdict)DictListSet)ClIntegrationConfigIntegrationConfig) JWTIssueris_generic_panel_installed)UserType) CheckRunError check_runget_non_system_users)basez$/users_script_schemas/schema-{}.yamlz$/etc/sysconfig/imunify360/auth.adminmetadata)maxsizescriptreturnctt|5}tj|}|t ur ddi|t <t j|cdddS#1swxYwYdS)z%Returns a validator for given script.requiredTN)open_SCHEMA_PATH_TMPLformatyaml safe_loadMETADATAcerberus Validator)r schema_fileschemas `/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/subsys/panels/generic/panel.py_get_validatorr#&s &&v.. / /*; ,,  ! ! *D1F8 !&)) ******************s=A22A69A6c2dtDS)Nc8g|]}t|jS)name)dictpw_name).0pws r" z*get_users_default_impl..1s% C C CbDbj ! ! ! C C C)rr-r"get_users_default_implr/0s C C,@,B,B C C CCr-cf|}d|vr||dvr|d|SdS)Nintegration_scripts)to_dict)clrds r"_get_conf_pathr54s@ A!!f2G0H&H&H&'// 4r-cKtt|}|stt|}|std|zt ||d{VS)Nzl%s not found neither in /etc/sysconfig/imunify360/integration.conf nor in /opt/cpvendor/etc/integration.ini.)r5rrIntegrationScriptError_get_integration_data)rpaths r"get_integration_datar:;s +--v 6 6D =133V<<  $ 8:@ A   'vt44 4 4 4 4 4 44r-r9cxK t|dd{V}n6#t$r)}td||d}~wwxYw t j|}n1#ttjf$r}td|z|d}~wwxYwt|tstd|ztt}| |std|d|j|td d krJ|td }d |tvr|d |td zz }t|t|}| |std |d|j|dS)NT)shellzMIntegrations script {script} failed with exit code {e.returncode} {e.stderr})rez"Cannot decode output of %s as JSONz%s should return dictz Validation error in metadata of z script: resultokmessagez: %szValidation error in data)rr r7rjsonloadsdecodeUnicodeDecodeErrorJSONDecodeError isinstancer(r#rvalidateerrors)rr9stdoutr=rAmetadata_validatormetadata_error validators r"r8r8Is  T222222222    $ v33    z&--//**  4 5$ 04 7    dD ! !E$%\}}|dr1||dg}||?d|DS#t $r+t dtcYSwxYw)Ndomainsownercg|] \}}||d S)r'rOr.)r*kvs r"r,z$_get_client_data..zs$DDDdaq))DDDr-z:Applying default implementation of users and domains lists) get_users_integration_datar:items setdefaultappendr7loggerwarningr/)usersrOrSrT user_domainss r"_get_client_datar]rs (022222222,Y77777777MMOO ' 'DAqz '$//' B?? ##A&&&DDekkmmDDDD !((( H   &''''' (sBB2CCcKtdd{V}i}|D]3}|dstd|(g||d<4|S)Nr[usernamez#Found user with an empty username: )r:rYrZ)r[ users_dictusers r"rUrUs|&w// / / / / / /EJ..J . NNGGG H H H H+-JtJ' ( ( r-cK tdd{VS#t$rtdicYSwxYw)NrOzCould not parse domains lists)r:r7rYrZr.r-r"get_domain_datarcsb))444444444 !6777 s&AAc Kd}dh}tjt|tt |t|tt |dd{V}d|D}|st d|||z} tt5}| | dddn #1swxYwYn0#t$r#t dtYnwxYwt|S)NadminsrootT)return_exceptionscRh|]$}t|t|D] }|d %Sr&)rGlist)r*readmins r" z!get_admin_list..sW  fd # #   f r-zDError occurred during extracting admins from integration configs: %sz&Failed to retrieve admins list from %s)asynciogatherr8r5rrrYrZrADMIN_LIST_FILE_PATHupdateread splitlinesOSErrorri) script_name admins_setadmins_from_integration_scripts custom_adminsadmin_list_files r"get_admin_listrxsKJ,3N  !##       #%%    ---''''''#"5M   + +   -J & ' ' C?   o2244??AA B B B C C C C C C C C C C C C C C C     46J         s6$D 8:C>2 D >DD DD *D76D7ceZdZfdZxZS)r7chtj|t|dSN)super__init__rYrZ)selfargskwargs __class__s r"r}zIntegrationScriptError.__init__s/$tr-)__name__ __module__ __qualname__r} __classcell__)rs@r"r7r7s8r-r7c\eZdZdZejZeZe dZ ddZ ddZ e dZ e dZdZd eefd Zd eeeeffd Zd eeeeefffd Zd eeeeffd ZdefdZd eefdZd eeeffdZd efdZdS) GenericPanelzb Panel, UI to which is provided by imunify{-antivirus,360-firewall}-generic.{rpm,deb} ctSr{r )clss r" is_installedzGenericPanel.is_installeds)+++r-Nc KdSr{r.)r~r's r"enable_imunify360_pluginz%GenericPanel.enable_imunify360_plugin  r-c KdSr{r.)r~ plugin_names r"disable_imunify360_pluginz&GenericPanel.disable_imunify360_pluginrr-cnK tdd{V}djdi|S#t$rYdSwxYw)N panel_infoz{name} {version}0r.)r:rr7rinfos r"versionzGenericPanel.versionsf -l;;;;;;;;D,%,44t44 4%   33 s !& 44czK tdd{V}djdi|S#t$r |jcYSwxYw)Nrz{name}r.)r:rr7NAMErs r"r'zGenericPanel.namesh -l;;;;;;;;D"8?**T** *%   8OOO s !&::cKtd{V}g}|D]7}||dt8|S)NrO)r]extendgettuple)r~r[r>ras r"get_user_domainszGenericPanel.get_user_domainssc&(((((((( 8 8D MM$((9egg66 7 7 7 7 r-rcFKtd{V}d|DS)Ncg|] }|d Sr&r.r*ras r"r,z*GenericPanel.get_users..s///V ///r-r]r~r[s r" get_userszGenericPanel.get_userss7&((((((((//////r-cKtd{V}tt}|D]<}|dgD]#}|||d$=|S)NrOr')r]rrirrX)r~r[r>radomains r"get_domain_to_ownerz GenericPanel.get_domain_to_owners&((((((((T"" 4 4D((9b11 4 4v%%d6l3333 4 r-cK|d{Vtd{Vtdd{V}dtffd fd|DS)Nr[ user_infoc|ddkrtjjS|dvrtjjStjjS)Nr_rf)rr UserLevelADMINRESSELER REGULAR_USER)rres r"user_info_to_levelz9GenericPanel.get_user_details..user_info_to_levelsR}}Z((F22~++}}Z((F22~..>. .r-c i|]q}|dv|d|dd|ddt|drS)r_email locale_code)rlocalelevel)rint)r*rr usernamess r" z1GenericPanel.get_user_details..s   xx ##y00 HHZ '2..((="55//5566## 100r-)rrxr:r)r~ user_datarerrs @@@r"get_user_detailszGenericPanel.get_user_detailss..******** %''''''''.w77777777  /$ / / / / / /     "     r-cFKtd{V}d|DS)NcHi|]}|d|dg SrR)rrs r"rz5GenericPanel.get_domains_per_user..s,HHH$V dhhy"55HHHr-rrs r"get_domains_per_userz!GenericPanel.get_domains_per_users7&((((((((HH%HHHHr-rAc|jdkrf|dddgkrX|ddd}tj|}|d|dtjkr|dndfS|jdfS) Nrcommandloginpamparamsjwt user_type user_name)_uidpopr parse_tokenr NON_ROOTra)r~protocolrAtoken parsed_tokens r" authenticatezGenericPanel.authenticates =A  $y/gu5E"E"EN&&ud33E$077L , ,0AAA[))  =$& &r-ct}d|vr7d|dvr-t|ddStS)Nmalwarebasedir)rr2setsplit)r~confs r"basedirszGenericPanel.basedirs*s^ ""**,,   d9o!=!=tIy17799:: :uu r-cjKtd{V}d|DS)Nc&i|]\}}|d|S) document_rootr.)r*rrTs r"rz.GenericPanel.list_docroots..2s#LLLyvq/"FLLLr-)rcrV)r~rOs r" list_docrootszGenericPanel.list_docroots0s?'))))))))LLGMMOOLLLLr-c KdS)z8 Returns panel url :return: str rr.)r~r_s r"panel_user_linkzGenericPanel.panel_user_link4s rr-r{)rrr__doc__rGENERIC_PANEL_NAMErr7 exception classmethodrrrrr'rrstrrrrrrr(rrrrrr.r-r"rrs  "D&I,,[,        [[0c00004T#Y+? S$sCx.-@(A    0IDd3i,@IIII '4 ' ' ' '#c( MT#s(^MMMMr-r)5rl functoolsrBloggingos collectionsrtypingrrrrr$defence360agent.api.integration_confrrdefence360agent.api.jwt_issuerr 3defence360agent.application.determine_hosting_panelr defence360agent.rpc_tools.lookupr defence360agent.utilsr rrrr getLoggerrrYr9dirname__file__rrnr lru_cacherrr#r/r5r:r8r]rUrcrxPanelExceptionr7 AbstractPanelrr.r-r"rs  ######"""""""""" 544444655555   8 $ $GOOH FF> Q*3*8#5*** *DDD 5s 5 5 5 5&&3&&&&R((("   *d3i****ZT0 nnnnn4%nnnnnr-