403Webshell
Server IP : 192.158.238.246  /  Your IP : 3.15.7.155
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/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

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

��d�f�@s�ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	m
Zddlm
Z
mZmZmZddlmZddlZdd	lmZdd
lmZddlmZmZddlmZdd
lmZddlm Z Gdd�de�Z!dS)�)�print_function)�absolute_import)�divisionN)�configparser)�S_IRUSR�S_IWUSR�S_IRGRP�S_IROTH)�	iteritems�)�ClSelect)�ClSelectExcept)�ClPwd�	clcaptain)�clprint)�utils)�ExternalProgramFailedc@sXeZdZdZdZdZdZdZdJdd�Ze	dKd
d��Z
dd
�ZdLdd�ZdMdd�Z
dd�Zdd�Zdd�Zdd�ZdNdd�ZdOdd�ZdPd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�ZdQd,d-�ZdRd.d/�Ze	e�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Z d:d;�Z!e	e!�Z!d<d=�Z"d>d?�Z#e	e#�Z#dSd@dA�Z$dBdC�Z%dDdE�Z&e	e&�Z&dFdG�Z'dHdI�Z(dS)T�ClUserSelectz/var/cagefsz'/usr/share/cagefs-skeleton/usr/selectorz
/usr/selectorz/etc/cagefs/excludez.cl.selector/selector.pathNcCs�tj�d�sdSx�|D]�}|j�|�}tj�|jd�}tj�|�s|�|�}zFyt�	|�Wn2t
tfk
r�}zt�
||��Wdd}~XYnXWdt�|�XqWdS)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.enabledNZmod_lsapi_reset_me)�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�e�r&�F/opt/alt/python37/lib/python3.7/site-packages/clselect/cluserselect.py�clean_crui_images%s

"zClUserSelect.clean_crui_imagesTc
Cs�y.dtjkrtj�d�ddlm}m}m}Wn0tk
r^td�|rVt�	d�ndSYnX|r�|�r�|�}|r�y2|d}|�
d�s�td	�|r�t�	d�ndSWntk
r�YnX|||d
t�
�dk|d�}	|	r�|r�t�	d�|	S)z�
        Switch symlink for alt php.
        Create .cagefs directory if not created
        Rerurn True if error has occured
        z/usr/share/cagefsr)�configure_alt_php�is_ea4_enabled�read_cpanel_ea4_php_confzERROR: CageFS not installed.rT�defaultzea-phpzlERROR: system default PHP version is alt-php. PHP Selector is disabled. Use cPanel MultiPHP manager instead.F)�	write_log�	drop_perm�configure_multiphp)�sysr�append�	cagefsctlr)r*r+�ImportError�print�exit�
startswith�KeyErrorr�geteuid)
�versionr#�
exit_on_errorr/r)r*r+�confZdefault_php�errorr&r&r'�switch_symlink_for_alt_php;s2




z'ClUserSelect.switch_symlink_for_alt_phpcCs�|jrtd�t�d�t��dkr6td�t�d�|��}x<t|�D]0\}}td|�|j�	|�}t
j||ddd�qHWdS)NzPERROR: this option does not work in "single user" mode (when CageFS is disabled)rrzERROR: root privileges requiredzProcessing userF)r:r/)�without_cagefsr4r0r5rr8�get_user_version_mapr
rrrr=)r Zusers_vers_dictr"r9r#r&r&r'�apply_symlinks_rulesds


z!ClUserSelect.apply_symlinks_rules�phpcCs2t�||�t�|_t�|_|r(||_ng|_dS)N)r�__init__rr�set�_user_excludes�exclude_pid_list)r �itemrEr&r&r'rBqszClUserSelect.__init__Fc	s��|���|�}��|�}tj�|�s.|S����tj�|�j�}tj�	|�sV|St�
|���jr��jsx��
�j���j�jkr�|Stj����jkr�|SyFtt���fdd�t������d}|�|d�|d�jfSttfk
�r|SXdS)zl
        Returns alternative version for a user
        @param user: string
        @return: string
        cs�|d�j�kS)N�data)�_item)�i)�alternatives�link_dstr r&r'�<lambda>�sz*ClUserSelect.get_version.<locals>.<lambda>rr9rGN)�_check_user_in_cagefs�_compose_user_alt_path�_compose_native_inforr�isdir�get_all_alternatives_datarrH�islink�readlinkr>�_native_contents�_load_native_contents�dirname�
SELECTOR_PATH�list�filter�keys�
IndexErrorr7)r r"�show_native_version�alt_path�native�	full_pathr9r&)rJrKr r'�get_versionzs4




