9Mj9 d Z ddlZddlZddlZddlZddlZddlmZ ddlm Z ddl mZ ddlm Z ddlmZmZ dd lmZmZmZ ej e Zd ZdZ ddlmZmZmZ dd lm Z n# e!$ r d Zd Zd ZdZ Y nw xY wde"de"fdZ#de"de"de"de e" fdZ$de"de"ddfdZ%d"de e& de'de"de"fdZ( d#de"de'de'de"de'de e& de"ddfd Z)de"de"ddfd!Z*dS )$z Website isolation support for X-Ray INI files. This module provides functions to manage xray.ini files in per-website directories when CageFS website isolation is enabled. N)iglob)Optional) disable_quota)docroot)user_contextcagefsctl_get_prefix )is_excluded_path$get_domain_php_version_from_selectorINI_USER_LOCATIONSi i )(is_website_isolation_allowed_server_wideis_isolation_enabled#get_websites_with_enabled_isolation)get_website_idc dS NF r ]/opt/cloudlinux/venv/lib64/python3.11/site-packages/xray/reconfiguration/website_isolation.pyr r = ur c dS r r users r r r @ r r c g S Nr r s r r r C s r r domainc D t sdS |t | v S r )r r )r r s r is_per_website_php_selectorr I s) 355 u8>>>>r website_idphp_ver_dirreturnc F t | }|dS d| d| d| d| d S )a Build path to xray.ini in per-website directory. :param user: Username :param website_id: Website ID hash :param php_ver_dir: PHP version directory (e.g., 'alt-php80') :return: Full path to xray.ini or None if cagefs prefix not available Nz/var/cagefs//z/etc/cl.php.d/z /xray.ini)r )r r r prefixs r _get_per_website_ini_pathr% O sD "$ ' 'F ~tZ&ZZ4ZZzZZKZZZZr c t | | sdS i }d}d}t D ]}t |d D ]}t | r |d | }|j | k r1|j }|j }n+# t $ r t d| Y gw xY wt j |d }t j | s t j |t j t j z t j z } nw# t$ $ rj} | j t&