§ À•¿j!ãóò—ddlmZddlmZddlmZddlmZddlmZddlm Z m Z ddl m Z m Z dd lmZdd lmZdd lmZmZmZdd lmZmZdd lmZmZmZmZmZm Z m!Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)dS)é)Úprint_function)Údivision)Úabsolute_import)Ú defaultdict)Ú iteritems)Úget_suEXEC_statusÚget_suPHP_status)ÚCageFsÚCageFsExceptioné)Ú ClUserSelect)ÚClSelect)Ú"interpreter_versions_short_summaryÚserver_applications_summaryÚ-server_nodejs_applications_with_shared_status)ÚOptionalÚDict)Ú!_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 rÚiter_server_applicationsr"3s€õ ' {Ñ 3Ô 3Ð3r cóÊ—ddlm}t¦«}d„|D¦«}d„|D¦«}d„|D¦«}|t|¦«t|¦«f¬¦«}||fS)zACollect Node application and Shared Store aggregates in one scan.r)Úget_shared_node_modules_summarycó—g|]\}}|‘ŒS©r&)Ú.0Ú applicationÚ_actives rú z>get_nodejs_applications_and_shared_summary..@s€ÐDÐDÐDÑ$8 K°�KÐDÐDÐDr có—g|] \}}|¯|‘Œ Sr&r&)r'r(Úactives rr*z>get_nodejs_applications_and_shared_summary..As1€ð&ð&ð&Ñ+>¨;¸Ø$ð&˜;ð&ð&ð&r có—h|] }|j’Œ Sr&)Úuser)r'r(s rú z=get_nodejs_applications_and_shared_summary..Cs€ÐLÐLÐL¨�KÔ$ÐLÐLÐLr )Ú active_counts)Úclselector.node_modules_storager$rÚlen)r$ÚrecordsÚ applicationsÚactive_applicationsÚ active_usersÚsnapshots rÚ*get_nodejs_applications_and_shared_summaryr8;s¢€àOÐOÐOÐOÐOÐOå;Ñ=Ô=€GØDÐD¸GÐDÑDÔD€Lð&ð&À'ð&ñ&ô&ÐàLÐLÐ8KÐLÑLÔL€LØ.Ð.ݘ<Ñ(Ô(­#Ð.AÑ*BÔ*BÐCðEñEôE€Hà ˜Ð !Ð!r có@—t|¦«}|� d„|D¦«SdS)NcóD—i|]}|j|j|j|jdœ“ŒS))Ú full_versionÚenabledÚ installed)ÚversionÚ version_fullr<r=)r'Úits rú z+get_versions_statistics..MsE€ð ð ð ð ð ŒJØ "¤Øœ:Øœ\ððð ð ð r )r)rÚinterpreters_versionss rÚget_versions_statisticsrCIsA€å*¨;Ñ7Ô7ÐØÐ(ð ð ð .ð  ñ ô ð ð)Ð(r có„—t¦«}| ¦«sdS | ¦«n#t$rYdSwxYwt t ¦«t ¦«f¦«sdSt¦«}|€dSt¦«}tt¦«}tt¦«}t|¦«D]n\}}|  |¦«sŒ|  |d¬¦«d}|| |¦«|| |¦«Œo||dœS)z+Get users and domains that use php selectorNF)Úshow_native_versionr)Údomains_by_php_versionÚusers_by_php_version)r Úis_cagefs_presentÚ _load_infor Úanyrr rr rÚsetrÚget_user_statusÚ get_versionÚupdateÚadd)ÚcagefsÚ php_vhostsÚphprFrGr.Ú user_domainsr>s rÚget_php_selector_usagerTVsb€å ‰XŒX€FØ × #Ò #Ñ %Ô %ð؈tðØ×ÒÑÔÐÐøÝ ððð؈tˆtðøøøõ Õ!Ñ#Ô#Õ%5Ñ%7Ô%7Ð8Ñ 9Ô 9ð؈tõ3Ñ4Ô4€JØÐ؈tå ‰.Œ.€CÝ(­Ñ-Ô-ÐÝ&¥sÑ+Ô+ÐÝ'¨ Ñ3Ô3ð0ð0шˆlØ×%Ò% dÑ+Ô+ð Ø à—/’/ $¸E�/ÑBÔBÀ1ÔEˆØ˜wÔ'×.Ò.¨|Ñ<Ô<Ð<ؘWÔ%×)Ò)¨$Ñ/Ô/Ð/Ð/ð#9Ø 4ð ð ðs¦;» A ÁA cób—t¦«}| d¬¦«}|€|S|dS)z7 Safely get native version, or None if not set F)ÚverboseNr)Ú ClSelectPhpÚget_native_version)rRÚvs rÚget_native_version_saferZ|s6€õ ‰-Œ-€CØ ×Ò uÐÑ-Ô-€AØ€yØˆØ ˆQŒ4€Kr cóJ—t¦« ¦«rdndS)z= Get state of PHP selector: without CageFS or normal Úwithout_cagefsÚnormal)rWÚwork_without_cagefsr&r rÚget_mode_of_php_selectorr_‡s%€õ +™}œ}×@Ò@ÑBÔBÐ PÐ Ð ÈÐPr cóN—t¦« ¦«dS)z- Get default version of PHP selector r)rWrMr&r rÚget_default_php_versionra�s€õ ‰=Œ=× $Ò $Ñ &Ô & qÔ )Ð)r N)*Ú __future__rrrÚ collectionsrÚ future.utilsrÚ cldetectlibrr Úcllimitsr r Ú cluserselectr ÚclselectrrWÚ clselectctlrrrÚtypingrrÚclselectdomainsrrrrrrrrr"r8rCrTrZr_rar&r rúrlsáðð&Ð%Ð%Ð%Ð%Ð%ØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø#Ð#Ð#Ð#Ð#Ð#Ø"Ð"Ð"Ð"Ð"Ð"à;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø,Ð,Ð,Ð,Ð,Ð,Ð,Ð,à&Ð&Ð&Ð&Ð&Ð&Ø-Ð-Ð-Ð-Ð-Ð-ððððððððððð "Ð!Ð!Ð!Ð!Ð!Ð!Ð!ð ðððððððððððððððððð;ð;ð;ð4ð4ð4ð "ð "ð "ð  ð  ð  ð#ð#ð#ðLðððQðQðQð*ð*ð*ð*ð*r