%PDF- %PDF-
Mini Shell

Mini Shell

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

B

r�b�-�@s�dZddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZmZddl
mZddlmZdd	lmZdd
lmZddlmZGdd
�d
�Zdd�dd�ZdS)zA
This module contains classes implementing SSA Manager behaviour
�N)�iglob)�is_cl_solo_edition�)�load_validated_parser�load_configuration)�	flag_file)�SSAManagerError)�ssa_version)�
AutoTracer)�
DecisionMakerc@s�eZdZdZdd�Zedd�dd��Zeed�dd	��Z	ee
d�d
d��Zee
d�dd
��Ze
e
d�dd�Zd?eejd�dd�Ze
dd�dd�Zdd�dd�Zdd�dd�Zdd�dd�Zdd�dd�Zdd�d d!�Zeed"�d#d$�Zed�d%d&�Zed'd(�d)d*�Zd'd�d+d,�Zed�d-d.�Zd'd�d/d0�Zd'd�d1d2�Z d'd�d3d4�Z!ed�d5d6�Z"d'd�d7d8�Z#d'd�d9d:�Z$dd�d;d<�Z%d'd�d=d>�Z&d'S)@�Managerz
    SSA Manager class.
    cCs0t�d�|_d|_d|_d|_tttj	f|_
dS)N�managerzclos_ssa.ini)Zphp44Zphp51Zphp52Zphp53zphp\d+-imunifyzphp-internal)z /opt/alt/php[0-9][0-9]/link/confz./var/cagefs/*/*/etc/cl.php.d/alt-php[0-9][0-9]z+/opt/cpanel/ea-php[0-9][0-9]/root/etc/php.dz$/opt/plesk/php/[0-9].[0-9]/etc/php.dz'/usr/local/php[0-9][0-9]/lib/php.conf.dzM/usr/share/cagefs/.cpanel.multiphp/opt/cpanel/ea-php[0-9][0-9]/root/etc/php.dzA/usr/share/cagefs-skeleton/usr/local/php[0-9][0-9]/lib/php.conf.d)�logging�	getLogger�logger�
ini_file_name�substrings_to_exclude_dir_paths�wildcard_ini_locations�OSError�
ValueError�
subprocess�SubprocessError�subprocess_errors)�self�r�</opt/alt/python37/lib/python3.7/site-packages/ssa/manager.py�__init__!s
	zManager.__init__zjson str)�returncOs*ddi}|�dd�|��D��t�|�S)z@
        Form a success json response with given kwargs
        �result�successcSsi|]\}}||�qSrr)�.0�k�vrrr�
<dictcomp>:sz$Manager.response.<locals>.<dictcomp>)�update�items�json�dumps)�args�kwargsZraw_responserrr�response4szManager.responsecCstj�t�S)z 
        Is SSA enabled
        )�os�path�isfiler)rrrr�_enabled=szManager._enabledcCsddhS)zK
        Configuration settings required Request Processor restart
        �requests_duration�ignore_listr)rrrr�_restart_required_settingsDsz"Manager._restart_required_settingscCsdddddhS)N�correlation�correlation_coefficient�request_number�time�domains_numberr)rrrr�solo_filtered_settingsKszManager.solo_filtered_settings)�settingsrcCs|j�|�S)z�
        SSA Agent requires restart in case of changing these configuration:
            - requests_duration
            - ignore_list
        )r1�intersection)rr8rrr�_restart_requiredPszManager._restart_requiredF)�commandrc
Csy0tjdd|gdd|d�}|j�d|�d��Wn�tjk
r�}zj|jjd|j�d|j�d	|jpf|j	��|j|j|j|j	d
�d�t
d|j�d|j�d	|jp�|j	����Wdd}~XYnZ|jk
�r}z8|jjd
|�d�dt|�id�t
d
|�d|����Wdd}~XYnX|S)z�
        Run /sbin/service utility to make given operation with SSA Agent service
        :command: command to invoke
        :check_retcode: whether to run with check or not
        :return: subprocess info about completed process
        z
/sbin/servicez	ssa-agentT)�capture_output�text�checkz
ssa-agent z
 succeededz
SSA Agent z failed with code z: )�cmd�retcode�stdout�stderr)�extraNzFailed to run z command for SSA Agent�errz for SSA Agent: )
r�runr�info�CalledProcessError�errorr?�
returncoderArBrr�str)rr;�
check_retcoder�errr�run_service_utilityXs( 4$zManager.run_service_utility)r(rc
Cs�t�}|�|�y|��WnHtk
rd}z*|jjddt|�id�td|����Wdd}~XYnX|�|�r~|j	ddd�|�
�S)	z�
        Change SSA config and restart it.
        :args: dict to override current option values
        :return: JSON encoded result of the action
        z Failed to update SSA config filerD)rCz"Failed to update SSA config file: N�restartT)rK)r�overrideZwrite_ssa_confrrrHrJrr:rMr*)rr(�configrLrrr�
set_configus
 
zManager.set_configcs>t�}tdd�r2�fdd�|��D�}�j|d�S�j|d�S)zV
        Get current SSA config.
        :return: JSON encoded current config
        T)�skip_jwt_checkcs i|]\}}|�jkr||�qSr)r7)r �key�value)rrrr#�sz&Manager.get_config.<locals>.<dictcomp>)rP)rrr%r*)rZfull_configZfiltered_configr)rr�
get_config�s

zManager.get_configcCs|jr
dnd}|j|d�S)zY
        Get current status of SSA.
        :return: JSON encoded current status
        �enabled�disabled)Z
