https://t.me/AnonymousX5
Server : Apache
System : Linux cvar2.toservers.com 3.10.0-962.3.2.lve1.5.73.el7.x86_64 #1 SMP Wed Aug 24 21:31:23 UTC 2022 x86_64
User : njnconst ( 1116)
PHP Version : 8.4.18
Disable Function : NONE
Directory :  /opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/clselect.cpython-37.pyc
B

���b�R�@s�ddlmZddlmZddlmZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Zd	d
lmZmZd	dlmZGdd
�d
e�ZdS)�)�absolute_import)�print_function)�divisionN)�glob)�map)�FormattedException)�configparser�)�ClSelectExcept�BaseClSelectException)�clprintc@speZdZdZdZdZdZdZdZdZ	dZ
e
d	Ze
d
Ze
dd��Ze
d
d��ZdOdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdPdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�ZdQd)d*�Zd+d,�ZdRd.d/�Zd0d1�Ze
e�Zd2d3�Z e
e �Z d4d5�Z!e
e!�Z!dSd7d8�Z"d9d:�Z#d;d<�Z$d=d>�Z%d?d@�Z&dTdAdB�Z'dUdCdD�Z(dEdF�Z)dVdGdH�Z*dIdJ�Z+dWdKdL�Z,dXdMdN�Z-d-S)Y�ClSelectz/etc/cl.selector/selector.confz/etc/cl.selector/defaults.cfgz/usr/bin/phpz/etc/cl.selector/native.confz/etc/cl.selector/user.confz"/etc/cl.selector/php.extensions.d/z/usr/sbin/cagefsctlz/var/lvez
/php%s.datz/php_native_ver.datcCs`y*dtjkrtj�d�ddlm}m}Wntk
rFtd��YnX|�s\|�s\td��dS)Nz/usr/share/cagefsr)�!multiphp_system_default_is_ea_php�selector_modules_must_be_usedzCageFS not installed.zesystem default PHP version is alt-php. PHP Selector is disabled. Use cPanel MultiPHP manager instead.)�sys�path�append�	cagefsctlrr�ImportErrorr)rr�r�B/opt/alt/python37/lib/python3.7/site-packages/clselect/clselect.py�%check_multiphp_system_default_version's
z.ClSelect.check_multiphp_system_default_versioncCstj�tj�S)N)�osr�existsr
�	USER_CONFrrrr�work_without_cagefs3szClSelect.work_without_cagefs�phpcCs@||_|��|_i|_i|_t�|_d|_t�	�|_
|��dS)N)�_item�_get_default_config_handler�_dh�_selector_contents�_native_contents�set�_hidden_extensions�_native_versionr
rZwithout_cagefs�_load_config_files)�self�itemrrr�__init__7s

zClSelect.__init__cCsP|�d�t�|�d��f|jt��fg}x"|D]\}}tj�|�rDq.|�q.WdS)N�cli)�_get_native_pathr
ZNativeNotInstalled�	_CAGFSCTLZMissingCagefsPackagerrr)r&Z	utilitiesr�errorrrr�check_requirementsAszClSelect.check_requirementscCs,x&ttj�|jd��D]}|�|�qWdS)Nz*.cfg)rrr�join�CONFIGS_DIR�_load_config_file)r&�filenamerrrr%MszClSelect._load_config_filesc
Cs�tjddd�}y|�|�Wn:tjk
rV}ztj|dt|�d��Wdd}~XYnXy|j�|�	dd��
d��Wntjtjfk
r�YnXdS)NF)�
interpolation�strictzConfig is malformed, error: %s)�message�
extensionsZhide_extensions�,)
�ConfigParser�SafeConfigParser�read�Errorr
ZFileProcessError�strr#�update�get�split�NoSectionError�
NoOptionError)r&�filepath�dh�errrr0Qs$zClSelect._load_config_filec	Csl|��}g}xVt|���D]F}y*|�|||d||d|jf�Wqtk
r^wYqXqWt|�S)zM
        Returns alternatives summary as tuple
        :rtype: tuple
        �version�data)�get_all_alternatives_data�sorted�keysrr�KeyError�tuple)r&�alternativesZlist_of_alternatives�altrrr�list_alternatives`s
