403Webshell
Server IP : 192.158.238.246  /  Your IP : 3.138.170.222
Web Server : LiteSpeed
System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64
User : jenniferflocom ( 1321)
PHP Version : 8.1.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib/python3.11/site-packages/clselect/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/clselect/__pycache__/cluserselect.cpython-311.pyc
�

^�g0l��p�ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
mZddl
mZmZmZmZddlmZddlmZddlZd	d
lmZd	dlmZddlmZmZd	d
lmZd	dl m!Z!ddlm"Z"ddl#m$Z$	ddl%m&Z&ddl'm(Z(ddl)m*Z*m+Z+m,Z,ddl-m.Z.ddl/m0Z0n#e1$rYnwxYwGd�de��Z2dS)�)�print_function)�absolute_import)�divisionN)�configparser)�S_IRUSR�S_IWUSR�S_IRGRP�S_IROTH)�	iteritems)�Path�)�ClSelect)�ClSelectExcept)�ClPwd�	clcaptain)�clprint)�utils)�clcagefs)�ExternalProgramFailed)�BASEDIR)�get_user_prefix)�is_ea4_enabled�read_cpanel_ea4_php_conf�configure_alt_php)�da_change_user_php_ini)�ispmanager_create_user_wrapperc��eZdZdZdZej��rendZdZdZ	d-d�Z
ed.d	���Zd
�Z
d/d�Zd0d�Zd�Zd�Zd�Zd�Zd1d�Zd1d�Zdedefd�Zd0d�Zd�Zd�Zd�Zd�Zd�Zd-d�Zd2d�Zee��Zd �Z d!�Z!d"�Z"d#�Z#d$�Z$d%�Z%ee%��Z%d&�Z&d'�Z'ee'��Z'd3d(�Z(d)�Z)d*�Z*ee*��Z*d+�Z+d,�Z,dS)4�ClUserSelectz/var/cagefsz
/usr/selectorz'/usr/share/cagefs-skeleton/usr/selectorz/etc/cagefs/excludez.cl.selector/selector.pathNc�\�tj��s!tj�d��sdS|D]�}|j�|��}tj�|jd��}tj�|��s�|�	|��}	tj|��n.#ttf$r}tj||���d}~wwxYw	t �|����#t �|��wxYw��dS)z�
        Creates flags mod_lsapi_reset_me in users' home directories in order
        to recreate CRIU images when php version/extensions/options have changed
        For details see LVEMAN-1210
        :param users: list of usernames (strings)
        z/var/run/mod_lsapi/criu.enabledN�mod_lsapi_reset_me)r�	in_cagefs�os�path�isfile�_clpwd�get_pw_by_name�join�pw_dir�_change_uidr�write�OSErrorrr�UnableToSaveDatar�_restore_uid)�self�users�user�pwr#�previous_user_data�es       �L/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/cluserselect.py�clean_crui_imageszClUserSelect.clean_crui_images0s:���!�#�#�	�B�G�N�N�;\�,]�,]�	��F��
	B�
	B�D���+�+�D�1�1�B��7�<�<��	�+?�@�@�D��7�>�>�$�'�'�
B�%)�%5�%5�d�%;�%;�"�B��O�D�)�)�)�)���!6�7�C�C�C�(�9�$��B�B�B�����C����*�!�-�-�.@�A�A�A�A��L�-�-�.@�A�A�A�A����
B�
	B�
	Bs*�-C�D�C-�C(�(C-�-D�D(Tc�4�tj�t��s;t	j��s(t
d��|rtjd��ndS|rut��rgt��}|rW	|d}|�d��s(t
d��|rtjd��ndSn#t$rYnwxYwt||dtj��dk|�	��}|r|rtjd��|S)
z�
        Switch symlink for alt php.
        Create .cagefs directory if not created
        Rerurn True if error has occured
        �ERROR: CageFS not installed.r
T�defaultzea-phpzlERROR: system default PHP version is alt-php. PHP Selector is disabled. Use cPanel MultiPHP manager instead.Fr)�	write_log�	drop_perm�configure_multiphp)r"r#�isdirrrr!�print�sys�exitrr�
startswith�KeyErrorr�geteuid)�versionr1�
exit_on_errorr;�conf�default_php�errors       r4�switch_symlink_for_alt_phpz'ClUserSelect.switch_symlink_for_alt_phpIsN���w�}�}�W�%�%�	�h�.@�.B�.B�	��0�1�1�1��
���������t��	�.�"2�"2�	�+�-�-�D��

