PATH:
usr
/
share
/
lve
/
dbgovernor
/
modules
/
__pycache__
/
Editing: base.cpython-311.pyc
� N��h�� � �b � d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddlZ ddlZ ddl m Z ddlZej � d� � ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d� Z6 G d� d� � Z7dS ) zW This module contains base class for managing governor on all supported control panels � N)�datetimez../)$� IS_UBUNTU� RPM_TEMP_PATH�add_line�bcolors� check_file�check_mysqld_is_alive�confirm_packages_installation�correct_mysqld_service_for_cl7�/correct_remove_notowned_mysql_service_names_cl7�<correct_remove_notowned_mysql_service_names_not_symlynks_cl7�create_mysqld_link� debug_log�download_packages�exec_command�exec_command_out�force_update_cagefs� get_cl_num�get_mysql_log_file�get_section_from_all_cnfs�grep�install_deb_packages�install_packages�is_package_installed�makedir_recursive�mycnf_writable� mysql_version�patch_governor_config�read_config_file� read_file�remove_packages�rewrite_file�service�show_new_packages_info�touch�wizard_install_confirm� write_filec �� � g }| � � � D ][}|� d� � \ }}t |� � dk rt |� � dk sJ �||vr|� |� � �\|S )N�:r )�values�split�len�append)�module_streams�names� module_stream�name�streams �)/usr/share/lve/dbgovernor/modules/base.py�extract_module_namesr4 * s~ � ��E�'�.�.�0�0� � � �$�*�*�3�/�/���f��4�y�y�1�}�}��V���q����0��u����L�L�������L� c �T � e Zd ZdZdZdZdZdZdZi dd�d d �dd�d d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d&�d'd(�Z i d d)�dd*�d d+�dd,�dd-�dd.�dd/�dd0�dd1�dd2�dd3�dd4�d!d5�d#d6�d%d7�d'd8�d9d:�Z ee � � Zd;Z d;Zd;Zd;Zd<Zd<Zd=Zd>Zed?� � � Zd@� Zd�dB�ZefdC�ZdD� Zd�dF�ZdG� ZdH� ZdI� ZdJ� ZdK� Z dL� Z!dM� Z"dN� Z#dO� Z$dP� Z%dQ� Z&dR� Z'dS� Z(dT� Z)dU� Z*dV� Z+dW� Z,dX� Z-dY� Z.dZ� Z/ed[� � � Z0d\� Z1ed]� � � Z2ed^� � � Z3d�da�Z4d�db�Z5dc� Z6d�de�Z7df� Z8edg� � � Z9dh� Z:di� Z;dj� Z<dk� Z=dl� Z>dm� Z?dn� Z@do� ZAdp� ZBdq� ZCdr� ZDds� ZEdt� ZFedu� � � ZGdv� ZHdw� ZIdx� ZJdy� ZKedz� � � ZLd{� ZMd|� ZNd}� ZOd~� ZPd� ZQd�� ZRd�d��ZSd�d��ZTd�� ZUd�� ZVd�d��ZWd�� ZXd�d��ZYd�� ZZdES )��InstallManagerz5 Base class with standard methods for any CP z/usr/share/lve/dbgovernor/z$/usr/share/lve/dbgovernor/mysql.typez./usr/share/lve/dbgovernor/mysql.type.installedz*/usr/share/lve/dbgovernor/cl8_module.savedz!/usr/share/lve/dbgovernor/history�mysql51z mysql-5.1�mysql55z mysql-5.5�mysql56z mysql-5.6�mysql57z mysql-5.7�mysql80z mysql-8.0�mysql84z mysql-8.4� mariadb55zmariadb-5.5� mariadb100zmariadb-10.0� mariadb101zmariadb-10.1� mariadb102zmariadb-10.2� mariadb103zmariadb-10.3� mariadb104zmariadb-10.4� mariadb105zmariadb-10.5� mariadb106zmariadb-10.6�mariadb1011z mariadb-10.11�mariadb1104z mariadb-11.04� percona56zpercona-5.6zmysql:cl-MySQL55zmysql:cl-MySQL56zmysql:cl-MySQL57zmysql:cl-MySQL80zmysql:cl-MySQL84zmariadb:cl-MariaDB55zmariadb:cl-MariaDB100zmariadb:cl-MariaDB101zmariadb:cl-MariaDB102zmariadb:cl-MariaDB103zmariadb:cl-MariaDB104zmariadb:cl-MariaDB105zmariadb:cl-MariaDB106zmariadb:cl-MariaDB1011zmariadb:cl-MariaDB1104zpercona:cl-Percona56�autoz mysql:8.0F� z/etc/my.cnf.govprevz/etc/my.cnf.d.govprevc � � d| k rddl m} || � � S d| k rddlm} || � � S d| k rddlm} || � � S d| k rdd lm} || � � S d | k rddlm } || � � S t | � � S )z5 Get object instance for specific cp �cPanel� )� cPanelManager�DirectAdmin)�DirectAdminManager�Plesk)�PleskManager� ISPManager)�ISPMManager� InterWorx)�IWorxManager)�cpanelrN �darP �pleskrR � ispmanagerrT �iworxrV r7 )�cp_namerN rP rR rT rV s r3 �factoryzInstallManager.factoryp s� � � �w���-�-�-�-�-�-� �=��)�)�)� �g� %� %�.�.�.�.�.�.�%�%�g�.�.�.� �� � �+�+�+�+�+�+��<��(�(�(� �W� $� $�/�/�/�/�/�/��;�w�'�'�'� �G� #� #�+�+�+�+�+�+��<��(�(�(�!�'�*�*�*r5 c � � t � � | _ || _ d | _ g | _ g | _ d| _ d| _ t d� � | _ d S )N�/etc/my.cnfz/var/lib/mysql�datadir) r � cl_versionr\ �prev_version� _old_packages� _new_packages�my_cnf_path� VAR_LIB_MYSQLr �my_cnf_datadir)�selfr\ s r3 �__init__zInstallManager.__init__� sT � �$�,�,������ ��������� )���-���7� �B�B����r5 � /etc/my.cnf.dc � � t j � |� � r7t j | j d�� � t j || j � � dS dS )z� Create a copy of configs in my.cnf.d to restore them after installation of CL-patched mysql package. mysqlgovernor install should work like transaction, so we need only one backup from current mysql installation T)� ignore_errorsN)�os�path�exists�shutil�rmtree�MY_CNF_D_BACKUP_PATH�copytree)rh � source_dirs r3 �_backup_my_cnf_dzInstallManager._backup_my_cnf_d� sZ � � �7�>�>�*�%�%� C��M�$�3�4�H�H�H�H��O�J��(A�B�B�B�B�B� C� Cr5 c �� � d}d}t j ||� � t j | j � � D ]�\ }}}|� | j |d� � }t j � |� � st j |� � |D ]W}t j � ||� � } t j � ||� � } t j | | � � �X��dS )z[ Move backups of /etc/my.cnf and /etc/my.cnf.d back to original locations. r_ rj rM N) rp �copy2rm �walkrr �replacern ro �makedirs�join)rh � my_cnf_src�my_cnf_dest� my_cnf_d_dest�src_dirpath�_�files�dest_dirpath�file�src_path� dest_paths r3 �_restore_all_my_cnfz"InstallManager._restore_all_my_cnf� s� � � $��'� ���Z��-�-�-� &(�W�T�-F�%G�%G� 2� 2�!�K��E�&�.�.�t�/H�-�YZ�[�[�L��7�>�>�,�/�/� *���L�)�)�)�� 2� 2���7�<�<��T�:�:���G�L�L��t�<�<� ���X�y�1�1�1�1� 2� 2� 2r5 c �T � t j � | j � � rt j | j � � t j � | j � � rt j | j � � dS dS # t $ r}t d|� �� � Y d}~dS d}~ww xY w)zJ Delete internal backups of /etc/my.cnf and /etc/my.cnf.d z0Unable to delete internal /etc/my.cnf* backups: N) rm rn ro �MY_CNF_BACKUP_PATH�unlinkrr rp rq �PermissionError�print)rh r� �es r3 �_cleanup_all_my_cnfz"InstallManager._cleanup_all_my_cnf� s� � � K��w�~�~�d�5�6�6� 3�� �$�1�2�2�2��w�~�~�d�7�8�8� 9�� �d�7�8�8�8�8�8� 9� 9��� K� K� K��I�a�I�I�J�J�J�J�J�J�J�J�J����� K���s �A:B � B'� B"�"B'Nc � � � |dk rt � � rt d� � dS � fd�� j d� d� � j d� j d�}||� � � vrt d |� �� � �|d k rAd}t j � |� � r |� |� � |� � dS |dk rd}n|d k r|� d�}n� j }t j � |� � rk |dk rt j |d|z � � dS |� |� � |� � dS # t $ r}t d|� �� � Y d}~dS d}~ww xY wdS )z� Allows to manage known manipulations with /etc/my.cnf file :param action: action to perform :param old_path: path to my.cnf if needed r% r_ Nc �8 �� t j | �j � � S �N)rp rw r� )�xrh s �r3 �<lambda>z/InstallManager.my_cnf_manager.<locals>.<lambda>� s �� ���Q��0G� H� H� r5 c �, � t j | d� � S �Nr_ )rp �copy�r� s r3 r� z/InstallManager.my_cnf_manager.<locals>.<lambda>� s � �V�[��M�%B�%B� r5 c �, � t j | d� � S r� )rp rw r� s r3 r� z/InstallManager.my_cnf_manager.<locals>.<lambda>� s � ���a��)G�)G� r5 rJ )�backup�restore�restore_old�restore_rpmsave�cleanup� backup_old�backup_my_cnf_dz*Cannot manage /etc/my.cnf: unknown action r� rj r� r� z/my.cnfr� z %s/my.cnfz*Unable to perform actions on the my.cnf : )r r% r� r� ru �keys�RuntimeErrorrm rn ro �getr� rp �mover� r� )rh �action�old_path�actions� my_cnf_d_path�working_pathr� s ` r3 �my_cnf_managerzInstallManager.my_cnf_manager� s� �� � �W������ %��m�$�$�$��F� I�H�H�H��/�B�B�G�G��/��#�4� � �� ������'�'��T�F�T�T�U�U�U��&�&�&�+�M��w�~�~�m�,�,� �#����F�#�#�M�2�2�2����X���(�L�L� �}� $� $�&�/�/�/�L�L��2�L� �7�>�>�,�'�'� H� H��\�)�)��K��k�H�.D�E�E�E�E�E�'�G�K�K��'�'��5�5�5�5�5��"� H� H� H��F�1�F�F�G�G�G�G�G�G�G�G�G����� H���� H� Hs �0D0 �D0 �0 E�:E�Ec �& � ddd�}| j � d�}| j � d�}t d� � }|� � � D �]}|� |� � D ]�\ }}||d v r[t j � |� � s;t d� ||� � � � � |� |||� � �j||d v rwt j � t j � |� � � � s;t d� ||� � � � � |� |||� � ���| � � � }|dv r�|� d � � s|� d � � d\ } } d}d\ }} d}|dk r | |}}|| g}n|dk r||}}| | g}|D ]c}d} |� d |� � }n# t j $ r Y nw xY w|�0|� d |� � |� d d|z |� � �d|� d ||� � t% � � rT|� � � rBt'