zClSelect.list_alternativesc	Cs6|js0y|��Wntjtjfk
r.iSX|jS)a�
        Returns dict of all selector config contents.
        If no data loads them
        :return:
        {'4.4': {'version': '4.4.9', 'data': {'lsphp': '/opt/alt/php44/usr/bin/lsphp',
                                              'php.ini': '/opt/alt/php44/etc/php.ini',
                                              'php': '/opt/alt/php44/usr/bin/php-cgi',
                                              'php-cli': '/opt/alt/php44/usr/bin/php'}}}
        :rtype: dict
        )r �_load_alternatives_configr
�ConfigNotFound�WrongConfigFormat)r&rrrrFrsz"ClSelect.get_all_alternatives_datacCs@|js|��y||j|iStk
r:t�|��YnXdS)z�
        Returns selector config contents of certain version as dict.
        If no data loads them
        @param version: string, selector version
        @return: dict
        N)r rNrIr
�NoSuchAlternativeVersion)r&rDrrr�get_alternatives_data�szClSelect.get_alternatives_dataFc	Cs^|��}y0|j�d|j�}|||d||d|jfStjtfk
rX|�|�SXdS)z/
        Gets default selector version
        �versionsrDrEN)rFrr=rr7r?rI�_compose_native_info)r&�show_native_versionrKrDrrr�get_version�s
zClSelect.get_versioncCsF|��}|�||�|�|jd|j|j|f�}|�d�|�|j�dS)z/
        Sets default selector version
        )rS�
N)rF�_check_alternative�_process_ini_file�
DEFAULTS_PATH�_add_or_change_optionr�_write_to_filer.)r&rDrK�defaults_contentsrrr�set_version�szClSelect.set_versioncCsF|��}|�||�|�|j|j|f|jd�}|�d�|�|j�dS)z5
        Removes disabled state from version
        �staterWN)rFrXrYrZr�_remove_optionr\r.)r&rDrKr]rrr�enable_version�szClSelect.enable_versioncCsF|��}|�||�|�|j|j|f|jd�}|�d�|�|j�dS)z-
        Marks a vesrion as disabled
        )r_�disabledrWN)rFrXrYrZrr[r\r.)r&rDrKr]rrr�disable_version�szClSelect.disable_versioncCs|j�d|j|fd�S)z�
        Method that allows you to check if some version is enabled in config.
        E.g. is_version_enabled('5.4') -> True
        :rtype: bool
        z%s%sr_)r�
has_optionr)r&rDrrr�is_version_enabled�szClSelect.is_version_enabledc
	CsF|��}|�|�}dddd�i}t|���dg}x:|D]2}||krLi||<|�|�||d<d||d<q8Wy|j�d|j�}Wn tj	tj
fk
r�d}YnXyd||d<Wntk
r�t�
|��YnX|�d�||d<|�d�|�|d�x>tt|��D].}||}	|	||	d||	dff||<�qWt|�S)	zl
        Returns state of alternatives
        @return: tuple[version, tuple[isEnabled, isDefault]]
        �nativeTF)�enabled�defaultrgrhrSr)rFrTrGrHrerr=rr7r?r@rIr
rQ�pop�remover�range�lenrJ)
r&rUrKZnative_info�summaryZalt_versionsrD�default_version�idx�vrrr�get_summary�s4




zClSelect.get_summaryc	
Csy�t|j�}x�|D]�}|��}|dkr(q|��\}}}}|j|krDq||jkrXi|j|<||j|d<d|j|kr�i|j|d<||j|d|<qW|js�tjddd��Wn^tt	fk
r�}ztjd|j|fdd��Wdd}~XYn"t
k
�rt�|j��YnXdS)a
        Parses selector config file and fills an instance config dict. Example:
        {'4.4': {'version': '4.4.9', 'data': {'lsphp': '/opt/alt/php44/usr/bin/lsphp',
                                              'php.ini': '/opt/alt/php44/etc/php.ini',
                                              'php': '/opt/alt/php44/usr/bin/php-cgi',
                                              'php-cli': '/opt/alt/php44/usr/bin/php'}}}
        :raises ClSelectExcept.ConfigNotFound:
        :raises ClSelectExcept.WrongConfigFormat:
        �rDrENzalt-php packages not found)r4zCannot read %s: %s. Native used)�open�CONFIG_PATH�stripr>rr r