��"&�y�/�K�&�1�1�(�;�;�(��_�`�`�`�(�(��H�Q�K�K�K�K�#'�4��������D�����"�"�g��2�:�<�<�[\�K\�uG�H�H�H���	�]�	��H�Q�K�K�K��s�AC�
C�Cc��|jr#td��tjd��t	j��dkr#td��tjd��|���}t|��D]M\}}td|��|j�	|��}t�||dd����NdS)NzPERROR: this option does not work in "single user" mode (when CageFS is disabled)r
rzERROR: root privileges requiredzProcessing userF)rDr;)�without_cagefsr=r>r?r"rB�get_user_version_maprr%r&rrH)r.�users_vers_dictr0rCr1s     r4�apply_symlinks_rulesz!ClUserSelect.apply_symlinks_rulesns�����	��d�e�e�e��H�Q�K�K�K�
�:�<�<�1����3�4�4�4��H�Q�K�K�K��3�3�5�5��&��7�7�	p�	p�M�D�'��#�T�*�*�*���+�+�D�1�1�B��3�3�G�R�u�in�3�o�o�o�o�	p�	p��phpc��tj||��t��|_t	��|_|r	||_dSg|_dS�N)r�__init__rr%�set�_user_excludes�exclude_pid_list)r.�itemrUs   r4rRzClUserSelect.__init__{sP����$��%�%�%��g�g���!�e�e����	'�$4�D�!�!�!�$&�D�!�!�!rNFc	�������|����|��}��|��}tj�|��s|S�����tj�|�j��}tj�	|��s|Stj
|����jr9�js��
�j����j�jkr|Stj�����jkr|S	t!t#���fd�t!����������d}|�|d�|d�jfS#t&t(f$r|cYSwxYw)zl
        Returns alternative version for a user
        @param user: string
        @return: string
        c�>���|d�j�kS)N�data)�_item)�i�alternatives�link_dstr.s ���r4�<lambda>z*ClUserSelect.get_version.<locals>.<lambda>�s���<��?�6�2�4�:�>���rNrrCrY)�_check_user_in_cagefs�_compose_user_alt_path�_compose_native_infor"r#r<�get_all_alternatives_datar'rZ�islink�readlinkrJ�_native_contents�_load_native_contents�dirname�
