Edit File: cluserextselect.cpython-311.pyc
� ����=�9e�9����������������������������d�dl�mZ�d�dl�mZ�d�dl�mZ�d�dlZddlmZ�ddlmZ�ddl m Z �dd lmZ�dd l mZ��G�d��dee������������ZdS�) �����)�absolute_import)�print_function)�divisionN����)�ClExtSelect)�ClUserSelect)�ClSelectExcept)�clprint)�apply_for_at_least_one_userc�������������������������e�Zd�ZdZdd�Zdd�Zdd�Zd��Zd��Zd ��Z dd�Z d��Zdd �Zd��Z d��Zd��Zd��Zd��Zd��Zd��Z�ee������������Zed����������������Zd��Zd��ZdS�)�ClUserExtSelectzalt_php.ini�phpNc������������������\�����t����������j��������|�||�������������d�|�_��������g�|�_��������g�|�_��������d�S��N)r����__init__�_alt_extensions�_user_extensions� _conflicts)�self�item�exclude_pid_lists��� �O/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/cluserextselect.pyr���zClUserExtSelect.__init__���s3��������d�D�*:�;�;�;�#��� "������������c����������������������|�����������������������|�������������|�|����������������������|������������d���������}|dk����rt����������j��������|�������������t ����������t����������d��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_extensions���s�������� �"�"�4�(�(�(��?��&�&�t�,�,�Q�/�G��h��� �6�w�?�?�?��S�-�-��4�/�/��g�>�>�?�?�A��A��B��B�� Br���c����������������������|�����������������������|�������������|�|����������������������|������������d���������}|dk����rt����������j��������|�������������t ����������|����������������������||������������������������}t ����������|����������������������|������������������������}t ����������|����������������������|������������������������}||z��}g�}t����������|������������D�](}d} ||v�rd} n||v�rd} |� ��������������������|| 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 Nr���r���FT)r ���r!���r ���r"����setr&���� _get_builtins�_get_all_extensionsr%����appendr#���) r���r(���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� � � r���c������������������l�����t����������|�j��������������������dk����r|����������������������||�������������|�j��������S�)z� Returns list of enabled user extensions @param user: string @param version: string @return: list r���)�lenr����_load_user_extensionsr'���s��� r���r&���z'ClUserExtSelect._get_enabled_extensionsG���s9��������t�$�%�%��*�*��&�&�t�W�5�5�5��$�$r���c������������������R�����|�j����������|����������������������|������������|�_���������|�j���������S�)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)r���r)���s��� r���r.���z#ClUserExtSelect._get_all_extensionsR���s,���������'�#'�#=�#=�g�#F�#F�D� ��#�#r���c�����������������������|�����������������������|������������}t����������|���������������������������������t����������|������������������������}|rt����������j��������||��������������dS�)zi validation extensions name @param ext_list: list @param version: string )�ext_listr3���N)r.���r,���� differencer ����NoSuchExtension)r���r>���r)���r3����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�� ir���Fc������������������@�����|�����������������������||�j��������|||�������������S�)N)� check_ext)�bulk_handle_extensions�enable_extensions)r���r(���r)���r>���rD���s��� r����bulk_enable_extensionsz&ClUserExtSelect.bulk_enable_extensionsi���s&�������*�*�4��1G��RZ�fo�*�p�p�pr���c�����������������������t����������||�j�����������������������������|�j�����������������������������|������������������������t����������j��������g|�R�i�|��S�r���)r����_clpwd� get_names�get_uidr ����UnableToSaveData)r���r(����func�args�kwargss��� r���rE���z&ClUserExtSelect.bulk_handle_extensionsl���s^������*���K�!�!�$�+�"5�"5�d�";�";�<�<��+� ��� �� �� ��� �� �� r���c������������������������|�����������������������|�������������|r|����������������������||��������������|����������������������||������������}|����������������������|������������}|����������������������|������������\��}}} t����������| �����������������������������������������������|z���} |����������������������| �������������t����������j ��������| �������������}|�� ��������������������|��������������fd�||z���D���������������}g��|D�]x}t����������t�����������fd�|����������������������|g|| ������������������������������������} t����������j ��������|| |������������}|����������������������|�����������������������������������| ��������������y�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��|�� S�r���r�����.0r5����ext_datas��� �r���� <listcomp>z5ClUserExtSelect.enable_extensions.<locals>.<listcomp>����s�������N�N�N�c�c�X�o�o�c�o�o�or���c������������������������|��vS�r���r����r����resolved_dependenciess��� �r���r���z3ClUserExtSelect.enable_extensions.<locals>.<lambda>����� �������a�7L�.L��r���� N)r ���rB����_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)r���r(���r)���r>���rD���� user_ini_path�alt_path�contentsr4����extensions_data�resulting_extensions�_conflicts_infor5����resolved�dependence_inforT���rX���s��� @@r���rF���z!ClUserExtSelect.enable_extensionst���s@�������� �"�"�4�(�(�(��� G��"�"�H�g�"�F�F�F��3�3�D�'�B�B� ��)�)�'�2�2��26�2I�2I�-�2X�2X�/��:��#�O�$8�$8�$:�$:�;�;�h�F���,�,�-A�B�B��%�8�9M�x�X�X���"�"�?�3�3�3�N�N�N�N�Z�(�%:�N�N�N� � "���� 3�� 3�C��F�$L�$L�$L�$L�#'�#=�#=���x��$:��$:�;��;��<��<�H��*�?��X�x�X�X�O��)�)�/�:�:�:�!�(�(��2�2�2�2�(�� 9�� 9�C��O�O��!�!�/�#�"6�7�7� 9�� 9�� 9�� 9��)�)�(�3�3������$�)�)�H�%�%�d�*�M� ;�� ;�� ;����d�#�#�#����t�$�$�$�$�$r���c������������������<�����|�����������������������||�j��������||������������S�r���)rE����#replace_extensions_with_dependenses�r���r(���r)���r>���s��� r����bulk_replace_extensionsz'ClUserExtSelect.bulk_replace_extensions����s!�������*�*�4��1Y�[b�dl�m�m�mr���c�����������������������|�����������������������|||������������\��}}}|����������������������|�������������|����������������������|�������������|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 )ry���rf���rb���)r���r(���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��r���c��������������������� ���|�����������������������|�������������g��g�}g�}|����������������������||������������}|����������������������|������������}|����������������������|������������\��}} } i�} |����������������������|������������� t����������j��������|� ������������}� fd�|D���������������} | D�]g}t����������t�����������fd�|�� ��������������������|g|| ������������������������������������}||�� ��������������������|||������������z���}����������������������|��������������h�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��|�� S�r���r���rR���s��� �r���rU���zGClUserExtSelect.replace_extensions_with_dependenses.<locals>.<listcomp>����s�������A�A�A�c�����c���r���c������������������������|��vS�r���r���rW���s��� �r���r���zEClUserExtSelect.replace_extensions_with_dependenses.<locals>.<lambda>����rY���r���rZ���)r ���r[���r\���r]���r`���r���ra���r^���rc���rd���re���rg���rh���ri���rj���rk���rl���rm���r_���)r���r(���r)���r>���r}���r|���rn���ro���rp���r4���rq���r5���rt���rT���rX���s��� @@r���rw���z3ClUserExtSelect.replace_extensions_with_dependenses����s �������� �"�"�4�(�(�(� "�� "�����3�3�D�'�B�B� ��)�)�'�2�2��#�6�6�}�E�E� ��:�����,�,�X�6�6�� +� >�x�� R� R��A�A�A�A�X�A�A�A� ��� 3�� 3�C��F�$L�$L�$L�$L��*�*��E�8�_�6��6�7��7��8��8�H��!2�D�4N�4N�s�T\�^f�4g�4g� g��!�(�(��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�Ur���c������������������<�����|�����������������������||�j��������||������������S�r���)rE����disable_extensionsrx���s��� r����bulk_disable_extensionsz'ClUserExtSelect.bulk_disable_extensions����s �������*�*�4��1H�'�S[�\�\�\r���c������������������D����|�����������������������|�������������|����������������������||������������}|����������������������|������������}|����������������������|������������\��}}}t ����������|������������D�]�} | |vr�t ����������|��������������������������������������������������������������������| g������������} |����������������������| | |������������r>| ���������������������t ����������|������������������������st����������j ��������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�messageNrZ���)r ���r[���r\���r]���r,���r_���r?����_is_dependency�issubsetr ���� print_diag�poprg���rh���rj���rk���rl���rm���)r���r(���r)���r>���rn���ro���rp���r4���rq���r����rest_of_setr5���s��� r���r����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�$�$�$�$�$r���c�����������������������|st����������j��������d�������������t����������j��������|�|������������}|����������������������|||������������}|S�)z� Replaces extensions in user php.ini with default ones @param user: string @param version: string @return: list �Version)r ���� EmptyParamr���r&���r~���)r���r(���r)���r>����datas��� r����reset_extensionsz ClUserExtSelect.reset_extensions����sK��������� 7� �+�I�6�6�6��6�t�W�E�E���&�&�t�W�h�?�?���r���c������������������*����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�;---)� startswithr/���rg���)rp����found�fixed_contents�stripped_contentsr���s��� r���ri���z!ClUserExtSelect._move_ioncube_ext��s���������������� +�� +�D����}�-�-�� ����%�%�d�+�+�+���� ��?�?�6�*�*���!�E�E�"�)�)�$�/�/�/���$�$�T�*�*�*�*����/�0�0�0��r���c����������������������g�}g�}i�}d}d}d} �t����������|�d������������}|D��]9}|�����������������������������������}|���������������������d������������rd}d}|���������������������|��������������F|���������������������d������������r+|���������������������d������������} | dk����r�w| }d}||vr|g||<�����|rX|���������������������d ������������r|���������������������d ������������s��|���������������������|�������������|���������������������d ������������rd}��|rW|rU|���������������������d ������������s|dk����r��||vr|���������������������|�������������||v�r||������������������������������|���������������;|������������������������������������n#�t����������t����������f$�r�Y�nw�xY�w|||fS�)zb Parses user ini file contents @param path: string @return: tuple FN�rz;>===Tr����z;- ���;z;<===)�open�rstripr����r/����strip�close�OSError�IOError) �pathrp���r4���rq���� is_content�is_extension�ext_name�ini�line�tmp_ext_names ��� r���r]���z"ClUserExtSelect._load_ini_contents��s���������� ���� �����- ��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_extensionsr���rg���)r���r(���r)���rn���r4���s��� r���r:���z%ClUserExtSelect._load_user_extensions\��sI��������3�3�D�'�B�B� ��/�/� �>�>� ���$�$�Z�0�0�0�0�0r���c����������� �����������|�j���������r>|�j�����������������������������|������������}d|���������������������dd������������z��}|dz���|z���dz���S�t ����������|�j�����������������������������|������������������������}t����������j�����������������������������|�j ��������|dd����������|dd |�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_cagefsrI����get_homedir�replace�strrK����osr����rk����CAGEFS_PATH�_item�USER_INI)r���r(���r)����homedir�php_dir�uidr����s��� r���r[���z&ClUserExtSelect._compose_user_ini_pathf��s����������� E��k�-�-�d�3�3�G������R� 8� 8�8�G��1�1�G�;�f�D�D��$�+�%�%�d�+�+�,�,���w�|�|�D�,�����H� �!�E�)-����5�5�*.�*�*�g�o�o�c�2�6N�6N�6N�O� �M� +��+����r���)r���Nr���)F)�__name__� __module__�__qualname__r����r���r*���r7���r&���r.���rB���rG���rE���rF���ry���r~���rw���r����r����r����ri����staticmethodr]���r:���r[���r���r���r���r ���r ������s���������������H�������� B�� B�� B�� B�!��!��!��!�6 %�� %�� %� $�� $�� $� i�� i�� i�q��q��q��q� �� �� �#%��#%��#%��#%�Jn��n��n������""V��"V��"V�H]��]��]�"%��"%��"%�H����������.�%��%6�7�7���:5��:5���\�:5�x1��1��1���������r���r ���)� __future__r���r���r���r�����clextselectr����cluserselectr����clselectexceptr ���� clselectprintr ����utilsr���r ���r���r���r����<module>r�������s�������'��&��&��&��&��&��%��%��%��%��%��%�������������� � � � ��$��$��$��$��$��$��&��&��&��&��&��&��*��*��*��*��*��*��"��"��"��"��"��"��.��.��.��.��.��.�e��e��e��e��e�l�K��e��e��e��e��er���