ssa_status)r.r*)r�statusrrr�get_ssa_status�szManager.get_ssa_statuscCs2|jrtddd��|��|��|��|��S)a�
        Enable SSA:
            - add clos_ssa extension for each PHP version on server
            - add clos_ssa extension into cagefs for each user and each ver
            - start SSA Agent (if it is not already started)
            - restart Apache (etc.) and FPM, reset CRIU images
            - create flag_file indicating that SSA is enabled successfully
        :return: JSON encoded current status
        zSSA is already enabled�warning)�flag)r.r�
generate_inis�start_ssa_agent�create_flagr*)rrrr�
enable_ssa�s
zManager.enable_ssacCs2|jstddd��|��|��|��|��S)a{
        Disable SSA:
            - remove clos_ssa extension for each PHP version on server
            - remove clos_ssa extension from cagefs for each user and each ver
            - stop SSA Agent
            - restart Apache (etc.) and FPM, reset CRIU images
            - remove flag_file indicating that SSA is enabled
        :return: JSON encoded current status
        zSSA is already disabledrZ)r[)r.r�remove_clos_inis�stop_ssa_agent�remove_flagr*)rrrr�disable_ssa�s
zManager.disable_ssacCs>dd�t���D�}|j|t�|jr(dnd|��t���d�S)z�
        Get SSA statistics.
        Includes:
        - config values
        - version
        - SSA status (enabled|disabled)
        - SSA Agent status (active|inactive)
        :return: JSON encoded current statistics
        cSsi|]\}}t|���|�qSr)rJ�lower)r rSrTrrrr#�sz%Manager.get_stats.<locals>.<dictcomp>rVrW)rP�versionrX�agent_statusZautotracing)rr%r*r	r.�status_ssa_agentr
�	get_stats)rZ_configrrrrh�s
zManager.get_stats)�dir_pathrcs�fdd�|jD�}|S)z6
        Checking for substrings in a string.
        csg|]}t�|��r|�qSr)�re�search)r Z	substring)rirr�
<listcomp>�sz+Manager.unused_dir_path.<locals>.<listcomp>)r)rri�resr)rir�unused_dir_path�szManager.unused_dir_pathccs8x2|jD](}x"t|�D]}|�|�r&q|VqWqWdS)zr
        Generator of existing paths (matching known wildcard locations)
        for additional ini files
        N)rrrn)r�locationrirrr�existing_paths�s

zManager.existing_pathsN)�ini_pathrc	Cs0ttj�||j�d��}|�d�WdQRXdS)zB
        Enable SSA extension for single ini_path (given)
        �wzextension=clos_ssa.soN)�openr+r,�joinr�write)rrqZinirrr�generate_single_ini�szManager.generate_single_inicCs8|j�d�x|��D]}|�|�qW|j�d�dS)zj
        Place clos_ssa.ini into each existing Additional ini path,
        including cagefs ones
        z Generating clos_ssa.ini files...z	Finished!N)rrFrprv)rrqrrrr\�szManager.generate_inisccsDx>|��D]2}x,t�|�D]}|j|krtj�||�VqWq
WdS)zr
        Generator function searching for clos_ssa.ini files
        in all existing Additional ini paths
        N)rpr+�listdirrr,rt)rrq�namerrr�find_clos_inis�s
zManager.find_clos_iniscCs8|j�d�x|��D]}t�|�qW|j�d�dS)z8
        Remove all gathered clos_ssa.ini files
        zRemoving clos_ssa.ini files...z	Finished!N)rrFryr+�unlink)rZclos_inirrrr`szManager.remove_clos_iniscCs2|�d�}|jr |jddd�n|jddd�dS)ze
        Start SSA Agent service
        or restart it if it is accidentally already running
        rX�startT)rKrNN)rMrI)rrfrrrr]
s
zManager.start_ssa_agentcCs"|�d�}|js|jddd�dS)z`
        Stop SSA Agent service
        or do nothing if it is accidentally not running
        rX�stopT)rKN)rMrI)rrfrrrras
zManager.stop_ssa_agentcCs,y|jddd�Wntk
r&dSXdS)z:
        Get SSA Agent status: active or inactive
        rXT)rK�inactive�active)rMr)rrrrrgs
zManager.status_ssa_agentc	Cs.ttd��WdQRX|j�dt�d��dS)zE
        Create a flag file indicating successful enablement
        rrNz
Flag file z created)rsrrrF)rrrrr^(s
zManager.create_flagc
Csfy"t�t�|j�dt�d��Wn>tk
r`}z |j�dt�dt|����Wdd}~XYnXdS)z:
        Remove a flag file indicating enablement
        z
Flag file z removedz removal failed: N)r+rzrrrFrrZrJ)rrLrrrrb0s
zManager.remove_flagcCst���}|jf|�S)zG
        Get last report.
        :return: JSON encoded report
        )rZget_json_reportr*)rZreportrrr�
get_report;s
zManager.get_reportcCs|jr|��dS)z@
        Regenerates clos_ssa inis while SSA is enabled
        N)r.r\)rrrr�regenerate_inisCszManager.regenerate_inis)F)'�__name__�
__module__�__qualname__�__doc__r�staticmethodr*�property�boolr.�setr1r7�dictr:rJr�CompletedProcessrMrQrUrYr_rcrh�listrnrprvr\ryr`r]rargr^rbrr�rrrrrs>	

		
rzManager instance)rcCst�S)zk
    Factory function for appropriate manager initialization
    :return: appropriate manager instance
    )rrrrr�initialize_managerKsr�)r�r&rr+rjr�globr�clcommon.lib.cleditionrZ
configurationrr�internal.constantsr�internal.exceptionsr�internal.utilsr	Zmodules.autotracerr
Zmodules.decision_makerrrr�rrrr�<module>
s"1

Zerion Mini Shell 1.0