rO�OSError�IOError�
ValueErrorrP)	r&�f�lineZ
stripped_liner'Z
short_versionZlong_versionZ	item_pathrCrrrrN�s0





z"ClSelect._load_alternatives_configNcCs4tjddd�}t|_|r$|�|�n|�|j�|S)z:
        Gets ConfigParser handler for future use
        NF)r2r3)r7r;�optionxformr9rZ)r&rrBrrrrsz$ClSelect._get_default_config_handlercCs|dkr||krt�|��dS)Nrf)r
rQ)rDrKrrrrX$szClSelect._check_alternativecCs dd�dgt|��}||S)z�
        Gets section header data tuple and returns ini section header string
        @param section_info: tuple
        @return: string
        z[%s]rrz%s)r.rl)�section_infoZsection_fmtrrr�_make_section_header)szClSelect._make_section_headercCs0ttdd�|��}|r"|ddkr,|�d�|S)zN
        Removes empty lines from list and appends newline if missing
        cSs|dkS)Nrrr)�irrr�<lambda>7�z'ClSelect._smooth_data.<locals>.<lambda>���rW)�list�filterr)rErrr�_smooth_data3s
zClSelect._smooth_dataTc	Cs�g}g}g}	d}
d}d}|�|�}
y�t|�}x�|D]�}|��}|�d�r�d}
d|krXd}|
|krdd}t|�dkr~|�|�g}|�|||	||��|g}	q2|
r�|	�|�q2|�|�q2W|�|||	||��|��Wntt	fk
r�YnX|�sd|
k�rdd|j
dg}|�|�|}|�s�y|�d�}Wntj
k
�rJYnX|d	k�rz|�|||
d
d�|�g||��nB|dk�r�|�|�|�|||
g||��n|�|||
g||��|S)
z�
        Parses ini file by sections,
        calls supplied callable to modify section is question,
        returns file as list of strings
        F�[Tz
[versions]rz%s = nativerrrfZdisable_extentionsz
modules = r6Zenable_extentions)r}rsru�
startswithrl�extendr�closervrwr�
_get_builtinsr
�UnableToGetExtensionsr.)r&rr|�functionrE�trace�action�contentsZno_section_contents�sectionZ
in_section�foundZhas_default�section_headerryrzrhZbuild_inrrrrY=s\





$

zClSelect._process_ini_filecCsLd|j}|��}y||d|}Wn tk
rF|jdd�}YnX|S)z�
        Retrives path to php binary for supplied version
        :param version: php version to retrive path
        :return: path to php binary. If alternative version not found native php binary path returned
        z%s-clirEr))�suffix)rrFrIr*)r&rDr'rKrrrr�_get_php_binary_pathts
zClSelect._get_php_binary_pathcCs:|��}d|�d�i}x|��D]}|�|�||<q W|S)a
        Retrives paths to php binary for all versions
        :return: Dictionary version -> path. Example:
            { '5.2': '/opt/alt/php52/usr/bin/php',
              '5.3': '/opt/alt/php53/usr/bin/php',
              'native': '/usr/bin/php'
            }
        rf)rFr�rH)r&rKZ
paths_dictrDrrr�get_all_php_binaries_paths�s
	z#ClSelect.get_all_php_binaries_pathscCs$t|j|d�}|��}|��|S)z�
        Retrives contents of cache file for supplied php version
        :param version: PHP version to read file
        :return: file contents
        �r)rs�CACHEFILE_PATTERNr9r�)r&rDry�outputrrr�_read_php_cache_file�szClSelect._read_php_cache_filec		Cs�g}y|�|�}Wn"ttfk
