Hacked By AnonymousFox

Current Path : /opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/__pycache__/cluserextselect.cpython-311.pyc

�

m4�f�<���ddlmZddlmZddlmZddlZddlmZddlmZddl	m
Z
dd	lmZdd
l
mZmZGd�dee��ZdS)
�)�absolute_import)�print_function)�divisionN�)�ClExtSelect)�ClUserSelect)�ClSelectExcept)�clprint)�apply_for_at_least_one_user�	in_cagefsc��eZdZdZdd�Zdd�Zdd�Zd�Zd�Zd	�Z	dd�Z
d�Zdd
�Zd�Z
d�Zd�Zd�Zd�Zd�Zd�Zee��Zed���Zd�Zd�ZdS)�ClUserExtSelectzalt_php.ini�phpNc�\�tj|||��d|_g|_g|_dS�N)r�__init__�_alt_extensions�_user_extensions�
_conflicts)�self�item�exclude_pid_lists   �O/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/cluserextselect.pyrzClUserExtSelect.__init__s3����d�D�*:�;�;�;�#��� "��������c��|�|��|�|�|��d}|dkrtj|���t	td�t
|�||��������S)z�
        Returns enabled user extensions for a version as a tuple
        @param user: string
        @param version: string
        @return: tuple
        Nr�nativec�
�|dfS)NT�)�is r�<lambda>z9ClUserExtSelect.list_enabled_extensions.<locals>.<lambda>)s
��Q��I�r)�_check_user_in_cagefs�get_versionr	�UnableToGetExtensions�tuple�map�sorted�_get_enabled_extensions�r�user�versions   r�list_enabled_extensionsz'ClUserExtSelect.list_enabled_extensionss���	
�"�"�4�(�(�(��?��&�&�t�,�,�Q�/�G��h��� �6�w�?�?�?��S�-�-��4�/�/��g�>�>�?�?�A�A�B�B�	Brc��|�|��|�|�|��d}|dkrtj|���t	|�||����}t	|�|����}t	|�|����}||z}g}t|��D](}d}	||vrd}	n||vrd}	|�	||	f���)t|��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)r!r"r	r#�setr'�
_get_builtins�_get_all_extensionsr&�appendr$)
rr)r*�user_extensions�builtin_extensions�php_d_all_extensions�all_extensions�
extensions�ext�enableds
          r�list_all_extensionsz#ClUserExtSelect.list_all_extensions,s��	
�"�"�4�(�(�(��?��&�&�t�,�,�Q�/�G��h��� �6�w�?�?�?��d�:�:�4��I�I�J�J�� ��!3�!3�G�!<�!<�=�=��"�4�#;�#;�G�#D�#D�E�E��+�.B�B���
��.�)�)�	.�	.�C��G��(�(�(������'�'������s�G�n�-�-�-�-��Z� � � rc�l�t|j��dkr|�||��|jS)z�
        Returns list of enabled user extensions
        @param user: string
        @param version: string
        @return: list
        r)�lenr�_load_user_extensionsr(s   rr'z'ClUserExtSelect._get_enabled_extensionsGs9���t�$�%�%��*�*��&�&�t�W�5�5�5��$�$rc�R�|j�|�|��|_|jS)z�
        Returns list of all extensions for a version
        except compiled-in ones
        @param user: string
        @param version: string
        @return: list
        )r�_load_extensions_list)rr*s  rr/z#ClUserExtSelect._get_all_extensionsRs,����'�#'�#=�#=�g�#F�#F�D� ��#�#rc��|�|��}t|���t|����}|rtj||����dS)zi
        validation extensions name
        @param ext_list: list
        @param version: string
        )�ext_listr4N)r/r-�
differencer	�NoSuchExtension)rr?r*r4�bad_extensionss     r�_check_extensionsz!ClUserExtSelect._check_extensions^sd���1�1�'�:�:���X���1�1�#�n�2E�2E�F�F���	i� �0�.�Yg�h�h�h�h�	i�	irFc�@�|�||j|||���S)N)�	check_ext)�bulk_handle_extensions�enable_extensions)rr)r*r?rEs     r�bulk_enable_extensionsz&ClUserExtSelect.bulk_enable_extensionsis&���*�*�4��1G��RZ�fo�*�p�p�prc��t||j�|j�|����tjg|�Ri|��Sr)r�_clpwd�	get_names�get_uidr	�UnableToSaveData)rr)�func�args�kwargss     rrFz&ClUserExtSelect.bulk_handle_extensionsls^��*���K�!�!�$�+�"5�"5�d�";�";�<�<��+�
��	
�
�
��	
�
�	
rc�����|�|��|r|�||���|�||��}|�|��}|�|��\}}}	t|	�����|z}
|�|
���tj	|
���}|�
|���fd�||zD��}g�|D]f}�fd�|�|g||	��D��}
tj||
|��}|�
|����|
���g�D]0}|�|�|	|�����1|�|��}|�|d�|��dz|��|�|��|�|��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*c���g|]}|�v�|��	Srr��.0r6�ext_list_without_conflictss  �r�
<listcomp>z5ClUserExtSelect.enable_extensions.<locals>.<listcomp>�s.���<�<�<�c�� :�:�:��:�:�:rc���g|]}|�v�|��	Srr�rTr6�resolved_dependenciess  �rrVz5ClUserExtSelect.enable_extensions.<locals>.<listcomp>��2���=�=�=���&;�;�;��<�;�;r�
N)r!rC�_compose_user_ini_path�_compose_alt_path�_load_ini_contents�list�keys�_check_for_conflictsr�get_conflicts_info�_print_conflicts_info�_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?rE�
user_ini_path�alt_path�contentsr5�extensions_data�resulting_extensions�_conflicts_info�	extension�resolved�dependence_infor6rUrYs                @@rrGz!ClUserExtSelect.enable_extensionstsb����	
�"�"�4�(�(�(��	G��"�"�H�g�"�F�F�F��3�3�D�'�B�B�
��)�)�'�2�2��04�0G�0G�
�0V�0V�-��*�o�#�O�$8�$8�$:�$:�;�;�h�F��%)�%>�%>�?S�%T�%T�"�%�8�9M�9S�U�U���"�"�?�3�3�3�<�<�<�<�Z�(�%:�<�<�<�
� "��#�		3�		3�I�=�=�=�=�t�'A�'A�9�+�BJ�BQ�(S�(S�=�=�=�H�*�?�	�@H�@H�J�J�O�
�)�)�/�:�:�:�!�(�(��2�2�2�2�(�	9�	9�C��O�O��!�!�/�#�"6�7�7�
9�
9�
9�
9��)�)�(�3�3������$�)�)�H�%�%�d�*�M�	;�	;�	;����d�#�#�#����t�$�$�$�$�$rc�<�|�||j||��Sr)rF�#replace_extensions_with_dependenses�rr)r*r?s    r�bulk_replace_extensionsz'ClUserExtSelect.bulk_replace_extensions�s!���*�*�4��1Y�[b�dl�m�m�mrc��|�|||��\}}}|�|��|�|��|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
        )rzrfrc)rr)r*r?�extensions_list�dependencies_list�conflict_dependenciess       r�replace_extensionsz"ClUserExtSelect.replace_extensions�sW��
�(�(��w��A�A�	D��+�-B��%�%�&7�8�8�8��"�"�#8�9�9�9��rc�n���|�|��g�g}g}|�||��}|�|��}|�|��\}}	}
i}
|�|���tj|���}�fd�|D��}	|	D]U}�fd�|�|g||
��D��}||�|||��z}��	|���V�D]0}
|�	|�
|
|
�����1|�|��}|�|d�
|��dz|��|�|��|�|��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)
        c���g|]}|�v�|��	SrrrSs  �rrVzGClUserExtSelect.replace_extensions_with_dependenses.<locals>.<listcomp>�s$���S�S�S�c��8R�1R�1R�c�1R�1R�1Rrc���g|]}|�v�|��	SrrrXs  �rrVzGClUserExtSelect.replace_extensions_with_dependenses.<locals>.<listcomp>�rZrr[)r!r\r]r^rarrbrdrergrhrirjrkrlrmr_r`)rr)r*r?r~r}rnrorpr5rqrtrur6rUrYs              @@rrxz3ClUserExtSelect.replace_extensions_with_dependenses�s"����	
�"�"�4�(�(�(� "�� "�����3�3�D�'�B�B�
��)�)�'�2�2��04�0G�0G�
�0V�0V�-��*�o���%)�%>�%>�x�%H�%H�"� +� >�x�?Y�![�![��T�S�S�S�X�S�S�S�
�#�	3�	3�I�=�=�=�=�t�'A�'A�9�+�BJ�BQ�(S�(S�=�=�=�H�!2�D�4N�4N�y�OW�OW�5Y�5Y�!Y��
"�(�(��2�2�2�2�(�	9�	9�C��O�O��!�!�/�#�"6�7�7�
9�
9�
9�
9��)�)�(�3�3������$�)�)�H�%�%�d�*�M�	;�	;�	;����d�#�#�#����t�$�$�$��O�(�(�*�*�+�+�->�@U�U�Urc�<�|�||j||��Sr)rF�disable_extensionsrys    r�bulk_disable_extensionsz'ClUserExtSelect.bulk_disable_extensions�s ���*�*�4��1H�'�S[�\�\�\rc�D�|�|��|�||��}|�|��}|�|��\}}}t	|��D]�}	|	|vr�t	|������|	g��}
|�|	|
|��r>|
�t	|����stj
dd|	�d�d�����|�|	d����|D]5}||vr�|�|�
||�����6|�|d�|��dz|��|�|��|�|��dS)z�
        Removes extensions from user php.ini
        @param user: string
        @param version: string
        @param ext_list: list
        @return: None
        �text�WARNz left as dependency)�status�messageNr[)r!r\r]r^r-r`r@�_is_dependency�issubsetr
�
print_diag�poprgrhrjrkrlrm)rr)r*r?rnrorpr5rqr�rest_of_setr6s            rr�z"ClUserExtSelect.disable_extensions�s���	
�"�"�4�(�(�(��3�3�D�'�B�B�
��)�)�'�2�2��#�6�6�}�E�E�	��:����M�M�	,�	,�D��?�*�*���o�2�2�4�4�5�5�@�@�$��H�H�K��#�#�D�+�x�@�@�
�'�0�0��X���?�?�
��"��%����!� � �!�!�!�
�����d�+�+�+�+��	9�	9�C��/�)�)���O�O��!�!�/�#�"6�7�7�
9�
9�
9�
9�����$�)�)�H�%�%�d�*�M�	;�	;�	;����d�#�#�#����t�$�$�$�$�$rc��|stjd���tj||��}|�|||��}|S)z�
        Replaces extensions in user php.ini with default ones
        @param user: string
        @param version: string
        @return: list
        �Version)r	�
EmptyParamrr'r)rr)r*r?�datas     r�reset_extensionsz ClUserExtSelect.reset_extensions
sK���	7� �+�I�6�6�6��6�t�W�E�E���&�&�t�W�h�?�?���rc�*�d}g}g}|D]t}|�d��rd}|�|���/|r.|�d��rd}n|�|���_|�|���u|�|��|S)z�
        PHP ioncube extensions must be at the beginning of extensions list
        @param contents: list
        @return: list
        Fz;---ioncubeT�;---)�
startswithr0rg)rp�found�fixed_contents�stripped_contentsrs     rriz!ClUserExtSelect._move_ioncube_exts����������	+�	+�D����}�-�-�
����%�%�d�+�+�+���
��?�?�6�*�*��!�E�E�"�)�)�$�/�/�/���$�$�T�*�*�*�*����/�0�0�0��rc��g}g}i}d}d}d}	t|d��}|D�]9}|���}|�d��rd}d}|�|���F|�d��r+|�d��}	|	dkr�w|	}d}||vr|g||<��|rX|�d	��r|�d
��s��|�|��|�d
��rd}��|rW|rU|�d	��s|dkr��||vr|�|��||vr||�|����;|���n#ttf$rYnwxYw|||fS)zb
        Parses user ini file contents
        @param path: string
        @return: tuple
        FN�rz;>===Tr�z;- ��;z;<===)�open�rstripr�r0�strip�close�OSError�IOError)
�pathrpr5rq�
is_content�is_extension�ext_name�ini�line�tmp_ext_names
          rr^z"ClUserExtSelect._load_ini_contents1s������
����
�����-	��t�S�/�/�C��(
?�(
?���{�{�}�}���?�?�7�+�+�$?�#(�L�!%�J��O�O�D�)�)�)�)��_�_�V�,�,�?�#'�:�:�e�#4�#4�L�#�r�)�)� �+�H�#'�L���6�6�59�F���1�� �?����s�+�+�!�D�O�O�G�4L�4L�!� ��O�O�D�)�)�)����w�/�/�+�%*�
���	?�,�	?����s�+�+�!�t�r�z�z� ��z�1�1�"�)�)�(�3�3�3��?�2�2�'��1�8�8��>�>�>���I�I�K�K�K�K����!�	�	�	��D�	������_�4�4s�E!E0�0F�Fc��|�||��}|�|��}|j�|��dS)z�
        Loads user alternative extensions list for a version
        @param user: string
        @param version: string
        N)r\�_skim_over_extensionsrrg)rr)r*rnr5s     rr;z%ClUserExtSelect._load_user_extensionsnsI���3�3�D�'�B�B�
��/�/�
�>�>�
���$�$�Z�0�0�0�0�0rc��|jr>|j�|��}d|�dd��z}|dz|zdzSt	|j�|����}t
��rdn-tj�	|j
|dd�|��}tj�	|d	d
|j�d�d|j�|�dd����|j��}|S)
z�
        Composes user ini file path
        @param user: string
        @param version: string
        @return: string
        zphp%s�.r�z/.cl.selector/alt_z.ini�/���N�etczcl.z.dzalt-)
�without_cagefsrJ�get_homedir�replace�strrLr�osr�rk�CAGEFS_PATH�_item�USER_INI)rr)r*�homedir�php_dir�uid�user_prefixr�s        rr\z&ClUserExtSelect._compose_user_ini_pathxs�����	E��k�-�-�d�3�3�G������R� 8� 8�8�G��1�1�G�;�f�D�D��$�+�%�%�d�+�+�,�,��&�[�[�\�c�c�b�g�l�l�4�;K�S�QS�QT�QT�X�W[�.\�.\���w�|�|�K�!�E�)-����5�5�*.�*�*�g�o�o�c�2�6N�6N�6N�O� �M�	+�+��
�r)rNr)F)�__name__�
__module__�__qualname__r�rr+r8r'r/rCrHrFrGrzrrxr�r�r�ri�staticmethodr^r;r\rrrrrs��������H�����
B�
B�
B�
B�!�!�!�!�6	%�	%�	%�
$�
$�
$�	i�	i�	i�q�q�q�q�
�
�
�-%�-%�-%�-%�^n�n�n����"*V�*V�*V�X]�]�]�"%�"%�"%�H������.%��%6�7�7���:5�:5��\�:5�x1�1�1�����rr)�
__future__rrrr��clextselectr�cluserselectr�clselectexceptr	�
clselectprintr
�utilsrrrrrr�<module>r�s���'�&�&�&�&�&�%�%�%�%�%�%�������	�	�	�	�$�$�$�$�$�$�&�&�&�&�&�&�*�*�*�*�*�*�"�"�"�"�"�"�9�9�9�9�9�9�9�9�v�v�v�v�v�l�K�v�v�v�v�vr

Hacked By AnonymousFox1.0, Coded By AnonymousFox