HEX
Server: LiteSpeed
System: Linux standart9.isimtescil.net 3.10.0-962.3.2.lve1.5.26.7.el7.x86_64 #1 SMP Wed Oct 2 07:53:12 EDT 2019 x86_64
User: karalev (5310)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/cluserextselect.cpython-37.pyc
B

���^K4�@srddlmZddlmZddlmZddlZddlmZddlmZddl	m
Z
dd	lmZGd
d�dee�Z
dS)�)�absolute_import)�print_function)�divisionN�)�ClExtSelect)�ClUserSelect)�ClSelectExcept)�clprintc@s�eZdZdZd#dd�Zd$dd�Zd%dd	�Zd
d�Zdd
�Zdd�Z	d&dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zee�Zdd�Zee�Zdd �Zd!d"�ZdS)'�ClUserExtSelectzalt_php.ini�phpNcCs$t�|||�d|_g|_g|_dS)N)r�__init__�_alt_extensions�_user_extensions�
_conflicts)�self�item�exclude_pid_list�r�I/opt/alt/python37/lib/python3.7/site-packages/clselect/cluserextselect.pyrszClUserExtSelect.__init__cCsP|�|�|dkr |�|�d}|dkr2t�|��ttdd�t|�||����S)z�
        Returns enabled user extensions for a version as a tuple
        @param user: string
        @param version: string
        @return: tuple
        Nr�nativecSs|dfS)NTr)�irrr�<lambda>(�z9ClUserExtSelect.list_enabled_extensions.<locals>.<lambda>)�_check_user_in_cagefs�get_versionr�UnableToGetExtensions�tuple�map�sorted�_get_enabled_extensions)r�user�versionrrr�list_enabled_extensionss


z'ClUserExtSelect.list_enabled_extensionscCs�|�|�|dkr |�|�d}|dkr2t�|��|�||�}|�|�}g}x.t|�D]"}d}||krjd}|�||f�qVWt|�S)z�
        Returns as a tuple all user extensions for a version,
        marking enabled and disabled ones
        @param user: string
        @param version: string
        @return: tuple
        NrrFT)	rrrrr�_get_all_extensionsr�appendr)rr r!Zuser_extensions�all_extensions�
extensions�ext�enabledrrr�list_all_extensions+s


z#ClUserExtSelect.list_all_extensionscCs t|j�dkr|�||�|jS)z�
        Returns list of enabled user extensions
        @param user: string
        @param version: string
        @return: list
        r)�lenr�_load_user_extensions)rr r!rrrrBsz'ClUserExtSelect._get_enabled_extensionscCs|jdkr|�|�|_|jS)z�
        Returns list of all extensions for a version
        @param user: string
        @param version: string
        @return: list
        N)r
�_load_extensions_list)rr!rrrr#Ms
z#ClUserExtSelect._get_all_extensionscCs2|�|�}t|��t|��}|r.tj||d��dS)zi
        validation extensions name
        @param ext_list: list
        @param version: string
        )�ext_listr%N)r#�set�
differencer�NoSuchExtension)rr-r!r%Zbad_extensionsrrr�_check_extensionsXs
z!ClUserExtSelect._check_extensionsFc	s:|�|�|r|j||d�|�||�}|�|�}|�|�\}}}	t|	���|}
|�|
��t�	|
��}|�
|��fdd�||D�}g�xP|D]H}tt�fdd�|�|g||	���}
t�
||
|�}|�|���|
�q�Wx �D]}|�|�|	|��q�W|�|�}|�|d�|�d|�|�|�|�|�dS)z�
        Adds extensions to user php.ini
        @param user: string
        @param version: string
        @param ext_list: list
        @param check_ext: bool
        @return: None
        )r-r!csg|]}|�kr|�qSrr)�.0r')�ext_datarr�
<listcomp>vsz5ClUserExtSelect.enable_extensions.<locals>.<listcomp>cs|�kS)Nr)r)�resolved_dependenciesrrryrz3ClUserExtSelect.enable_extensions.<locals>.<lambda>�
N)rr1�_compose_user_ini_path�_compose_alt_path�_load_ini_contents�list�keys�_check_for_conflictsr�get_conflicts_info�_print_conflicts_info�filter�_include_dependencies�get_dependencies_list�_print_dependencies_info�extend�_smooth_data�_move_ioncube_ext�_write_to_file�join�_backup_settings�_reload_processes)rr r!r-Z	check_ext�
user_ini_path�alt_path�contentsr&�extensions_dataZresulting_extensionsZ_conflicts_infor'�resolvedZdependence_infor)r3r5r�enable_extensionscs6	








z!ClUserExtSelect.enable_extensionscCs,|�|||�\}}}|�|�|�|�|S)a
        (deprecated)
        Replaces extensions in user php.ini with supplied ones
        and print information about dependences and conflicts for old php selector
        @param user: string
        @param version: string
        @param ext_list: list
        @return: list
        )�#replace_extensions_with_dependensesrBr>)rr r!r-Zextensions_list�dependencies_list�conflict_dependenciesrrr�replace_extensions�s