r4t�|��YnX|�d�}t�d�}|d|dkrZ|p`t|��}xH|�	d�D]:}|�
|�s�qrd�t�	d|����}||j
krr|�|�qrW|S)z1
        Gets php compiled-in extensions
        z[Zendz\wNrrW�_z\s+)r�rvrwr
r��find�re�compilerlr>�matchr.�lowerr#r)	r&rD�builtinsr�Z
zend_indexZmodule_patternZstripped_output�ext�modulerrrr��s



zClSelect._get_builtinscsB|�|�}t|�dks"||dkr&|S|�tt�fdd�|���S)z�
        Adds 'modules' option to section or extends it
        @param section_info: tuple (item and version)
        @param section: list
        @param data: string
        @return: list
        rcs|���S)N)r�)r~)rErrr�r�z)ClSelect._remove_option.<locals>.<lambda>)r}rlr�r�r�)r&r|r�rEr�r�r)rErr`�s

zClSelect._remove_optionc	Cs�|�|�}t|�dks"||dkr&|Sd}x,tt|��D]}||�|d�r8|}Pq8Wd|}|rn|||<n
|�|�|�|�S)z�
        Adds 'modules' option to section or extends it
        @param section_info: tuple
        @param section: list
        @param data: tuple
        @return: list
        rNz%s = %s)r}rlrkr�rr�)	r&r|r�rEr�r�Zoidxro�optionrrrr[�s


zClSelect._add_or_change_optionc
Cs\y$t|d�}|�d|�|��Wn2ttfk
rV}zt�||��Wdd}~XYnXdS)z$
        Saves data to file
        �wz%s
N)rs�writer�rvrwr
ZUnableToSaveData)r&Z
file_contents�	file_pathryrCrrrr\�s
zClSelect._write_to_filecCs~dddd�}|j}|r0||kr0d|j||f}|jsB|�|j�||jkrr|j|}tj�|�rrtj�|�sr|S|j|jS)z5
        Returns path for native interpreter
        z-cliz.iniz-fpm)r)Zini�fpmz%s%s)rr!�_load_native_contentsrr�isfile�islink)r&r��suffixesr'rrrrr*�s

zClSelect._get_native_pathc	Cs�y�t|j�}xR|D]J}|�d�r"q||kr,qd|kr6qttdd�|�d���\}}||j|<qW||jkrv|j|j|<|��Wn$t	t
fk
r�|j|j|<YnXdS)z�
        Parses native.conf file and loads it as dict, for example:
        {'php-fpm': '/usr/local/sbin/php-fpm', 'php.ini': '/usr/local/lib/php.ini', 'php': '/usr/bin/php', 'php-cli': '/usr/bin/php'}
        �#�=cSs|��S)N)ru)�xrrrrr�z0ClSelect._load_native_contents.<locals>.<lambda>N)rs�NATIVE_CONFr�r�rr>r!�DEFAULT_PHP_PATHr�rvrw)r&�valueryrzr'rrrrr��s 



zClSelect._load_native_contentscCsR|sdd|��fS|jdd�}|rDd|dfd|df|��fSdd|��fS)NrfF)�verboseznative (%s)rr	)r*�get_native_version)r&Zshow_versionZnative_versionrrrrT
s
zClSelect._compose_native_infoc

Cs�|jr|jSt�d�}y t|jd�}|��}|��Wn@ttfk
rv}z|rft	�
ddt|�d��dSd}~XYnXxF|��D]:}|�
|�}|r�|�d�|�d�}}	||	f|_||	fSq�WdS)Nz(PHP\s+(?P<full>(?P<short>\d+\.\d+)\.\d+)r��text�ERROR)�statusr4�short�full)r$r�r�rs�CACHEFILE_NATIVE_VER_PATTERNr9r�rvrwrZ
print_diagr;�
splitlinesr��group)
r&r�Zversion_patternryrErCrz�mr�r�rrrr�s$


zClSelect.get_native_version)r)F)F)N)TN)T)T)N)F)T).�__name__�
__module__�__qualname__rtrZr�r�rr/r+Z
CACHEFILE_DIRr�r��staticmethodrrr(r-r%r0rMrFrRrVr^rarcrerqrNrrXr}r�rYr�r�r�r�r`r[r\r*r�rTr�rrrrr
sZ


	
!$

7




r
)�
__future__rrrrr�rrr�r�clcommonrZfuture.movesrr7�clselectexceptr
r�
clselectprintr�objectr
rrrr�<module>s

https://t.me/AnonymousX5 - 2025