jg1ddlmZddlmZddlmZddlZddlZddlmZddlm Z ddl Z ddl m Z mZddlmZdd lmZmZmZdd lmZdd lmZmZmZmZdd lmZdd lmZddl 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_uidceZdZdZdZdZdZddZedZ e j dZ ed Z ed Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZddZdZdS) 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 r.r/OSErrorIOErrorrstrr set_config)r!statuses r%r1zPhpManager.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 rr0s r%extensions_is_hiddenzPhpManager.extensions_is_hiddenLs$ zz##$7FF$NNr'cJtddduS)zG Domains tab was hidden by admin :return: bool hideDomainsTabr+Tr<r0s r%domains_tab_is_hiddenz PhpManager.domains_tab_is_hiddenTs$ zz##$4lCCtKKr'c4|jrtd|x}rtj|t |j}||jt|| |jgdS)zi Set current version for user :param version: str :return: None (succes) Not supported as root userN) rr#_get_version_selection_disabled_msgClSelectExceptionsVersionModificationBlockedrr set_versionrr6clean_crui_images)r!versionmessagecs r%switch_current_versionz!PhpManager.switch_current_version\s   I#$@AA A@@BB BW I$?HH H ) * * dnc'll333 T^,-----r'c |jrtdtjt |j}||jt|}| |jgd|iS)z Reset extension for selected version :param version: str :return: List of enabled extensions after reset rB extensions) rrr%check_multiphp_system_default_versionrrreset_extensionsrr6rG)r!rHrJrMs r%rOzPhpManager.reset_extensionsns   B#$@AA A6888 D, - -''G EE  T^,---j))r'cg}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 :param version: str :param extensions: list :return: response for user. Error or warning list or no error enableddisabledr8z.ERROR: %s is not a valid state of an extensionz Extensions was disabled by adminc"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)rappendrrrreplace_extensionsr6r=rrbulk_replace_extensionsrrGjoinrT) r!rHrM to_enablekvrJresolved_dependenciesconflict_dependencieswarningss r%set_extensionszPhpManager.set_extensions|s j)) X XDAqI~~  ####j "RUV"VWWWW!   - ( ) ) < z2PhpManager.get_current_version..Ds HHH$4)W!5HHHr'users)rrget_version_user_mapitemsrk)r! user_namesuser_mapresultrrHs @r%get_current_versionzPhpManager.get_current_version;s|   011FFzRR&nn.. J JNGU MMHHHH%HHH I I I I  r'c|jr(t|j|}n-t |j|j|}t||dS)z return list of exnensions for selected version (for user and admin) :param version: version get extensions for :type version: str :return: rw)fmt)rrrlist_extensionsrlist_all_extensionsrr )r!rHext_lists r%rzPhpManager._get_extensionsGsh   f"4#344DDWMMHH&t'788LLT^]deeH'v>>>>r')NNr)__name__ __module__ __qualname____doc__rr.r/r&propertyr1setterr=r@rKrOrdrqrirjrlrmrrCrnrrrrrr'r%rrsDDKFGH@@@@ H HX HNNN"OOXOLLXL...$ * * *!!!F, %%%    "   UUU@...(=== ! ! ! ! ? ? ? ? ?r'r)$ __future__rrrrwrpwdr future.utilsr cldetectlibr,clcommon.clconfigrr clcommon.ui_configr clselect.clselectctlphpr r r clselectrrrrrclselect.baseclselectrclselect.clselectexceptrrDclcommon.cpapirobjectrrr'r%rsq&%%%%%&&&&&& """"""66666666''''''KKKKKKKKKKPPPPPPPPPPPP333333HHHHHH333333w?w?w?w?w?w?w?w?w?w?r'