Mi3ddlmZddlmZddlmZddlZddlZddlmZddlm Z ddl Z ddl m Z mZddlmZdd lmZmZmZdd lmZdd lmZmZmZmZdd lmZdd lmZddl m!Z!m"Z"ddl#m$Z$Gdde%Z&dS))print_function)division)absolute_importN)getpwuid) iteritems) get_param replace_param)UIConfig)format_summaryparse_extensionsAPI_1)ClSelect) ClUserSelect ClExtSelectClUserExtSelectClUserOptSelect)BaseSelectorError)ClSelectExcept)get_main_username_by_uid domain_owner)Websitec \eZdZdZdZdZdZddZedZ e j dZ ed Z ed Z dd Z dd ed edzdeeeffdZdd edeeefd edzdeeeffdZdZdZdZdZdZdZdZdZdZdZddZdd ed edzdefdZdS) PhpManagerz:Responsible for actual PhpSelector selector high-level APIphpz6/usr/local/directadmin/plugins/phpselector/plugin.confactiveNctj}|dk|_t||_|jrt |j|_dSt|j|_dS)Nr) osgeteuid is_root_userr user_namer interpreter cl_select_libr)selfcfgpkgeuids W/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/clselectphp/php_manager.py__init__zPhpManager.__init__&sfz|| AI1$77   @!)$*:!;!;D   !-d.>!?!?D   ctjrt|j|jdkSt dd S)zD Get current status for panel :return: bool yes hidePhpApp uiSettings)detectis_darDA_PATHDA_PARAMr r#s r'selector_enabledzPhpManager.selector_enabled/sI <>> HT\4=99UB Bzz++L,GGG Gr)c tjr t|j|j|rdndn@#t t f$r,}td|jdt|d}~wwxYwt dd| iidSt dd| iidS)ze Enable/disable selector for each panel :param status: bool :return: r+nozCan not process config file z with reason: Nr-r,) r.r/r r0r1OSErrorIOErrorrstrr set_config)r#statuses r'r3zPhpManager.selector_enabled;s <>> N +dlDMF;T55PTUUUUW% + + +''LLL#a&&&)*+++ + JJ ! !<,F 1K"L M M M M M JJ ! !<,F 1K"L M M M M Ms5A2'A--A2cJtddduS)zF Extensions was hidden by admin :return: bool hidePHPextensionsr-Tr rr2s r'extensions_is_hiddenzPhpManager.extensions_is_hiddenMs$ zz##$7FF$NNr)cJtddduS)zG Domains tab was hidden by admin :return: bool hideDomainsTabr-Tr>r2s r'domains_tab_is_hiddenz PhpManager.domains_tab_is_hiddenUs$ zz##$4lCCtKKr)c6|jrtd|x}rtj|t |j}||jt||| |jgdS)z Set current version for user :param version: str :param domain: str :return: None (succes) Not supported as root userN) rr#_get_version_selection_disabled_msgClSelectExceptionsVersionModificationBlockedrr! set_versionr r8clean_crui_images)r#versiondomainmessagecs r'switch_current_versionz!PhpManager.switch_current_version]s   I#$@AA A@@BB BW I$?HH H ) * * dnc'llF;;; T^,-----r)rJwebsitereturnc|jrtdtjt |j}||jt||}| |jgd|iS)z Reset extension for selected version. Returns dict with 'extensions' key containing list of enabled extensions. rDrO extensions) rrr%check_multiphp_system_default_versionrr!reset_extensionsr r8rI)r#rJrOrMrSs r'rUzPhpManager.reset_extensionsps   B#$@AA A6888 D, - -''G g'VV  T^,---j))r)rScg}t|D]0\}}|dkr||!|dkr dd|zicS1|jr7t|jt ||iS|jrtdt|j}| |j t |||\}}} | |j g|r d|D}|rd |nd } | r2| r| d z} | d d | z} | rd | iSiS) z Set extensions for php version for admin and user. Returns dict with 'status' key on error, 'warning' key if warnings occurred, or empty dict on success. enableddisabledr:z.ERROR: %s is not a valid state of an extensionz Extensions was disabled by adminrRc"g|] }dj| S)z{} enabled as dependency ({}))format).0exts r' z-PhpManager.set_extensions..s&(w(w(wZ])O)H)OQT)U(w(w(wr)z, z. z{} skipped as conflicting.warning)rappendrrr!replace_extensionsr8r?rrbulk_replace_extensionsr rIjoinrZ) r#rJrSrO to_enablekvrMresolved_dependenciesconflict_dependencieswarningss r'set_extensionszPhpManager.set_extensions}s  j)) X XDAqI~~  ####j "RUV"VWWWW!   - ( ) ) < z2PhpManager.get_current_version..Ks HHH$4)W!5HHHr))rr!list_all_users get_versionget_version_user_mapitemsrq) r# user_namesrK user_selectorresult actual_usersryuser_maprrJs @r'get_current_versionzPhpManager.get_current_version:s %T%566   %%G)E)E)G)GL$ F F'33D&AA!D+2fEEt V$ $ 55jAA&nn.. J JNGU MMHHHH%HHH I I I I  r)c|jr(t|j|}n/t |j|j||}t||dS)zV Return list of extensions for selected version (for user and admin). rRr})fmt)rrr!list_extensionsrlist_all_extensionsr r )r#rJrOext_lists r'rzPhpManager._get_extensionsNsn   w"4#344DDWMMHH&t'788LLT^]dnuLvvH'v>>>>r))NNr) __name__ __module__ __qualname____doc__r!r0r1r(propertyr3setterr?rBrNr8rdictlistrUrjrwrorprrrsrrErtrrrrrr)r'rrsBDDKFGH@@@@ H HX HNNN"OOXOLLXL....& * * *gn *PTUXZ^U^P_ * * * *ctCH~PWZ^P^jnortwowjxB, %%%    "   UUU@...(===!!!!( ? ?s ?Wt^ ?t ? ? ? ? ? ?r)r)' __future__rrrr}rpwdr future.utilsr cldetectlibr.clcommon.clconfigrr clcommon.ui_configr clselect.clselectctlphpr r r clselectrrrrrclselect.baseclselectrclselect.clselectexceptrrFclcommon.cpapirrclselect.modelsrobjectrrr)r'rs&%%%%%&&&&&& """"""66666666''''''KKKKKKKKKKPPPPPPPPPPPP333333HHHHHHAAAAAAAA######y?y?y?y?y?y?y?y?y?y?r)