z"ClUserExtSelect.replace_extensionsc
	s|�|�g�g}g}|�||�}|�|�}|�|�\}}	}
i}
|�|��t�|��}�fdd�|D�}	xJ|	D]B}tt�fdd�|�	|g||
���}||�
|||�}��|�qnWx �D]}|�|�|
|��q�W|�
|�}|�|d�|�d|�|�|�|�|�t|
���||fS)a
        Replaces extensions in user php.ini with supplied ones
        @param user: string
        @param version: string
        @param ext_list: list
        @return: extensions_list, dependencies_list, conflict_dependencieslist: (list, list, list)
        csg|]}|�kr|�qSrr)r2r')r3rrr4�szGClUserExtSelect.replace_extensions_with_dependenses.<locals>.<listcomp>cs|�kS)Nr)r)r5rrr�rzEClUserExtSelect.replace_extensions_with_dependenses.<locals>.<lambda>r6)rr7r8r9r<rr=r:r?r@rArCrDrErFrGrHrIr;)
rr r!r-rRrQrJrKrLr&rMr'rNr)r3r5rrP�s4







z3ClUserExtSelect.replace_extensions_with_dependensescCs�|�|�|�||�}|�|�}|�|�\}}}xpt|�D]d}	|	|krHq:t|����|	g�}
|�|	|
|�r�|
�t|��s�t	�
ddd|	fd��q:|�|	d�q:Wx*|D]"}||kr�q�|�|�
||��q�W|�|d�|�d|�|�|�|�|�dS)z�
        Removes extensions from user php.ini
        @param user: string
        @param version: string
        @param ext_list: list
        @return: None
        �text�WARNz%s left as dependency)�status�messageNr6)rr7r8r9r.r;r/�_is_dependency�issubsetr	�
print_diag�poprCrDrFrGrHrI)rr r!r-rJrKrLr&rMrZrest_of_setr'rrr�disable_extensions�s4



z"ClUserExtSelect.disable_extensionscCs(|st�d��t�||�}|�|||�S)z�
        Replaces extensions in user php.ini with default ones
        @param user: string
        @param version: string
        @return: list
        �Version)r�
EmptyParamrrrS)rr r!r-rrr�reset_extensions�s
z ClUserExtSelect.reset_extensionscCsld}g}g}xP|D]H}|�d�r0d}|�|�q|rP|�d�rDd}n|�|�q|�|�qW|�|�|S)z�
        PHP ioncube extensions must be at the beginning of extensions list
        @param contents: list
        @return: list
        Fz;---ioncubeTz;---)�
startswithr$rC)rL�foundZfixed_contentsZstripped_contentsrrrrrE�s 





z!ClUserExtSelect._move_ioncube_extc
	Cs*g}g}i}d}d}y�t|d�}x�|D]�}|��}|�d�rLd}|�|�q&|�d�r�|�d�}|dkrjq&|}	d}|	|kr�|g||	<q&|r�|�d�r�|�d	�s�q&|�|�|�d	�r�d}q&|r&|�d�s&|dkr�q&|	|kr�|�|	�||	�|�d}q&W|��Wnttfk
�rYnX|||fS)
zb
        Parses user ini file contents
        @param path: string
        @return: tuple
        F�rz;>===Tz;---z;- ��;z;<===)�open�rstripr`r$�strip�close�OSError�IOError)
�pathrLr&rMZ
is_contentZis_extension�ini�lineZtmp_ext_name�ext_namerrrr9sJ







z"ClUserExtSelect._load_ini_contentscCs&|�||�}|�|�}|j�|�dS)z�
        Loads user alternative extensions list for a version
        @param user: string
        @param version: string
        N)r7�_skim_over_extensionsrrC)rr r!rJr&rrrr+@s
z%ClUserExtSelect._load_user_extensionsc
Cs�|jr2|j�|�}d|�dd�}|d|dSt|j�|��}tj�|j	|dd�|dd	|j
fd
|j
|�dd�f|j�S)z�
        Composes user ini file path
        @param user: string
        @param version: string
        @return: string
        zphp%s�.rcz/.cl.selector/alt_z.ini���N�etczcl.%s.dzalt-%s%s)�without_cagefs�_clpwd�get_homedir�replace�str�get_uid�osrkrG�CAGEFS_PATH�_item�USER_INI)rr r!�homedirZphp_dir�uidrrrr7Js

z&ClUserExtSelect._compose_user_ini_path)rN)N)N)F)�__name__�
__module__�__qualname__r|rr"r)rr#r1rOrSrPr\r_rE�staticmethodr9r+r7rrrrr
s$



%$$8
r
)�
__future__rrrry�clextselectr�cluserselectr�clselectexceptr�
clselectprintr	r
rrrr�<module>s