X7ROOT File Manager
Current Path:
/opt/cloudlinux/venv/lib/python3.11/site-packages/clwizard/modules
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
clwizard
/
modules
/
??
..
??
__init__.py
(5 KB)
??
__pycache__
??
base.py
(7.96 KB)
??
cagefs.py
(3.93 KB)
??
governor.py
(6.18 KB)
??
lsapi.py
(8.33 KB)
??
nodejs.py
(5.31 KB)
??
php.py
(7.7 KB)
??
python.py
(5.56 KB)
??
ruby.py
(3.99 KB)
Editing: php.py
# coding=utf-8 # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENCE.TXT # import os from typing import Dict, List # NOQA from clcommon.const import Feature from clcommon.utils import ExternalProgramFailed from clconfig.cagefs_statistics_config import check_cagefs_initialized from clwizard.constants import CL_SELECTOR_BIN, MODULES_LOGS_DIR from clwizard.exceptions import InstallationFailedException, PackageMissingError from .base import WizardInstaller class PhpInstaller(WizardInstaller): LOG_FILE = os.path.join(MODULES_LOGS_DIR, 'php.log') _REQUIRED_CL_COMPONENT_SUPPORT = Feature.PHP_SELECTOR def _set_default_php_version(self, version): # type: (str) -> None self.app_logger.info("trying to set default php version as '%s'", version) try: self._run_command( [ CL_SELECTOR_BIN, 'set', '--interpreter', 'php', '--default-version', version, '--json', ] ) except ExternalProgramFailed as e: raise InstallationFailedException() from e def _set_cloudlinux_selector_status(self, status): # type: (str) -> None self.app_logger.info("trying to set PHP Selector state '%s'", status) try: self._run_command( [ CL_SELECTOR_BIN, 'set', '--interpreter', 'php', '--selector-status', status, '--json', ] ) except ExternalProgramFailed as e: raise InstallationFailedException() from e def _install_php_version(self, versions): # type: (List) -> None """ Install given php versions via groups :param versions: e.g ['4.4', '5.4', '5.6'] :return: None """ self.app_logger.info( "php version '%s' is going to be installed", ','.join(versions) ) groups = [] for ver in versions: # given version in format '5.6' get it's package name package_name = 'alt-php' + ver.replace('.', '') groups.append(package_name) try: # with RPM we install php versions via groups, # all extra alt-phpXX modules will be installed as dependencies # On Ubuntu, _install_groups will install the meta packages. self._install_groups(*groups) except ExternalProgramFailed as e: raise InstallationFailedException() from e def run_installation(self, options): # type: (Dict) -> None """ Run installation of php module It is possible to install only alt-php packages and skip further installation if 'enable_selector': False Otherwise we will configure php selector also -- set selector status to enabled -- set default version if it was passed :param options: {'versions': [5.5, 5.6], 'enable_selector': True} :return: """ default_version = options.get('default_version') install_versions = options.get('versions', []) to_enable_selector = options.get('enable_selector') if to_enable_selector: if default_version and default_version not in install_versions: self.app_logger.error( "Version %s that was specified to be set as default " "must be included in install_versions", default_version, ) raise InstallationFailedException() self._install_php_version(install_versions) if check_cagefs_initialized(): if to_enable_selector: self._set_cloudlinux_selector_status(status='enabled') if default_version: self._set_default_php_version(default_version) else: try: self._set_cloudlinux_selector_status(status='disabled') except Exception as e: self.app_logger.error( "Error occurred while disabling PHP Selector: %s", str(e) ) @classmethod def supported_options(cls): return {'default_version', 'versions', 'enable_selector'} @staticmethod def _php_get_default_version(): # type: () -> str try: from clselect.clselect import ClSelect # pylint: disable=import-outside-toplevel except ImportError as e: raise PackageMissingError('lvemanager') from e return ClSelect().get_version()[0] @staticmethod def _php_interpreters_list(): # type: () -> List try: from clselect.clselectctl import ( # pylint: disable=import-outside-toplevel interpreter_versions_short_summary ) except ImportError as e: raise PackageMissingError('lvemanager') from e return interpreter_versions_short_summary('php') def _get_warnings(self): # type: () -> List[Dict] """ Get list of warnings that should be shown in wizard before module installation """ warnings = [ { # this message is hardcoded because we do not want to # show a lot of possible warnings, so just tell the client to go # to the settings page where cldiag warnings are shown 'message': "Further CloudLinux PHP Selector setup will be available " "in LVE Manager settings after installation. Find more details " "in our documentation at %(url)s.", 'context': { 'url': 'https://docs.cloudlinux.com/php_selector_installation.html' }, } ] return warnings def initial_status(self): # type: () -> Dict installed_versions = [] for php_interpreter in self._php_interpreters_list(): if not php_interpreter.installed: continue installed_versions.append(php_interpreter.version) return { # As 'PHP Configure' in the wizard could be used for our PHP selector AND # for installing PHP interpreters, 'already_configured' should be True # when any PHP interpreter is installed. 'already_configured': any(installed_versions), 'options': { 'default_version': self._php_get_default_version(), 'installed_versions': installed_versions, 'available_versions': self._get_available_versions('php'), 'enable_selector': self._is_php_selector_enabled(), }, 'warnings': self._get_warnings(), } def _is_php_selector_enabled(self): # type: () -> bool """ Return True if Php Selector enabled in UI and could be used """ return bool(check_cagefs_initialized() and self._is_php_selector_enabled_in_config()) def _is_php_selector_enabled_in_config(self): # type: () -> bool """ Return True if Php Selector is enabled for UI in panel specific (DA, Plesk or cPanel) config """ self.app_logger.info("trying to get Php Selector state.") try: from clselector.selectorlib import CloudlinuxSelectorLib # pylint: disable=import-outside-toplevel return CloudlinuxSelectorLib('php').php_selector_is_enabled() except ImportError: return False
Upload File
Create Folder