SELECTOR_PATH�list�filter�keys�
IndexErrorrA)	r.r0�show_native_version�alt_path�native�	full_pathrCr\r]s	`      @@r4�get_versionzClUserSelect.get_version�s������	
�"�"�4�(�(�(��.�.�t�4�4���*�*�+>�?�?���w�}�}�X�&�&�	��M��5�5�7�7���G�L�L��4�:�6�6�	��w�~�~�i�(�(�	��M��;�y�)�)����	��(�
7��*�*�4�:�6�6�6��4�0���<�<�<��
�
�7�?�?�8�$�$��(:�:�:��M�		��6��������\�&�&�(�(�)�)�+�+�,�,�-.�/�G�� ��)�)�4� ��)�&�1�$�*�=�?�
?���H�%�	�	�	��M�M�M�	���s�=A.F,�,G�Gc�n�tj�|��s�|�|��}	t	j|��n.#ttf$r}tj	||���d}~wwxYw	t�|��dS#t�|��wxYwdSrQ)r"r#r<r)r�mkdirr+rrr,rr-)r.r#r0r2r3s     r4�
create_dirzClUserSelect.create_dir�s����w�}�}�T�"�"�	>�!%�!1�!1�$�!7�!7��
>����%�%�%�%���2�3�
?�
?�
?�$�5�d�A�>�>�>�����
?����&��)�)�*<�=�=�=�=�=���)�)�*<�=�=�=�=����	>�	>s)�A�
B�A6�A1�1A6�6B�B2c�p�|j�|��}tj�||j��}|�|��}|�||��|�d|dzd���|�d|dzd���|�	|��dS)z\
        Creates additional directory and symlinks for use in "without CageFS" mode
        z
../php-cliz/phpT)�check_existencez../phpz/php-cgiN)
r%�get_homedirr"r#r'�
SELECTOR2_DIRr)rt�_create_symlinkr-)r.r0�homedir�path_in_home�cur_users     r4�create_selector_symlinksz%ClUserSelect.create_selector_symlinks�s����+�)�)�$�/�/���w�|�|�G�T�-?�@�@���#�#�D�)�)������d�+�+�+����\�<��+>�PT��U�U�U����X�|�J�'>�PT��U�U�U����(�#�#�#�#�#rNc���tj�tj��rD	|j�d|j��S#tj	ttf$rYdSwxYwdS)N�versionsro)r"r#r$r�
DEFAULTS_PATH�_dh�getrZ�ConfigParser�Error�IOErrorrA)r.s r4�get_default_versionz ClUserSelect.get_default_version�si��
�7�>�>�(�0�1�1�	 �
 ��x�|�|�J��
�;�;�;�� �&���:�
 �
 �
 ��x�x�
 �����xs�A�A+�*A+c�J�tj�|j�|��dd��}tj�|��s*|�||�����dS	|�|��}|�||�	d|j
����dS#tjttf$r<}tdt!|����t#jd��Yd}~dSd}~wwxYw)N�.cl.selector�defaults.cfgrz*Error while restoring settings from backupr
)r"r#r'r%rwr$�set_versionr��_get_default_config_handlerr�rZr�r�r�rAr=�strr>r?)r.r0�user_backup_path�dhr3s     r4�set_version_from_backupz$ClUserSelect.set_version_from_backup�s���7�<�<���(?�(?��(E�(E�~�We�f�f���w�~�~�.�/�/�	����T�4�#;�#;�#=�#=�>�>�>�>�>�
��5�5�6F�G�G��� � ��r�v�v�j�$�*�'E�'E�F�F�F�F�F�� �&���:�
�
�
��B�C��F�F�K�K�K�����������������
���s�AC
�
D"�&1D�D"c	�D�tj��dkr+|�|��x}rtj|���tj|j|j�	|j�
|����tj||||��}|r|SdS)zz
        Sets alternative version for a users with the same uid
        @param user: string
        @return: None
        rN)r"rB�"get_version_selection_disabled_msgr�VersionModificationBlockedr�apply_for_at_least_one_user�_set_versionr%�	get_names�get_uid�NoUserSelector)r.r0rC�return_summaryrmrD�messagerYs        r4r�zClUserSelect.set_version�s����:�<�<�1���T�-T�-T�UY�-Z�-Z�"Z�'�� �;�G�D�D�D��0����K�!�!�$�+�"5�"5�d�";�";�<�<��)��^�%8�-�	
�
���	��K�	�	rNc�6�|jr|�|��}|�|��|�|��}tj�|��s2|jr|�||��ntj	|���|�
��}||vr|dkrtj|���|�|��|j
�|��}	|dk�r�|jr[|js|�|j��t%|j��D]#\}
}|�||dz|
z||���$�n�d}d}
tj�|j�d�|��}tj�|��rbtj�d|jz|��}tj�||��}|�||||��d}
t	j|j��D]�}|j|vr�|�d��r|
r�$tj�||��}tj�|j|��}|�||||����nWt%||d	��D];\}
}|�|tj�||
��||���<|jrt4�|��n3t4�||	|�
��|�||��|�|��|�|��|r|� ||��SdS)zg
        Sets alternative version for a user
        @param user: string
        @return: None
        ro�/zphp.iniFz.etcz%s.etcT�.inirY�rDN)!rJr)r_r`r"r#r<rtrr�rb�NoSuchAlternativeVersion�_remove_alternatives_linksr%r&rerfrZrryr'�NATIVE_PATH�existsrh�listdir�endswithrr-rH�_switch_php_da_isp�_reload_processes�_backup_settings�get_summary)r.r0rCr�rmrDr2rnr\r1rV�native_path�ini�new_ini_created�new_ini_path�src�dst�filenamer#s                   r4r�zClUserSelect._set_version�s�����	8�!%�!1�!1�$�!7�!7���"�"�4�(�(�(��.�.�t�4�4���w�}�}�X�&�&�	:��"�
:�����$�/�/�/�/�$�3�D�9�9�9��5�5�7�7���,�&�&�7�h�+>�+>� �9�'�B�B�B��'�'��1�1�1�
�[�
'�
'��
-�
-���h����"�
B��,�;��.�.�t�z�:�:�:�)2�4�3H�)I�)I�X�X�%�D�+��(�(��h�s�l�4�6G��w�W�W�W�W�X� ��"'��!�w�|�|��8H�8H�8H�,J�C�P�P���7�>�>�,�/�/�+��'�,�,�x�$�2D�'D�c�J�J�C��'�,�,�x��5�5�C��(�(��c�4��A�A�A�&*�O� "�
�4�+;� <� <�B�B�H��z��1�1� ��(�(��0�0�!�_�!� ��'�,�,�x��:�:�C��'�,�,�t�'9�8�D�D�C��(�(��c�4��A�A�A�A�B�(��W�(=�f�(E�F�F�
X�
X�
��d��$�$�T�2�7�<�<��$�+G�+G��w�W�W�W�W���	3��%�%�&8�9�9�9�9��3�3�G�R�Q^�3�_�_�_��#�#�D�'�2�2�2����t�$�$�$����d�#�#�#��	?��#�#�D�*=�>�>�>�	?�	?rN�username�returnc�n�|j�|��}td|�d���}|���sdS	|�d���5}tj|��}|�dd��cddd��S#1swxYwYdS#ttf$rYdSwxYw)a�
        Returns a message indicating that the selection of the PHP version
        is disabled for the user, based on the configuration file.

        Args:
            username (str): The username for which to check the configuration.

        Returns:
            str: The message indicating that version selection is disabled,
                 or an empty string if the configuration file does not exist
                 or does not contain the message.
        z!/var/cloudlinux/cl.selector/uids/z/version_selection_conf.json�zutf-8)�encoding�version_selection_disabled_msgN)
r%r�rr��open�json�loadr�r+�
ValueError)r.r��uid�config_file�f�config_datas      r4r�z/ClUserSelect.get_version_selection_disabled_msg!s#���k�!�!�(�+�+���`�s�`�`�`�a�a���!�!�#�#�	��2�	��!�!�7�!�3�3�
M�q�"�i��l�l��"���'G��L�L�
M�
M�
M�
M�
M�
M�
M�
M�
M�
M�
M�
M����
M�
M�
M�
M�
M�
M����$�	�	�	��2�2�	���s6�B�*B�B�B�B�B�B�B4�3B4c�6�|�|��|���}|�|��}ddddd�i}t|�����}|�d��|�|��d}|D]O}||vri||<|j�|j	�|��d��||d<d||d<d||d	<�P	|j�
d
|j	��}	n##tjtj
f$rd}	YnwxYw	d||	d<d||d	<n"#t$rtj|	���wxYw|�d��||d<|�d��|�|d��t't)|����D]8}
||
}|||d||d||d	ff||
<�9t+|��S)zb
        Returns state of alternatives
        @param user: string
        @return: tuple
        roTF)�enabledr8�selectedr�stater�r8r�r)r_rbra�sortedrk�appendrqr��
has_optionrZr�r��NoSectionError�
NoOptionErrorrArr��pop�remove�range�len�tuple)r.r0rmr\�native_info�summary�alt_versions�selected_versionrC�default_version�idx�vs            r4r�zClUserSelect.get_summary:s{��	
�"�"�4�(�(�(��5�5�7�7���/�/�0C�D�D�����5�B�B�C���l�/�/�1�1�2�2�����H�%�%�%��+�+�D�1�1�!�4��#�	1�	1�G��g�%�%�#%��� �.2�h�.A�.A��*�*�g�g�.��/9�/9�+9�G�G��Y�'�*/�G�G��Y�'�+0�G�G��Z�(�(�	'�"�h�l�l�:�t�z�B�B�O�O���+�\�-G�H�	'�	'�	'�&�O�O�O�	'����	K�26�G�O�$�Y�/�48�G�$�%�j�1�1���	K�	K�	K� �9�/�J�J�J�	K����")�+�+�h�"7�"7���A������H�%�%�%����K��N�+�+�+���\�*�*�+�+�	*�	*�C��S�!�A�����I�&����I�&����J�'�)�!*�L����
�\�"�"�"s�+ D�D,�+D,�0E�E&c	��|�|��}|D]W}	|�||d����#t$r/}tjddt|��d���Yd}~�Pd}~wwxYw|�|��dS)z�
        Changes users of a supplied version to specified_version
        @param version: string
        @param current_version: string
        Fr��text�ERROR)�statusr�N)�
list_usersr��	Exceptionr�
print_diagr�r5)r.�new_version�current_versionr/r0r3s      r4�change_to_versionzClUserSelect.change_to_versionds�������0�0���	�	�D�
�� � ��{�E� �J�J�J�J���
�
�
��"�6�g�#�a�&�&�+Q�+Q�R�R�R����������
����	
���u�%�%�%�%�%s�4�
A-�%A(�(A-c�F�|���}||vr||SgS)z8
        Returns users of a certain alternative
        )�get_version_user_map)r.rCrYs   r4r�zClUserSelect.list_usersss-���(�(�*�*���d�?�?���=� ��	rNc��|jrddlm}|��gSt|����|�������S)zF
        Returns all valid system users
        @return: list
        r
)�get_cpanel_user)rJ�clselectctlphpr�ri�_get_system_users�
difference�_get_user_excludes)r.r�s  r4�list_all_userszClUserSelect.list_all_users|sq��
��	'�7�7�7�7�7�7�#�O�%�%�&�&��D�*�*�,�,�7�7��#�#�%�%�'�'�(�(�	(rNc��t��}d|d<d|d<d|d<d}tj�|��	ddl}n3#t
$r&t
d��tjd��YnwxYwtj�	tt|��|d��}tj�|d	z��r"tj�|d
z��s|�
||��dSdS)Nr�init�reinit�verbose�/usr/share/cagefsr7r
�etcz/cl.selectorz	/cl.php.d)�dictr>r#r��	cagefsctl�ImportErrorr=r?r"r'rrr��cpetc_for_user)r.r0�config�LIBDIRr��cagefs_etc_paths      r4�cagefs_copy_etczClUserSelect.cagefs_copy_etc�s��������v����x����y��$����������	��������	�	�	��0�1�1�1��H�Q�K�K�K�K�K�	�����'�,�,�w���0E�0E�t�U�S�S���w�~�~�o��>�?�?�	3��G�N�N�?�[�#@�A�A�	3��$�$�T�6�2�2�2�2�2�	3�	3s�A�-A5�4A5c��|���}i}|D]7}	|�|d��d||<�##tj$rY�4wxYw|S)zH
        Returns user version map as dict
        @return: dict
        Fr)r�rqr�
NotCageFSUser)r.�actual_usersrYr0s    r4rKz!ClUserSelect.get_user_version_map�sv��
�*�*�,�,���� �	�	�D�
�!�-�-�d�E�:�:�1�=��T�
�
��!�/�
�
�
���
�����s�<�A�
Ac���|p|���}i}|D]X}	|�|d��d}||vrg||<||�|���D#tj$rY�UwxYw|S)zH
        Returns users grouped by version
        @return: dict
        Fr)r�rqr�rr�)r.�
user_namesr�rYr0rCs      r4r�z!ClUserSelect.get_version_user_map�s���
"�:�T�%8�%8�%:�%:���� �	�	�D�
��*�*�4��7�7��:���$���$&�D��M��W�
�$�$�T�*�*�*�*��!�/�
�
�
���
�����s�AA�A1�0A1c
��	|rbtj�|��r/tj|��|krtj|��ndStj|��tj||��dS#t$r=}|�|�tj|||���tjd|�d|�d|�d����d}~wwxYw)z�
        Creates symlink from src to dst
        @param src: string
        @param dst: string
        @param user: string
        @param version: string
        @param check_existence: bool
        @return: None
        NzCannot create symlink from z to z (�))
r"r#rcrd�unlinkr�remove_file_or_dirr�symlinkr�r�UnableToSetAlternative�SelectorException)r�r�r0rCrvr3s      r4ryzClUserSelect._create_symlink�s���	L��
2��7�>�>�#�&�&�2��{�3�'�'�3�.�.��	�#��������,�S�1�1�1���c�3�'�'�'�'�'���	L�	L�	L���G�$7�$�;�D�'�1�M�M�M� �2�2�>A�c�c�3�3�3����J�L�L�
L�����	L���s�AA=�)A=�=
C�8B?�?Cc���|jr|jStj�|j��st��Stj|j��D]�}tj�|j|��}|j�ttd�tj|�������������|jS)zE
        Returns list of user excludes
        @return: list
        c�*�|���SrQ)�strip)�xs r4r^z1ClUserSelect._get_user_excludes.<locals>.<lambda>�s��1�7�7�9�9�rN)
