Viewing file: interworx.py (3.68 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# -*- coding: utf-8 -*-
import os import configparser import re
from typing import Dict # NOQA
from clcommon.cpapi.cpapiexceptions import NotSupported from clcommon.cpapi.plugins.universal import _dblogin_cplogin_pairs from clcommon.features import Feature from clcommon.cpapi.GeneralPanel import GeneralPanelPluginV1
__cpname__ = 'InterWorx'
PARSE_URI_PATTERN = re.compile(r'(.+)://(.+):(.+)@.*')
IWORX_INI = '/usr/local/interworx/iworx.ini'
# WARN: Probably will be deprecated for our "official" plugins. # See pluginlib.detect_panel_fast() def detect(): return os.path.isfile(IWORX_INI)
def db_access(_conf_path=IWORX_INI): access = {} data_config = configparser.ConfigParser(strict=False) data_config.read(_conf_path)
mysql_uri = data_config.get(section='mysql', option='rootdsn').strip('\"') parse_result = PARSE_URI_PATTERN.search(mysql_uri) (db, login, passwd) = (None, None, None) if parse_result: (db, login, passwd) = parse_result.group(1, 2, 3) access['login'] = login access['pass'] = passwd access['host'] = data_config.get(section='mysql', option='default_server').strip('\"') access['db'] = db return access
def cpusers(): raise NotSupported({ 'message': '%(action)s is not currently supported.', 'context': {'action': 'Getting all users registered in the Control Panel'} })
def dblogin_cplogin_pairs(cplogin_lst=None, with_system_users=False): access = db_access() data = _dblogin_cplogin_pairs(cplogin_lst=cplogin_lst, access=access) return data
def get_user_login_url(domain): return f'https://{domain}:2443'
class PanelPlugin(GeneralPanelPluginV1): def __init__(self): super().__init__()
def getCPName(self): """ Return panel name :return: """ return __cpname__
def get_cp_description(self): """ Retrieve panel name and it's version :return: dict: { 'name': 'panel_name', 'version': 'panel_version', 'additional_info': 'add_info'} or None if can't get info """ try: with open(IWORX_INI, "r", encoding='utf-8') as f: out = f.read()
version = out.split('version')[4].replace('\n', '').replace('=', '').replace('"', '').split('[')[0] return {'name': __cpname__, 'version': version, 'additional_info': None} except Exception: return None
def db_access(self): """ Getting root access to mysql database. For example {'login': 'root', 'db': 'mysql', 'host': 'localhost', 'pass': '9pJUv38sAqqW'}
:return: root access to mysql database :rtype: dict :raises: NoDBAccessData """ return db_access()
@staticmethod def useraliases(cpuser, domain): """ Return aliases from user domain :param str|unicode cpuser: user login :param str|unicode domain: :return list of aliases """ return []
def cpusers(self): """ Generates a list of cpusers registered in the control panel
:return: list of cpusers registered in the control panel :rtype: tuple """ return cpusers()
def get_user_login_url(self, domain): """ Get login url for current panel; :type domain: str :rtype: str """ return get_user_login_url(domain)
def get_unsupported_cl_features(self) -> tuple[Feature, ...]: return ( Feature.RUBY_SELECTOR, Feature.PYTHON_SELECTOR, Feature.NODEJS_SELECTOR, Feature.RESELLER_LIMITS, Feature.WPOS, )
|