HEX
Server: LiteSpeed
System: Linux ws4.angoweb.net 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 11 04:57:59 EST 2025 x86_64
User: tswangoe (2287)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/ssa/autotracing/__pycache__/config.cpython-37.pyc
B

�BgdG(�@sdZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZmZmZddlmZddlmZdd	lmZdd
lmZmZmZddlmZdd
lmZddlm Z m!Z!m"Z"m#Z#m$Z$e�%d�Z&e'd�dd�Z(Gdd�de	�Z)eGdd�d��Z*Gdd�de�Z+Gdd�de+�Z,Gdd�de+�Z-e*d�dd�Z.d8e/ee,e-fd�d d!�Z0d9e/e/dd"�d#d$�Z1d:e/e'dd&�d'd(�Z2d;e/e'dd&�d)d*�Z3d<e/ee
e/ee/fd+�d,d-�Z4e
d�d.d/�Z5ee
e/e-fd�d0d1�Z6ee/d�d2d3�Z7dd�d4d5�Z8dd�d6d7�Z9dS)=zF
This module contains a config parser for cloudlinux-xray-autotracing
�N)�ConfigParser)�	dataclass)�Enum)�Any�Union�Tuple�Iterator�List�Optional)�ClPwd)�cpusers)�CPAPIException)�
CLEditions�CLEditionDetectionError�SupportedEditions�)�	flag_file)�SSAError)�umask_0�set_privileges�is_xray_user_agent_active�xray_version�is_kernel_version_supportedzautotracing.config)�returnc
Csjytjdd�}t�d|�Wn4tk
rP}zt�dt|j��dSd}~XYnX|dkr^dS|tj	j
kS)zACurrently Auto tracing feature is not supported on Shared editionT)�skip_marker_checkzCurrent edition: %szUnable to detect edition: %sFN)r�get_cl_edition�logger�infor�error�str�messager�SHARED�value)�edition�e�r%�G/opt/alt/python37/lib/python3.7/site-packages/ssa/autotracing/config.py�is_edition_supported*sr'c@seZdZdZdZdZdS)�Statusz
    Autotracing statuses
    �enabled�disabledN)�__name__�
__module__�__qualname__�__doc__�ENABLED�DISABLEDr%r%r%r&r(Hsr(c@s*eZdZUdZeed<eed<eed<dS)�Userz
    User container
    �uid�name�homeN)r+r,r-r.�int�__annotations__rr%r%r%r&r1Ps
r1c@sbeZdZdZdZdd�dd�Zeedd�dd	�Zeed
�dd�Zedd
�dd�Z	ed�dd�Z
dS)�AutotracingConfigz)
    Autotracing basic config parser
    �confN)rcCs(tj�|j�}tj�|�s$t�|�dS)zh
        If subdirectory location for autotracing config file does not exist,
        create it
        N)�os�path�dirname�config_file�exists�mkdir)�selfZsubdir_pathr%r%r&�check_config_dir`sz"AutotracingConfig.check_config_dir)�keyr"rc	Cs<|||j|<|��t|jd��}|�|�WdQRXdS)zD
        Set given config item 'key' to given value 'value'
        �wN)�main_sectionr@�openr<�write)r?rAr"�
configfiler%r%r&�set_config_valueisz"AutotracingConfig.set_config_value)rArcCs|�|j�||j|S)zD
        Set given config item 'key' to given value 'value'
        )�readr<rC)r?rAr%r%r&�get_config_valuersz"AutotracingConfig.get_config_value)r"rcCs|�d|�dS)z"
        Set given status
        �statusN)rG)r?r"r%r%r&�
set_statusyszAutotracingConfig.set_statuscCs
|�d�S)z"
        Set given status
        rJ)rI)r?r%r%r&�
get_statusszAutotracingConfig.get_status)r+r,r-r.rCr@rrGrIrKrLr%r%r%r&r7Zs		r7cs eZdZdZ�fdd�Z�ZS)�AdminLevelConfigzAdmin level autotracing configcs&ddi}d|_t�j||jdd�dS)NrJr*z/usr/share/clos_ssa/autotracingF)�default_section�strict)r<�super�__init__rC)r?�defaults)�	__class__r%r&rQ�szAdminLevelConfig.__init__)r+r,r-r.rQ�
__classcell__r%r%)rSr&rM�srMcs&eZdZdZed��fdd�Z�ZS)�UserLevelConfigzUser level autotracing config)�
configpathcs2dt���i}|�d�|_t�j||jdd�dS)NrJz/.ssa/autotracingF)rNrO)rMrLr<rPrQrC)r?rVrR)rSr%r&rQ�szUserLevelConfig.__init__)r+r,r-r.rrQrTr%r%)rSr&rU�srUcCs t�t���}t|j|j|j�S)z*
    Get current user and his details
    )�pwd�getpwuidr9�getuidr1�pw_uid�pw_name�pw_dir)Zpw_entryr%r%r&�who_am_i�sr])�	user_homercCsDt�}|jdkr&|rt|�}q@t�}nt�r8t|j�}ntd��|S)zF
    Initialize correct config file instance depending on context
    rz�Auto tracing management is not available. Reason: X-Ray End-User plugin is not enabled, please contact your system administrator for help.)r]r2rUrMrr4r)r^�current_userZ
conf_instancer%r%r&�config_instance�s

r`)r"�userrc
Cs�|r�yt�|�}Wn4tk
rF}ztd|�d��|�Wdd}~XYnXy0t|j|jd��t|j��	|�WdQRXWq�t
k
r�}zt|j�|�Wdd}~XYq�Xn td��t��	|�WdQRXdS)z

    zUser 'z' not foundN)�
target_uid�
target_gid�)
rW�getpwnam�KeyErrorrrrZ�pw_gidr`r\rK�PermissionError�strerrorr)r"ra�pw_datar$r%r%r&rG�s$ 
rGF)�username�mode_allrc
Cs\y
t�Wn(tk
r2}z
|j}Wdd}~XYnXd}|rJ|dkrJt�ttjj|�|S)z�
    Enable autotracing.
    If username is given, the user's config is changed in Admin's mode.
    Perform some misconfiguration checks before enabling and
    do not enable if some of them appear
    N)�misconfiguration_checksr�reason�remove_custom_users_configsrGr(r/r")rkrlr$�issuer%r%r&�enable�s
rqcCs$|r|dkrt�ttjj|�dS)ze
    Disable autotracing.
    If username is given, the user's config is changed in Admin's mode
    N)rorGr(r0r")rkrlr%r%r&�disable�srr)rkrc
Cs�y
t�Wn(tk
r2}z
|j}Wdd}~XYnXd}|dk	r�ytt��|����dfStjk
r�}ztt|��|�Wdd}~XYnXt	���|fS)zk
    Get status of autotracing.
    If username is given, the status for a particular user is returned
    N)
rmrrnrUr�get_homedirrL�NoSuchUserExceptionrrM)rkr$rpr%r%r&rJ�s
 rJcCs"yt�Stk
rt�SXdS)zP
    Get panel users via cpapi, ignoring exceptions like NotSupported, etc.
    N)rr
�tupler%r%r%r&�_panel_userssrvc	csLxFt�D]<}yt��|�}Wntjk
r4wYnX|t|�fVqWdS)zT
    Iterator over all users on the server along with their autotracing configs
    N)rvrrsrtrU)raZ_homedirr%r%r&�user_configssrwcCsdd�t�D�S)zGet list of disabled userscSs$g|]\}}|��tjjkr|�qSr%)rLr(r0r")�.0rkZuserconfr%r%r&�
<listcomp>sz"disabled_users.<locals>.<listcomp>)rwr%r%r%r&�disabled_userssrzcCs�x�t�D]�\}}t�|�}yNt|j|jd��4tj�|j	�r\t�
|j	�t�tj�|j	��WdQRXWqt
k
r�}zt|j�|�Wdd}~XYqXqWdS)z,
    Remove custom users configurations
    )rbrcN)rwrWrerrZrgr9r:�isfiler<�remove�rmdirr;rhrri)ra�user_config_pathrjr$r%r%r&ro"s
"rocCs�d}t�s t|ddd�dd��t�s<t|ddd�dd��t�d	kr\t|d
dd�dd��tj�t�s~t|dd
d�dd��d	S)z(Additional checks for known malfunctionsz@%(reason)s. You should %(fix)s in order to get Auto Tracing workz>Your current CL edition is unsupported by Auto Tracing featurez+use either CL Shared Pro or CL Solo edition)rn�fix�warning)�flagz1Your kernel does not support throttling detectionzupdate the kernelNzX-Ray is not installedz
install X-RayzSlow Site Analyzer is disabledz	enable it)r'rrrr9r:r{r)Z	_templater%r%r&rm3s 
rm)N)N)NF)NF)N):r.�loggingr9rW�configparserr�dataclassesr�enumr�typingrrrrr	r
�clcommon.clpwdr�clcommon.cpapirZclcommon.cpapi.cpapiexceptionsr
�clcommon.lib.cleditionrrr�internal.constantsr�internal.exceptionsr�internal.utilsrrrrr�	getLoggerr�boolr'r(r1r7rMrUr]rr`rGrqrrrJrvrwrzrormr%r%r%r&�<module>
s@ 

,
"