HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/clwizard/modules/__pycache__/base.cpython-37.pyc
B

qo]�A���@s�ddlmZddlZddlmZddlmZmZmZddl	m
Z
ddlmZddl
mZddlmZmZmZmZmZmZmZdd	lmZdd
lmZmZGdd�de�ZdS)
�)�absolute_importN)�abstractmethod)�Dict�List�Optional)�cpapi)�GroupInfoReader)�	is_ubuntu)�ExternalProgramFailed�get_cl_version�get_package_db_errors�get_passenger_package_name�is_ea4�is_package_installed�run_command)�InstallationFailedException)�convert_package_version�setup_loggerc@s�eZdZdZdZdZdd�Zd"dd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zedd��Zedd��Zedd��Zedd��Zed d!��ZdS)#�WizardInstallerz2
    General interface for modules installers
    �NcCstd|jj|j�|_dS)Nzwizard.)r�	__class__�__name__�LOG_FILE�
app_logger)�self�r�py/clwizard/modules/base.py�__init__(szWizardInstaller.__init__c
Cs�|j�d�|j�dd�|��yt||d�}Wn@tk
rp}z"|j�d�|j�t|���Wdd}~XYnX|j�d�|j�|�|j�d�|S)	z!Run external tool and log resultsz<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~zExecuting command %s...� )Zenv_datazP...external command failed, see the following lines for tracebacks, errors, etc.Nz3...external command successfully ended with output:z<------------------------------------------------------------)r�info�joinrr
�error�str)r�cmd�cmd_env�output�errrrr�_run_command+szWizardInstaller._run_commandcCs4t�}|r,d|�d|��}|j�|�t��t|�S)z!Check if package exists on serverzCan't check package z presence. Errors:
)rrr!rr)rZpackage_nameZ
error_messageZlog_messagerrr�_is_package_installed>sz%WizardInstaller._is_package_installedcGst�r|j|�S|j|�SdS)z!Install a package and log resultsN)r	�_install_apt_package�_install_yum_package)r�packagesrrr�_install_packageIs
z WizardInstaller._install_packagecGs8i}d|d<d|d<|r4|jdddgt|�|d�Sd	S)
z&Install an apt package and log resultsZnoninteractiveZDEBIAN_FRONTEND�trueZDEBCONF_NONINTERACTIVE_SEENzapt-get�installz-y)r$N)r'�list)rr+Zapt_envrrrr)Qsz$WizardInstaller._install_apt_packagecGs |r|�dddgt|��SdS)z%Install a yum package and log results�yumr.z-yN)r'r/)rr+rrrr*^sz$WizardInstaller._install_yum_packagecGst�r|j|�S|j|�SdS)z�
        Install a package group.
        At the moment, DEB metapackages are not supported, and
        provided names are simply installed as normal packages.
        This will change in the future.
        N)r	r)�_install_yum_groups)r�groupsrrr�_install_groupses
zWizardInstaller._install_groupscGs |r|�dddgt|��SdS)z.Install package group with yum and log resultsr0Zgroupinstallz-yN)r'r/)rr2rrrr1rsz#WizardInstaller._install_yum_groupscCsjd}tj�|�rdSt�pd}d|kr,d}nd|kr:d}ntd��d|�d�}|j�d	|�|�|�dS)
z�
        Check whether cloudlinux-ea4.repo is present and install it if not.
        It's required only on EA4 to install proper Passenger package
        z$/etc/yum.repos.d/cloudlinux-ea4.repoNZUnknown�7�6z.Failed to get the distribution's major versionzIhttps://repo.cloudlinux.com/cloudlinux/EA4/cloudlinux-ea4-release-latest-z.noarch.rpmzFUnable to find cloudlinux-ea4 repo. Trying to install it using url: %s)�os�path�existsrrrrr*)rZcl_ea4_repofileZdistZdist_maj_verZpackage_urlrrr�_ensure_cl_ea4_repo_existsys
z*WizardInstaller._ensure_cl_ea4_repo_existsc
Cs`t�r|��t�}|j�d|�y|�|�Wn*tk
rZ}zt�|�Wdd}~XYnXdS)zb
        Install proper passenger package for Selectors if it's not yet
        installed
        z'Trying to install Passenger package: %sN)rr9r
rrr*r
r)rZ	passengerZ
extern_failedrrr�_install_passenger�sz"WizardInstaller._install_passengercCsJt�|�}g}|dkrdnd}x&|��D]}|�t|d|d��q(W|S)z�
        Get a list of available Python, NodeJS, PHP or Ruby module versions.
        :param group: - group name, e.g: python
        :return: list of available versions
        Znodejs���version)Zversion_size)rZget_group_info�values�appendr)�groupZavailable_groups_infoZversionsZver_sizeZ
group_datarrr�_get_available_versions�s
z'WizardInstaller._get_available_versionscCs
t��dS)N)�NotImplementedError)rZoptionsrrr�run_installation�sz WizardInstaller.run_installationcCst�S)N)�set)�clsrrr�supported_options�sz!WizardInstaller.supported_optionscCs
t��dS)z�
        Method that returns dictionary with two required keys:
        {installed: True|False and options: {...}]
        This will be used by lvemanager to properly display wizard.
        N)rB)rrrr�initial_status�szWizardInstaller.initial_statuscCs|jdkrdSt�|j�S)z9
        Checks whether we must
        :return:
        NT)�_REQUIRED_CL_COMPONENT_SUPPORTrZis_panel_feature_supported)rErrr�is_supported_by_control_panel�s
z-WizardInstaller.is_supported_by_control_panel)N)r�
__module__�__qualname__�__doc__rrHrr'r(r,r)r*r3r1r9r:�staticmethodrArrC�classmethodrFrGrIrrrrrs$



r)Z
__future__rr6�abcr�typingrrrZclcommonrZclcommon.group_info_readerrZclcommon.lib.cleditionr	Zclcommon.utilsr
rrr
rrrZclwizard.exceptionsrZclwizard.utilsrr�objectrrrrr�<module>	s$