j9ddlmZddlmZddlmZddlmZddlmZddlm Z m Z ddl m Z m Z dd lmZdd lmZdd lmZmZdd lmZmZdd lmZmZmZmZmZmZm Z dZ!dZ"dZ#dZ$dZ%dZ&dZ'dS))print_function)division)absolute_import) defaultdict) iteritems)get_suEXEC_statusget_suPHP_status)CageFsCageFsException) ClUserSelect)ClSelect)"interpreter_versions_short_summaryserver_applications_summary)OptionalDict)!_is_acceptable_php_handler_cpanel$_get_php_selector_domains_for_cpanel#_get_php_selector_domains_for_plesk _get_php_selector_domains_for_da!_get_php_vhosts_for_current_panel#get_php_selector_compatible_domains(get_all_selector_compatible_domains_flatc t|S)zd Return list of InterpreterSummary objects :rtype: list[clselectctl.InterpreterSummary] )r interpreters R/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/clselectstatistics.py_iter_versionsr's .k : ::c t|S)zd Return list of ApplicationSummary objects :rtype: list[clselectctl.ApplicationSummary] )rrs riter_server_applicationsr!/s '{ 3 33rc@t|}| d|DSdS)NcDi|]}|j|j|j|jdS)) full_versionenabled installed)version version_fullr%r&).0its r z+get_versions_statistics..;sE    J ":\   r)r)rinterpreters_versionss rget_versions_statisticsr-7sA*;77(  .     )(rct}|sdS |n#t$rYdSwxYwt t t fsdSt}|dSt}tt}tt}t|D]n\}}| |s| |dd}||||||o||dS)z+Get users and domains that use php selectorNF)show_native_versionr)domains_by_php_versionusers_by_php_version)r is_cagefs_present _load_infor anyrr rr rsetrget_user_status get_versionupdateadd)cagefs php_vhostsphpr0r1user user_domainsr's rget_php_selector_usager?Dsb XXF  # # % %t tt !##%5%7%78 9 9t344Jt ..C(--&s++' 3300l%%d++  //$E/BB1Ew'..|<<<W%))$////#9 4  s; A A cbt}|d}||S|dS)z7 Safely get native version, or None if not set F)verboseNr) ClSelectPhpget_native_version)r<vs rget_native_version_saferEjs6 --C u--Ay Q4KrcJtrdndS)z= Get state of PHP selector: without CageFS or normal without_cagefsnormal)rBwork_without_cagefsrrget_mode_of_php_selectorrKus% +}}@@BB P  PrcNtdS)z- Get default version of PHP selector r)rBr7rJrrget_default_php_versionrM~s == $ $ & &q ))rN)( __future__rrr collectionsr future.utilsr cldetectlibrr cllimitsr r cluserselectr clselectrrB clselectctlrrtypingrrclselectdomainsrrrrrrrrr!r-r?rErKrMrJrrrXs&%%%%%&&&&&&######"""""";;;;;;;;,,,,,,,,&&&&&&------XXXXXXXX!!!!!!!! ;;;444    ###LQQQ*****r