%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python37/lib/python3.7/site-packages/ssa/autotracing/__pycache__/
Upload File :
Create Path :
Current File : //opt/alt/python37/lib/python3.7/site-packages/ssa/autotracing/__pycache__/config.cpython-37.pyc

B

r�b&�@sdZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZmZmZddlmZddlmZdd	lmZmZmZmZd
dlmZd
dlmZd
d
lmZm 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-d5e.ee+e,fd�dd �Z/d6e.e.dd!�d"d#�Z0d7e.e&dd%�d&d'�Z1d8e.e&dd%�d(d)�Z2d9e.ee
e.ee.fd*�d+d,�Z3ee
e.e,fd�d-d.�Z4ee.d�d/d0�Z5dd�d1d2�Z6dd�d3d4�Z7dS):zF
This module contains a config parser for cloudlinux-xray-autotracing
�N)�ConfigParser)�	dataclass)�Enum)�Any�Union�Tuple�Iterator�List�Optional)�ClPwd)�cpusers)�is_cl_solo_edition�
CLEditions�CLEditionDetectionError�SupportedEditions�)�	flag_file)�SSAError)�umask_0�set_privileges�is_xray_user_agent_active�xray_version�$is_io_throttling_detection_availablezautotracing.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^Z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"r`Zpw_datar$r%r%r&rG�s$ 
rGF)�username�mode_allrcCs*t�|r|dkrt�ttjj|�dS)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_checks�remove_custom_users_configsrGr(r/r")rirjr%r%r&�enable�srmcCs$|r|dkrt�ttjj|�dS)ze
    Disable autotracing.
    If username is given, the user's config is changed in Admin's mode
    N)rlrGr(r0r")rirjr%r%r&�disable�srn)rirc
Cs�y
t�Wn,tk
r6}ztjj|jfSd}~XYnX|dk	r�ytt��|���	�dfStj
k
r�}ztt|��|�Wdd}~XYnXt��	�dfS)zk
    Get status of autotracing.
    If username is given, the status for a particular user is returned
    N)
rkrr(r0r"�reasonrUr�get_homedirrL�NoSuchUserExceptionrrM)rir$r%r%r&rJ�s
 rJc	csLxFt�D]<}yt��|�}Wntjk
r4wYnX|t|�fVqWdS)zT
    Iterator over all users on the server along with their autotracing configs
    N)rrrprqrU)r`Z_homedirr%r%r&�user_configs�srrcCsdd�t�D�S)zGet list of disabled userscSs$g|]\}}|��tjjkr|�qSr%)rLr(r0r")�.0riZuserconfr%r%r&�
<listcomp>sz"disabled_users.<locals>.<listcomp>)rrr%r%r%r&�disabled_users	srucCsFx@t�D]6\}}tj�|j�rt�|j�t�tj�|j��qWdS)z,
    Remove custom users configurations
    N)rrr9r:�isfiler<�remove�rmdirr;)�_Zuser_config_pathr%r%r&rlsrlcCs�d}t�s t|ddd�dd��tdd�sFt�sFt|d	d
d�dd��t�dkrft|dd
d�dd��tj�t�s�t|ddd�dd��dS)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)ro�fix�warning)�flagT)�skip_jwt_checkz1Your kernel does not support throttling detectionzupdate the kernelNzX-Ray is not installedz
install X-RayzSlow Site Analyzer is disabledz	enable it)	r'rr
rrr9r:rvr)Z	_templater%r%r&rks"

rk)N)N)NF)NF)N)8r.�loggingr9rW�configparserr�dataclassesr�enumr�typingrrrrr	r
�clcommon.clpwdrZclcommon.cpapir�clcommon.lib.cleditionr
rrr�internal.constantsr�internal.exceptionsr�internal.utilsrrrrr�	getLoggerr�boolr'r(r1r7rMrUr]rr_rGrmrnrJrrrurlrkr%r%r%r&�<module>
s< 

,

"

Zerion Mini Shell 1.0