fj dZddlZddlZddlZddlZddlmZddlmZej e Z dZ dZ edd fZed d fZd ed efdZdeded eefdZdS)z< Shared constants and helpers for xray.ini file management. N)Optional)cagefsctl_get_prefix)php44php51php52php53zphp\d+-imunifyz php-internal)z /opt/alt/php[0-9][0-9]/link/confz+/opt/cpanel/ea-php[0-9][0-9]/root/etc/php.dz$/opt/plesk/php/[0-9].[0-9]/etc/php.dz'/usr/local/php[0-9][0-9]/lib/php.conf.dzM/usr/share/cagefs/.cpanel.multiphp/opt/cpanel/ea-php[0-9][0-9]/root/etc/php.dzA/usr/share/cagefs-skeleton/usr/local/php[0-9][0-9]/lib/php.conf.dz./var/cagefs/*/*/etc/cl.php.d/alt-php[0-9][0-9]c\tj|ddSN/pwdgetpwnamsplitpaths T/opt/cloudlinux/venv/lib64/python3.11/site-packages/xray/reconfiguration/xray_ini.pyr.#,tzz#q'9::)ruserz0/var/cagefs/*/*/etc/cl.php.d/*/alt-php[0-9][0-9]c\tj|ddSr r rs rrr7rrdir_pathreturncJtD]}tj||rdSdS)z1 Check if given path is in exclude list. TF)EXCLUDE_DIR_PATHSresearch)rpatterns ris_excluded_pathr <s8% 9Wh ' ' 44  5rr website_idcvt|}|dSd|d|d|d} tj|sdStj|}t jd|}|rd|dSn3#t$r&}t d ||Yd}~nd}~wwxYwdS) a Get the PHP version configured for a specific domain/website from cl.selector symlinks. Reads the 'php' symlink in /var/cagefs/{prefix}/{user}/etc/cl.selector/{website_id}/ and extracts the alt-phpXX version from the target path. :param user: Username :param website_id: Website ID hash (e.g., 'd498d1a80d63f8e9') :return: PHP version directory name (e.g., 'alt-php80') or None if not found/native Nz /var/cagefs/r z/etc/cl.selector/z/phpz/opt/alt/php(\d{2})/zalt-phpz&Failed to read selector symlink %s: %s) rosrislinkreadlinkrrgroupOSErrorloggerdebug)rr!prefix selector_pathtargetmatches r$get_domain_php_version_from_selectorr0Fs"$ ' 'F ~tS6SSDSS:SSSM Qw~~m,, 4]++ 16::  .-U[[^^-- - . QQQ =}aPPPPPPPPQ 4sBAB B6B11B6)__doc__loggingr$rrtypingrxray.internal.utilsr getLogger__name__r)r INI_LOCATIONSdictINI_USER_LOCATIONS$INI_USER_LOCATIONS_WEBSITE_ISOLATIONstrboolr r0rrr>s" 444444  8 $ $  D = : :    D ? : :   ($stsQT r