File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/xray/manager/__pycache__/base.cpython-311.pyc
�
C&�imz � �� � d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl m Z m
Z
ddlmZ ddlmZm
Z
mZ ddlZddlmZ ddlmZmZ ddlmZmZ dd lmZ dd
lmZ ddlmZ ddlmZ d
dl!m"Z" d
dl#m$Z$ d
dl%m&Z& d
dl'm(Z(m)Z)m*Z*m+Z+ d
dl,m-Z- d
dl.m/Z/ d
dl0m1Z1 d
dl2m3Z3m4Z4m5Z5 d
dl6m7Z7 d
dl8m9Z9 d
dl:m;Z;m<Z<m=Z= d
dl>m?Z?m@Z@mAZAmBZBmCZCmDZD d
dlEmFZFmGZGmHZHmIZImJZJ ejK rd
dlLmMZM G d� d� � ZNdS )zX
This module contains classes implementing X-Ray Manager behaviour
and helper functions
� N)�datetime� timedelta)�glob)�Iterator�Optional�Tuple)�Feature)�is_panel_feature_supported�get_installed_php_versions)�php_get_vhost_versions�is_wpos_supported)�is_litespeed_running)�drop_privileges)�
disable_quota)�gettext� )�ClWposGetter)�
get_client)�ContinuousManager)�XRayAPIError�XRayMissingDomain�XRayManagerExit�XRayManagerExitPHPUnsupported)�FPMReloadController)�open_local_storage)�NginxUserCache)�
DomainInfo�Task� url_split)�ManageUserAgent)�AdvancedMetrics)�get_xray_exec_user�user_mode_restricted�nginx_user_cache)�no_active_tasks�switch_schedstats�ssa_disabled�_cagefsctl_remount�set_privileges�is_file_recently_modified)�create_ini_files�remove_ini_files�is_global_ini_mode�remove_global_ini_mode_marker�create_global_ini_mode_marker)� APIClientc � � e Zd ZdZdZddddddd d
ddd
dddd�Zd`dedefd�Zde e
fd�Zdefd�Z
dedefd�Zdedefd�Zdedefd�Zdedefd�Zdedefd�Zdedd fd!�Zd"� Zd#edefd$�Zed%edeej fd&�� � Zd'edd fd(�Zd)edefd*�Zd+edefd,�Zdedefd-�Z d.edefd/�Z!d.edd fd0�Z"ed#ede#ee
f fd1�� � Z$d2edd fd3�Z%edefd4�� � Z&dad6�Z'e(ddd7�d)ed8ed9ed:e
d;ed<edd5fd=�� � Z)d)edd5fd>�Z*d?d@�d)ed:e
dd5fdA�Z+dBedd5fdC�Z,dD� Z-e(dBedd5fdE�� � Z.dBedd5fdF�Z/edGedefdH�� � Z0dadI�Z1edJe2dKdLfdM�� � Z3dBedd5fdN�Z4d)edOedd5fdP�Z5d)edd5fdQ�Z6d)edd5fdR�Z7d)edd5fdS�Z8dadT�Z9dadU�Z:dVedd5fdW�Z;dVedXe
dd5fdY�Z<dadZ�Z=dad[�Z>dad\�Z?dad]�Z@dad^�ZAdad_�ZBd S )b�BaseManagerz�
Basic manager abstract class.
Implements methods common for all managers.
Requires managers to implement their custom methods.
z/var/run/xray-agent.pidz/opt/alt/php54/link/confz/opt/alt/php55/link/confz/opt/alt/php56/link/confz/opt/alt/php70/link/confz/opt/alt/php71/link/confz/opt/alt/php72/link/confz/opt/alt/php73/link/confz/opt/alt/php74/link/confz/opt/alt/php80/link/confz/opt/alt/php81/link/confz/opt/alt/php82/link/confz/opt/alt/php83/link/confz/opt/alt/php84/link/confz/opt/alt/php85/link/conf)z alt-php54z alt-php55z alt-php56z alt-php70z alt-php71z alt-php72z alt-php73z alt-php74z alt-php80z alt-php81z alt-php82z alt-php83z alt-php84z alt-php85F� system_id�phpinfo_modec � � t � � | _ || _ t j d� � | _ t
� � | _ t � � | _ || _
t d� � | j �� � | _ d S )N�manager�lists�r3 )r �api_client_class�sys_id�logging� getLogger�loggerr �continuous_monitoringr �manage_user_agentr4 �
ui_api_client)�selfr3 r4 s �H/opt/cloudlinux/venv/lib64/python3.11/site-packages/xray/manager/base.py�__init__zBaseManager.__init__c sr � � 2<���������'� �2�2���%6�%8�%8��"�!0�!2�!2���(���0�Z��0�0�4�;�G�G�G����� �returnc � � t | j � � 5 }t |� � � � � cd d d � � S # 1 swxY w Y d S # t t
f$ r t
j d� � Y d S w xY w)Nz'Unable to read daemon pid from pidfile.)�open�DAEMON_PIDFILE�int�read�OSError�IOErrorr; �warning)rA �fs rB �_get_daemon_pidzBaseManager._get_daemon_pidn s� � � G��d�)�*�*�
%�a��1�6�6�8�8�}�}�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�
%�
%����!� G� G� G��O�E�F�F�F�F�F�F� G���s3 �A �!A�A �A�A �A�A �%A:�9A:c � � | j S )z\
Get supported PHP versions
:return: a dict with supported versions
)�VERSIONS�rA s rB �supported_versionszBaseManager.supported_versionsu s � �
�}�rD �php_versionc �. � || � � � v S )z�
Check if given PHP version is supported
:param php_version: PHP version, e.g. 'alt-phpXY'
:return: True if version is supported, False otherwise
)rS )rA rT s rB �is_version_supportedz BaseManager.is_version_supported| s � � �d�5�5�7�7�7�7rD �domain_infoc �Z � | � � � � |j � � S )zh
Get a path to directory for additional ini file for based on
panel-set version
)rS �get�panel_php_version�rA rW s rB � _ini_pathzBaseManager._ini_path� s'