rTr"r#r<�CAGEFS_EXCLUDErSr�r'�update�mapr�read_file_as_string�
splitlines)r.rV�full_item_paths   r4r�zClUserSelect._get_user_excludes�s���
��	'��&�&��w�}�}�T�0�1�1�	��5�5�L��J�t�2�3�3�	R�	R�D��W�\�\�$�*=�t�D�D�N���&�&���,�,��1�.�A�A�L�L�N�N�P�P�Q�Q�
R�
R�
R�
R��"�"rNc��|jrdStj��rdSd}tj�|��	ddl}n3#t$r&td��tj	d��YnwxYw	|�
|��stj|���dS#t$r'td��tj	d��YdSwxYw)z4
        Check that cagefs enabled for user
        Nr�rr7r
z;ERROR: CageFS version is unsupported. Please update CageFS.)rJrr!r>r#r�r�r�r=r?�is_user_enabledrr��AttributeError)r.r0r�r�s    r4r_z"ClUserSelect._check_user_in_cagefs�s����	��F�����	��F�$����������	��������	�	�	��0�1�1�1��H�Q�K�K�K�K�K�	����	��,�,�T�2�2�
9�$�2�4�8�8�8�
9�
9���	�	�	��O�P�P�P��H�Q�K�K�K�K�K�K�	���s$�A�-A6�5A6�:)B%�%-C�Cc���tj|��D]`}|j|vr�tj�||��}tj�|��s�Ltj|���adS)zg
        Removes all symlinks from directory
        @param path: string
        @return: None
        N)r"r�rZr#r'rcr�)r.r#r�rps    r4r�z'ClUserSelect._remove_alternatives_links�sx���
�4�(�(�	!�	!�H��z��)�)������T�8�4�4�I��7�>�>�)�,�,�
���I�i� � � � �
	!�	!rNc�&�|jr|j�|��}|dzSt|j�|����}tj��rdn/tj�	|j
|dd�|dd��S)zz
        Composes and returns user alternative directory path
        @param user: string
        @return: string
        z
/.cl.selectorz/etc/cl.selector���Nr�zcl.selector)rJr%rwr�r�rr!r"r#r'�CAGEFS_PATH)r.r0rzr�s    r4r`z#ClUserSelect._compose_user_alt_paths�����	-��k�-�-�d�3�3�G��_�,�,��$�+�%�%�d�+�+�,�,���!�#�#�
Q����G�L�L��)�3�r�s�s�8�T�5�-�P�P�	
rNc�v�|j���}t|�����S)zB
        Returns set of system users
        @return: set
        )r%�
get_user_dictrSrk)r.�
users_dicts  r4r�zClUserSelect._get_system_userss/��
�[�.�.�0�0�
��:�?�?�$�$�%�%�%rNc��tj�|��r:	tj|��dS#t$rtj|d���wxYwdS)z?
        Deletes file to be written if it is a symlink
        z'Cannot delete symlink while saving dataN)r"r#rcr�r+rr,)�	file_paths r4�_delete_if_symlinkzClUserSelect._delete_if_symlink#su���7�>�>�)�$�$�	?�
?��	�)�$�$�$�$�$���
?�
?�
?�$�5��=�?�?�?�
?����	?�	?s	�7� Ac��|j�|��}|j}|j}t	j��}t	j��}||kr||fS	t	j|��t	j|��tj
��||fS#t$r}tj
||���d}~wwxYw)z�
        Changes to another uid and returns tuple of previous euid and egid
        @param user: string
        @return: tuple
        N)r%r&�pw_uid�pw_gidr"rB�getegid�setegid�seteuid�secureio�set_capabilityr+r�UnableToChangeToAnotherUser)r.r0�entry�new_uid�new_gid�cur_euid�cur_egidr3s        r4r)zClUserSelect._change_uid0s�����*�*�4�0�0���,���,���:�<�<���:�<�<���w����X�%�%�	F��J�w�����J�w�����#�%�%�%��X�%�%���	F�	F�	F� �<�T�1�E�E�E�����	F���s�>B�
B=�#B8�8B=c�L�|dtj��kr�tjd���	tj|d��tj|d��dS#t$r-}tjt|d��|���d}~wwxYwdS)zw
        Restores changed uid and gid to original ones
        @param uid_and_gid: tuple
        @return: None
        rT)�clearr