zClUserSelect.get_versionc
Csntj�|�sj|�|�}zFyt�|�Wn2ttfk
rX}zt�	||��Wdd}~XYnXWdt
�|�XdS)N)rrrPrr�mkdirrrr
rrr)r rr"r$r%r&r&r'�
create_dir�s
"zClUserSelect.create_dircCsh|j�|�}tj�||j�}|�|�}|�||�|jd|ddd�|jd|ddd�|�	|�dS)z\
        Creates additional directory and symlinks for use in "without CageFS" mode
        z
../php-cliz/phpT)�check_existencez../phpz/php-cgiN)
r�get_homedirrrr�
SELECTOR2_DIRrrb�_create_symlinkr)r r"�homedirZpath_in_homeZcur_userr&r&r'�create_selector_symlinks�s
z%ClUserSelect.create_selector_symlinksc
Cs@tj�tj�r<y|j�d|j�Stj	t
tfk
r:dSXdS)N�versionsr^)rrrr�
DEFAULTS_PATH�_dh�getrH�ConfigParser�Error�IOErrorr7)r r&r&r'�get_default_version�sz ClUserSelect.get_default_versionc
Cs�tj�|j�|�dd�}tj�|�s6|�||���nhy$|�|�}|�||�	d|j
��WnBtjt
tfk
r�}ztdt|��t�d�Wdd}~XYnXdS)Nz.cl.selectorzdefaults.cfgriz*Error while restoring settings from backupr)rrrrrdr�set_versionrp�_get_default_config_handlerrlrHrmrnror7r4�strr0r5)r r"�user_backup_path�dhr%r&r&r'�set_version_from_backup�s
z$ClUserSelect.set_version_from_backupc	Cs6t�|j|j�|j�|��tj||||�}|r2|SdS)zz
        Sets alternative version for a users with the same uid
        @param user: string
        @return: None
        N)r�apply_for_at_least_one_user�_set_versionr�	get_names�get_uidr
�NoUserSelector)r r"r9�return_summaryr\r:rGr&r&r'rq�szClUserSelect.set_versioncCs>|jr|�|�}|�|�|�|�}tj�|�sN|jrD|�||�n
t�	|��|�
�}||krp|dkrpt�|��|�|�|j
�|�}	|dk�r�|jr�|js�|�|j�x�t|j�D] \}
}|�||d|
||�q�Wn�d}d}
tj�d|jf|�}tj�|��r<tj�d|j|�}tj�||�}|�||||�d}
x�t�|j�D]Z}|j|k�r^�qJ|�d��rt|
�rt�qJtj�||�}tj�|j|�}|�||||��qJWn:x8t||d�D]$\}
}|�|tj�||
�||��q�W|j�r�t�|�ntj||	|d	�|�||�|�|�|�|�|�r:|� ||�Sd
S)zg
        Sets alternative version for a user
        @param user: string
        @return: None
        r^�/zphp.iniFz%s.etcTz.inirG)r:N)!r>rrMrNrrrPrbr
r{rQ�NoSuchAlternativeVersion�_remove_alternatives_linksrrrTrUrHr
rfr�NATIVE_PATH�existsrW�listdir�endswithrrr=�_switch_php_da_isp�_reload_processes�_backup_settings�get_summary)r r"r9r|r\r:r$r]rJr#rFZnative_path�iniZnew_ini_createdZnew_ini_path�src�dst�filenamerr&r&r'rx�sZ






 

zClUserSelect._set_versionc	Cs�|�|�|��}|�|�}ddddd�i}t|���}|�d�|�|�d}xV|D]N}||krji||<|j�d|j	|fd�||d<d||d	<d||d
<qVWy|j�
d|j	�}	Wn tjtj
fk
r�d}	YnXyd||	d	<d||d
<Wn tk
�rt�|	��YnX|�d�||d<|�d�|�|d�xHtt|��D]8}
||
}|||d||d	||d
ff||
<�qTWt|�S)zb
        Returns state of alternatives
        @param user: string
        @return: tuple
        r^TF)�enabledr,�selectedrz%s%s�stater�r,r�ri)rMrQrO�sortedrZr1r`rk�
has_optionrHrlrm�NoSectionError�
NoOptionErrorr7r
r~�pop�remove�range�len�tuple)r r"r\rJ�native_info�summary�alt_versionsZselected_versionr9�default_version�idx�vr&r&r'r�sD







zClUserSelect.get_summarycCst|�|�}xZ|D]R}y|j||dd�Wqtk
r`}zt�ddt|�d��Wdd}~XYqXqW|�|�dS)z�
        Changes users of a supplied version to specified_version
        @param version: string
        @param current_version: string
        F)r:�text�ERROR)�status�messageN)�
list_usersrq�	Exceptionr�
print_diagrsr()r Znew_version�current_versionr!r"r%r&r&r'�change_to_version>s

