HEX
Server: LiteSpeed
System: Linux node612.namehero.net 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: dfwparty (1186)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //proc/self/root/usr/local/lsws/lsns/bin/__pycache__/common.cpython-36.pyc
3

�Xj�.�@s�ddlZddlZddlZddlZddlZddlZddlZddlTddlmZdZ	dZ
dZdZdZ
dZejeZde_d	e_de_d
e_dd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zejd�Zejdej�Zdd�Z dd�Z!dd�Z"dd �Z#d!d"�Z$dMd#d$�Z%dNd%d&�Z&d'd(�Z'd)d*�Z(d+d,�Z)d-d.�Z*d/d0�Z+d1d2�Z,d3d4�Z-d5d6�Z.d7d8�Z/d9d:�Z0d;d<�Z1d=d>�Z2d?d@�Z3dAdB�Z4dCdD�Z5dEdF�Z6dGdH�Z7dIdJ�Z8dKdL�Z9dS)O�N)�*)�PIPEz0.0.5����z/usr/local/lswsFcCstjddd�dS)Nz%(asctime)s.%(msecs)03dz [%(levelname)s] %(message)sz%Y-%m-%d %H:%M:%S)�formatZdatefmtz3%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s)�loggingZbasicConfig�r
r
�"/usr/local/lsws/lsns/bin/common.py�init_loggingsrcCstjS)N)�this�
serverRootr
r
r
r�server_rootsrcCs
|t_dS)N)r
r)�rootr
r
r�set_server_rootsrcCst�d|S)Nz/lsns/conf/)r)�fileonlyr
r
r�
get_conf_file!srcCst�d|S)Nz
/lsns/bin/)r)rr
r
r�get_bin_file$srcCstj|�tjd�dS)Nr)r	�error�sys�exit)�msgr
r
r�fatal_error's
rz\A[A-Za-z0-9 _.\-]{1,64}\Zz\A-?\d+[KMGT]?\ZcCsHt|t�stj|�r$td|�d|ks8|j�dkrDtd|�|S)z�Allowlist package names to prevent path traversal in pkg_to_filename().
    cPanel/Plesk allow spaces in plan/package names (e.g. 'Default Domain').
    Reject anything with path separators, control chars, or other oddities.zInvalid package name: %rz..��.)rr)�
isinstance�str�_PKG_NAME_RE�matchr�strip)�pkgr
r
r�validate_pkg_name/s
r"cCsJyt|�}Wn$ttfk
r0td|�YnX|dkrFtd|�|S)zRCoerce uid to int; reject strings starting with '-' that would be parsed as flags.zInvalid UID: %rrzInvalid UID (negative): %r)�int�	TypeError�
ValueErrorr)�uid�nr
r
r�validate_uid;sr(cCs"t|�}tj|�std|�|S)z\Allow only numeric cgroup values (optionally suffixed K/M/G/T) before passing to subprocess.zInvalid numeric value: %r)r�_NUMERIC_VAL_RErr)�val�sr
r
r�validate_numeric_valueEs
r,cCsFtjj|�}tjj|�}||krB|j|tj�rBtd||f�|S)zNEnsure realpath(path) is contained under realpath(root). Returns the realpath.z+Path escapes expected root: %r not under %r)�os�path�realpath�
startswith�sepr)r.rZrpZrrr
r
r�validate_path_underLs
r2cCsdddddgS)N�cpu�io�iops�mem�tasksr
r
r
r
r�get_optionsTsr8cCs|j�rdytjt|��}Wq�tk
r`}z*|s@td||f�tjd||f�dSd}~Xq�XnVytj|�}WnFtk
r�}z*|s�td||f�tjd||f�dSd}~XnX|j	t
�k�r�|s�td|j	t
�f�tjd|j	t
�f�dS|dfS)	NzError getting UID for %s: %sFzError getting name for %s: %sz#Specified uid: %d < minimum uid: %dT)NF)NF)NF)�isdigit�pwd�getpwuidr#�	Exceptionrr	�debug�getpwnam�pw_uid�get_min_uid)Zparam�no_fatal�	user_info�errr
r
r�get_userWs*rDcCs2g}x(|D] }t||�\}}|r
|j|�q
W|S)N)rD�append)�uidsrA�usersr&rBZgotr
r
r�	get_usersos
rHcCstjjd�rdSdS)Nz/etc/plesk-releaseTF)r-r.�existsr
r
r
r�	get_pleskwsrJcCst�r
dSdS)Ni'i�)rJr
r
r
r�get_def_min_uid|srKc(Cs4tjdkrtjStd�}yt|d�}WnPtk
rv}z4tjdkr^tjd||t�f�dt_t�t_tjSd}~XnXy|j	�}WnRtk
r�}z6tjdkr�tjd||t�f�dt_t
t��}WYdd}~XnX|j�yt|j
��t_Wn*ttfk
�rtd||f�YnXtjdtj�tjS)	Nrz	lsns.conf�rz8Error opening %s: %s, continuing with default min uid %dTz8Error reading %s: %s, continuing with default min uid %dzInvalid min uid in %s: %rzUsing min uid: %d)r
�min_uidr�openr<�loggedr	�inforK�readliner�closer#r �AttributeErrorr%rr=)Zfullfile�frCZuidstrr
r
rr@�s2


r@cCs\i}g}tj�}xF|D]>}|jt�kr(q|j|kr4q|jdkr@q|||j<|j|�qW|S)NZnobody)r:�getpwallr?r@�pw_namerE)Zuid_dictZfinal_usersrG�userr
r
rrU�s



rUcCs
t�dS)Nz/lsns/conf/lscntr.txt)rr
r
r
r�container_file�srXcCs
t�dS)Nz/conf/httpd_config.conf)rr
r
r
r�
ols_conf_file�srYcCs
t�dS)Nz/conf/httpd_config.xml)rr
r
r
r�lsws_conf_file�srZcCs
t�dS)Nz /lsns/conf/ns_disabled_uids.conf)rr
r
r
r�get_disabled_uid_file�sr[cCs
t�dS)Nz/lsns/conf/packages)rr
r
r
r�get_pkg_dir�sr\cCsR|dkrt|�tjjt��sDtjjt��s4td�tjt�dd�t�d|S)Nrz3Missing LiteSpeed high level installation directoryi�)�modez/%s.conf)r"r-r.�isdirr\rr�mkdir)r!r
r
r�pkg_to_filename�sr`cCs
t�dS)Nz"/lsns/conf/redis_package_size.conf)rr
r
r
r�get_package_size_file�sracCstjt�tj�std�dS)Nz5You must configure LiteSpeed for LiteSpeed Containers)r-�accessrX�F_OKrr
r
r
r�ls_ok�srdcCs"tjdtj�rdt_dSt�dS)Nz/etc/cagefs/cagefs.mpT)r-rbrcr
�clrdr
r
r
r�ls_cl_ok�srfcCstjS)N)r
rer
r
r
r�is_cl�srgcCs�tjd||f�y tj|tjtjBtjBd�}Wn2tk
rd}ztd||f�WYdd}~XnXztj	|d�Wdtj
|�XdS)z�Create or update mtime of `file` WITHOUT following symlinks.
    Defends against unprivileged users planting a symlink at file (e.g. in $HOME)
    that would let root touch an arbitrary path.z restart_external %s by touch: %si�zError touching %s: %sN)r	r=r-rN�O_WRONLY�O_CREAT�
O_NOFOLLOW�OSErrorr�utimerR)�fileZdesc�fdrCr
r
r�touch_restart_external�s "roc	Csi}y�tjjt��dkr�tt�d�}tj|�}|j�xd|dD]X}tjj|�}x"|D]}|j	|krV|||j
<PqVWtjj|�s�tj|dd�t
|d�q@W|r�t
dd�n*x(|D] }|j
|kr�q�t
|j	d	d
�q�WWn0tk
�r}ztd|�WYdd}~XnXdS)NrrLZ
reset_listi�)r]z
in lscntr.txtz,/usr/local/lsws/admin/tmp/.lsphp_restart.txtzfor allz/.lsphp_restart.txtzfor homezError managing restart: %s)r-r.�getsizerXrN�json�loadrR�dirname�pw_dirrVrIr_ror<r)	rG�allZ
users_usedrT�datarmZdironlyrWrCr
r
r�restart_external�s.





rwcCs�i}i}tjd�}g}x�|D]�}t|�dkr<|dd�dkst|�dkrX|dd�dkst|�dkr�|dd�dks|dd�dkr�qd	|}tj|�}t|j�d
krtjd|dt|��|j	|�|||<qWxn|D]f}d
}x\|�r@d}xL|D]D}	||	k�rq�t|�t|	�kr�||	dt|��kr�|j
|	�d
}Pq�Wq�Wq�WxL|D]D}tj||j�}
tj
||j�}|
|k�r�i||
<|||
|<�qLWtjdt|�dt|��||fS)Nz/devrZloop�ZcdromrZdm�srz/dev/rz
filename: z statinfo: TFzFinal devices: z Block Devices: )r-�listdir�len�stat�S_ISBLK�st_moder	r=rrE�remove�major�st_rdev�minor)Z
block_devicesZstatinfo_dev�filesZdevicesrm�filenameZstatinfoZdeviceZretryZinnerr�r�r
r
r�get_devicess@

d




$


r�cCs�|dkrdSt|�}|dkr&d}d}n:|dkr8d}d}n(|dkrJd}d}n|dkr\d}d	}n|St||�d
kr�d||tt||d
d
��|f}nd|||f}tt|��|kr�|Stjd
tt|��||f�|S)Nrl�Ti@�Gi�Mi�K�
z%d.%d%sz%d%sz%s != %s use %s)�float�roundr#r�int_num_valuesr	r=)�valstrr*ZdivisorZ	qualifierZstr_numr
r
r�str_num_values#s.(r�cCs$|dks|dkrdS|j�r$t|�St|�dkr<td|�|t|�dj�}|j�sbd}|}n|dt|�d�}yt|�}Wn tk
r�td|�YnX|dkr�d}nD|d	kr�d
}n6|dkr�d}n(|d
kr�d}n|dkr�d}ntd|�tj	d|||t||�f�||}t|�S)Nrz-1rrzSInvalid value specification: %s, must be number optionally followed by T, G, M or Kz\Invalid value specification (prefix): %s, must be number optionally followed by T, G, M or Kr�lr�i@r�ir�iz\Invalid value specification (suffix): %s, must be number optionally followed by T, G, M or Kzint_num %s, %f * %f = %d���)
r9r#r{r�upper�isalphar�r<r	r=)r��suffix�prefixZprefZ
multiplierZflr
r
rr�>s:r�)F)F):rqr	r-r:�re�
subprocessrr|r�VERSIONZ
OPTION_CPUZ	OPTION_IOZOPTION_IOPSZ
OPTION_MEMZOPTION_TASKS�modules�__name__r
rOrrMrerrrrrr�compiler�
IGNORECASEr)r"r(r,r2r8rDrHrJrKr@rUrXrYrZr[r\r`rardrfrgrorwr�r�r�r
r
r
r�<module>s^8





"