N)
r"rBrrrrr+rrr�)�uid_and_gidr3s  r4r-zClUserSelect._restore_uidEs����q�>�R�Z�\�\�)�)��#�$�/�/�/�/�
Y��
�;�q�>�*�*�*��
�;�q�>�*�*�*�*�*���
Y�
Y�
Y�$�@��[�QR�^�AT�AT�VW�X�X�X�����
Y����*�)s�4A*�*
B!�4(B�B!c��|s!tj�|��sdS|�|��|�|��}tj�|��}	dt
tj����z}tj�	||��}tj||�d���	ttztztz}	tj||��tj||	��n�#t$$rYn�wxYw#t&t$t(f$rp}
	tj�|��rtj|��n#YnxYwt,�|��t1j||
���d}
~
wwxYwt,�|��dS)z�
        Saves data to file
        @param user: string
        @param file_contents: string
        @param file_path: string
        @return: None
        Nzclseltmp_%s�
)r"r#r�rr)rgr��uuid�uuid4r'rr*rrr	r
�rename�chmodr+r�rr�rr-rr,)r.r0�
file_contentsr�creater2�file_directoryrg�	temp_path�maskr3s           r4�_write_to_filezClUserSelect._write_to_fileTs����	�b�g�n�n�Y�7�7�	��F����	�*�*�*�!�-�-�d�3�3�������3�3��	�#�c�$�*�,�,�&7�&7�7�G�����^�W�=�=�I��O�I����'@�A�A�A�
���(�7�2�W�<���	�)�Y�/�/�/����D�)�)�)�)���
�
�
���
�������"7�8�	@�	@�	@�
��7�>�>�)�,�,�)��I�i�(�(�(���
�������%�%�&8�9�9�9� �1�)�Q�?�?�?�����	@����	�!�!�"4�5�5�5�5�5s>�.AD$�
A	D�
D!� D!�$F+�<3E0�/F&�0E4�24F&�&F+c�6�	tj��}td��D]8}|���}|� |j�|j���8n#tj$rYnwxYw	t���	|��}n#tj
f$rYdSwxYw	tj��D]�}	||���j
|���jfvs0|����|j��dkr�h|j}n#tj$rY��wxYw	||jvrt%j|t(j����#t,f$rY��wxYwdS#t,t.f$rYdSwxYw)z&
        Reloads user process
        �N���)�psutil�Processr��parentrUr��pid�
NoSuchProcessrr��NoSuchUserException�process_iter�uids�real�	effective�name�findrZr"�kill�signal�SIGHUPr+r�)r.r0�next_parentr[r��procr9s       r4r�zClUserSelect._reload_processesws���		� �.�*�*�K��1�X�X�
�
��)�0�0�2�2���*��)�0�0���A�A�A�A�����#�	�	�	��D�	����	��'�'�/�/�$�'�'�C�C���)�,�	�	�	��F�F�	����	��+�-�-�
�
����4�9�9�;�;�#3�T�Y�Y�[�[�5J�"K�K�K�t�y�y�{�{�O_�O_�`d�`j�Ok�Ok�oq�Oq�Oq� ��(�C�C���+�����H�������$�"7�7�7����V�]�3�3�3����{�����H�����
�
����!�	�	�	��D�D�	���s��AA�A0�/A0�4!B�B*�)B*�.F�A$D1�(F�)D1�0F�1E�F�E�F�(E0�/F�0E>�;F�=E>�>F�F�Fc��g}	t|��}|D]I}|�d��r2|d|�d���}|�|���J|���n#t
tf$rYnwxYw|S)zH
        Get extension names from user extensions file comments
        z;---�z---)r�r@�rfindr��closer+r�)r#�
extensionsr��line�exts     r4�_skim_over_extensionsz"ClUserSelect._skim_over_extensions�s����
�	��t�*�*�C��
+�
+���?�?�6�*�*�+��q����E�!2�!2�2�3�C��%�%�c�*�*�*���I�I�K�K�K�K����!�	�	�	��D�	�����s�A/A4�4B�Bc���|�|��g}|�|��}tj�tj�|��d��}|���}tj�|j�|��d��}tj�	|��s�|�
|��}	tj|��nH#ttf$r4}t�|��t#j||���d}~wwxYwt�|��tj�|d��}	tj�	|��r(d|j�d|�|��d�d�}
nd|j�d	�}
|�|
��t-|�����D]�}|jr |d
z|�dd��zd
z}n8tj�|d|�dd����d��}|�|��}
|�d|j�|�dd�t-|
�����d�����|�|d�|��|	��dS)zk
        Scans all user settings and backups'em in homedir as INI file
        @param user: string
        zcl.php.dr�Nr�z[versions]