zClUserSelect.change_to_versioncCs|��}||kr||SgS)z8
        Returns users of a certain alternative
        )�get_version_user_map)r r9rGr&r&r'r�MszClUserSelect.list_userscCs0|jrddlm}|�gSt|���|����S)zF
        Returns all valid system users
        @return: list
        r)�get_cpanel_user)r>Zclselectctlphpr�rX�_get_system_users�
difference�_get_user_excludes)r r�r&r&r'�list_all_usersVs

zClUserSelect.list_all_userscCs�t�}d|d<d|d<d|d<d}tj�|�yddl}Wn&tk
r`td�t�d�YnXtj�	|j
|�|�|d�}tj�|d	�r�tj�|d
�s�|�
||�dS)Nr�initZreinit�verbosez/usr/share/cagefszERROR: CageFS not installed.r�etcz/cl.selectorz	/cl.php.d)�dictr0rr1r2r3r4r5rrZBASEDIRZget_user_prefixr�Zcpetc_for_user)r r"�config�LIBDIRr2Zcagefs_etc_pathr&r&r'�cagefs_copy_etcaszClUserSelect.cagefs_copy_etcc	CsP|��}i}x>|D]6}y|�|d�d||<Wqtjk
rFwYqXqW|S)zH
        Returns user version map as dict
        @return: dict
        Fr)r�r`r