z = rr(z
 = native
z/alt_php�.r�r�zalt-phpzalt_php.ini�[z]
modules = �,)r_r`r"r#r'rgrbr%rwr<r)rrsr+rrr-rr,rZrqr�r�rkrJ�replacerNr2)r.r0�backup_contents�
user_alt_path�
user_ext_pathr\r�r2r3�user_backup_filerC�alt�
curr_ext_pathrKs              r4r�zClUserSelect._backup_settings�s���
	
�"�"�4�(�(�(����3�3�D�9�9�
�����R�W�_�_�]�%C�%C�Z�P�P�
��5�5�7�7���7�<�<��K�#�#�D�)�)�>�;�;���w�}�}�-�.�.�	:�!%�!1�!1�$�!7�!7��
K��� 0�1�1�1�1���2�3�
K�
K�
K��)�)�*<�=�=�=�$�5�6F��J�J�J�����
K����
�%�%�&8�9�9�9��7�<�<��n�.�.��
�7�=�=��'�'�	B�	B��
�
�
�D�,�,�T�2�2�1�5�5�5�7�G�G�	B�6:�Z�Z�Z�A�G����w�'�'�'��,�+�+�-�-�.�.�
	D�
	D�C��"�
A� -�
� :�S�[�[��b�=Q�=Q� Q�TZ� Z�
�
� "����!�M����S�"�-�-�-�$1�2?�!A�!A�
��3�3�M�B�B�J��"�"�"��J�J����S�X�X�f�Z�.@�.@�%A�%A�%A�%A�C�
D�
D�
D�
D�	
����$�)�)�O�,�,�.>�	@�	@�	@�	@�	@s�+D�E�/E�Ec�X�|jrdSt||��t||��dSrQ)rJrr)r.r0rCs   r4r�zClUserSelect._switch_php_da_isp�s8����	��F��t�W�-�-�-�&�t�W�5�5�5�5�5rNrQ)TT)rON)F)FFT)NNF)T)-�__name__�
__module__�__qualname__rrhrr!r�rrxr5�staticmethodrHrMrRrqrtr}r�r�r�r�r�r�r�r�r�r�r�rKr�ryr�r_r�r`r�rr)r-r2r�rNr�r��rNr4rr(s��������K�#�M�#5�8�#5�#7�#7�f�-�-�=f�K�*�N�0�M�B�B�B�B�2�"�"�"��\�"�Hp�p�p�'�'�'�'� � � � �F>�>�>�
$�
$�
$����
�
�
�����&8?�8?�8?�8?�t�3��3�����2(#�(#�(#�(#�T
&�
&�
&����	(�	(�	(�3�3�3�&�������"L�L�L�L�2#�l�?�3�3�O�#�#�#�"���0!�!�!�
�
�
� &�&�&�
?�
?�
?�&��&8�9�9��F�F�F�*Y�Y�Y� �<��-�-�L�!6�!6�!6�!6�F"�"�"�H���)�L�)>�?�?��(@�(@�(@�T6�6�6�6�6rNr)3�
__future__rrrr�r"r>r)rCr�future.movesrr��statrrr	r
�future.utilsr�pathlibrr6�clselectr�clselectexceptr�clcommonrr�
clselectprintrr�rr�clcommon.utilsr�clcagefslib.constr�clcagefslib.fsr�clcagefslib.selector.configurerrr�clcagefslib.selector.panel.dar�clcagefslib.selector.panel.isprr�rr_rNr4�<module>ros&��&�%�%�%�%�%�&�&�&�&�&�&�����������	�	�	�	�
�
�
�
�����
�
�
�
�����5�5�5�5�5�5�3�3�3�3�3�3�3�3�3�3�3�3�"�"�"�"�"�"�������
�
�
�
�������*�*�*�*�*�*�%�%�%�%�%�%�%�%�"�"�"�"�"�"�������������0�0�0�0�0�0�	�)�)�)�)�)�)�.�.�.�.�.�.�j�j�j�j�j�j�j�j�j�j�D�D�D�D�D�D�M�M�M�M�M�M�M���	�	�	��D�	����r
6�r
6�r
6�r
6�r
6�8�r
6�r
6�r
6�r
6�r
6s�:"B�B%�$B%

Youez - 2016 - github.com/yon3zu
LinuXploit