�
NotCageFSUser)r �actual_usersrGr"r&r&r'r?ts
z!ClUserSelect.get_user_version_mapc	Csn|p
|��}i}xX|D]P}y2|�|d�d}||kr<g||<||�|�Wqtjk
rdwYqXqW|S)zH
        Returns users grouped by version
        @return: dict
        Fr)r�r`r1r
r�)r Z
user_namesr�rGr"r9r&r&r'r��s
z!ClUserSelect.get_version_user_mapc
Cs�yJ|r<tj�|�r2t�|�|kr,t�|�q<dSn
t�|�t�||�WnTt	k
r�}z6|dk	rz|dk	rzt
�|||��t
�d|||f��Wdd}~XYnXdS)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
        Nz(Cannot create symlink from %s to %s (%s))
rrrRrS�unlinkr�remove_file_or_dirr�symlinkr�r
�UnableToSetAlternative�SelectorException)r�r�r"r9rcr%r&r&r'rf�s

zClUserSelect._create_symlinkc	Csp|jr|jStj�|j�s t�SxHt�|j�D]8}tj�|j|�}|j�tt	dd�t
�|������q.W|jS)zE
        Returns list of user excludes
        @return: list
        cSs|��S)N)�strip)�xr&r&r'rL��z1ClUserSelect._get_user_excludes.<locals>.<lambda>)
rDrrrP�CAGEFS_EXCLUDErCr�r�update�mapr�read_file_as_string�
splitlines)r rFZfull_item_pathr&r&r'r��szClUserSelect._get_user_excludescCs�|jr
dSd}tj�|�yddl}Wn&tk
rLtd�t�d�YnXy|�|�sdt	�
|��Wn&tk
r�td�t�d�YnXdS)z4
        Check that cagefs enabled for user
        Nz/usr/share/cagefsrzERROR: CageFS not installed.rz;ERROR: CageFS version is unsupported. Please update CageFS.)r>r0rr1r2r3r4r5�is_user_enabledr
r��AttributeError)r r"r�r2r&r&r'rM�s
z"ClUserSelect._check_user_in_cagefscCsJxDt�|�D]6}|j|krqtj�||�}tj�|�s8qt�|�qWdS)zg
        Removes all symlinks from directory
        @param path: string
        @return: None
        N)rr�rHrrrRr�)r rr�r_r&r&r'r�s
z'ClUserSelect._remove_alternatives_linkscCsH|jr|j�|�}|dSt|j�|��}tj�|j|dd�|dd�S)zz
        Composes and returns user alternative directory path
        @param user: string
        @return: string
        z
/.cl.selector���Nr�zcl.selector)	r>rrdrsrzrrr�CAGEFS_PATH)r r"rg�uidr&r&r'rN�sz#ClUserSelect._compose_user_alt_pathcCs|j��}t|���S)zB
        Returns set of system users
        @return: set
        )r�
get_user_dictrCrZ)r �
users_dictr&r&r'r��s
zClUserSelect._get_system_userscCs@tj�|�r<yt�|�Wn tk
r:t�|d��YnXdS)z?
        Deletes file to be written if it is a symlink
        z'Cannot delete symlink while saving dataN)rrrRr�rr
r)�	file_pathr&r&r'�_delete_if_symlink�szClUserSelect._delete_if_symlinkc
Cs�|j�|�}|j}|j}t��}t��}||kr8||fSy$t�|�t�|�t	�
�||fStk
r�}zt�
||��Wdd}~XYnXdS)z�
        Changes to another uid and returns tuple of previous euid and egid
        @param user: string
        @return: tuple
        N)rr�pw_uid�pw_gidrr8�getegid�setegid�seteuid�secureio�set_capabilityrr
�UnableToChangeToAnotherUser)r r"�entryZnew_uidZnew_gidZcur_euidZcur_egidr%r&r&r'rs

zClUserSelect._change_uidc
Csx|dt��krttjdd�y t�|d�t�|d�Wn6tk
rr}zt�t	|d�|��Wdd}~XYnXdS)zw
        Restores changed uid and gid to original ones
        @param uid_and_gid: tuple
        @return: None
        rT)�clearrN)
rr8r�r�r�r�rr
r�rs)Zuid_and_gidr%r&r&r'rszClUserSelect._restore_uidc
Cs"|stj�|�sdS|�|�|�|�}tj�|�}y4dtt���}tj�	||�}t
�|d|f�Wnftt
tfk
r�}	zBytj�|�r�t�|�WnYnXt�|�t�||	��Wdd}	~	XYnFXy,ttBtBtB}
t�||�t�||
�Wnt
k
�rYnXt�|�dS)z�
        Saves data to file
        @param user: string
        @param file_contents: string
        @param file_path: string
        @return: None
        Nzclseltmp_%sz%s
)rrr�r�rrVrs�uuid�uuid4rrrrorrr�rrr
rrrrr	�rename�chmod)r r"�
file_contentsr��creater$Zfile_directoryrV�	temp_pathr%�maskr&r&r'�_write_to_file's0


zClUserSelect._write_to_filec	CsDy@t��}x2td�D]&}|��}|dk	r8|j�|j�qPqWWntjk
rVYnXyt��	|�}Wntj
fk
r�dSXy�x�t��D]�}y8||��j
|��jgks�|���|j�dkr�w�|j}Wntjk
r�w�YnXy||jk�rt�|tj�Wq�tfk
�rw�Yq�Xq�WWnttfk
�r>YnXdS)z&
        Reloads user process
        �N���)�psutil�Processr��parentrEr1�pid�
NoSuchProcessrrz�NoSuchUserException�process_iter�uids�real�	effective�name�findrHr�kill�signal�SIGHUPrro)r r"Znext_parentrIr��procr�r&r&r'r�Js8
,
zClUserSelect._reload_processesc	Csjg}yHt|�}x2|D]*}|�d�r|d|�d��}|�|�qW|��Wnttfk
rdYnX|S)zH
        Get extension names from user extensions file comments
        z;---�z---)�openr6�rfindr1�closerro)r�
extensionsr��line�extr&r&r'�_skim_over_extensionsns

z"ClUserSelect._skim_over_extensionsc
Cs�|�|�g}|�|�}tj�tj�|�d�}|��}tj�|j�|�d�}tj�	|�s�|�
|�}yt�|�Wn<t
tfk
r�}zt�|�t�||��Wdd}~XYnXt�|�tj�|d�}	tj�	|�r�d|j|�|�df}
nd|jf}
|�|
�x�t|���D]p}|j�r6|d|�d	d
�d}ntj�|d|�d	d
�fd
�}|�|�}
|�d|j|d�t|
��f��qW|�|d�|�|	�dS)zk
        Scans all user settings and backups'em in homedir as INI file
        @param user: string
        zcl.php.dz.cl.selectorNzdefaults.cfgz[versions]
%s = %s
rz[versions]
%s = native
z/alt_php�.�z.iniz	alt-php%szalt_php.iniz[%s%s]
modules = %s
�,�
)rMrNrrrrVrQrrdrPrrrarrrrr
rrHr`r1r�rZr>�replacer�r�)r r"Zbackup_contentsZ
user_alt_pathZ
user_ext_pathrJrtr$r%Zuser_backup_filer9�altZ
curr_ext_pathr�r&r&r'r�sD






 zClUserSelect._backup_settingscCsF|jr
dStj�d�ddlm}ddlm}|||�|||�dS)Nz/usr/share/cagefsr)�da_change_user_php_ini)�ispmanager_create_user_wrapper)r>r0rr1Z
cagefs_da_libr�Zcagefs_ispmanager_libr)r r"r9r�rr&r&r'r��s
zClUserSelect._switch_php_da_isp)N)TT)rAN)F)FFT)FFT)F)N)NNF)T))�__name__�
__module__�__qualname__r�r�rWr�rer(�staticmethodr=r@rBr`rbrhrprvrqrxr�r�r�r�r�r?r�rfr�rMrrNr�r�rrr�r�r�r�r�r&r&r&r'rsT
(
	
#
	

:
*	




#$*r)"�
__future__rrrrr0r�r�r��future.movesrrm�statrrrr	�future.utilsr
r��clselectr�clselectexceptr
�clcommonrr�
clselectprintrr�r�clcommon.utilsrrr&r&r&r'�<module>s$

Youez - 2016 - github.com/yon3zu
LinuXploit