Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.191.120.103
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/imunify360/venv/lib/python3.11/site-packages/clcommon/public_hooks/bundle/plesk/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/imunify360/venv/lib/python3.11/site-packages/clcommon/public_hooks/bundle/plesk/lib.py
# -*- coding: utf-8 -*-
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2022 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
#
import os
import logging
import subprocess
from pwd import getpwnam

from clcommon.cpapi import cpinfo, userdomains, get_main_username_by_uid, docroot
from clcommon.public_hooks import POST_MODIFY_USER, POST_MODIFY_DOMAIN, POST_MODIFY_PACKAGE

PLESK_CONFIG_PATH = '/etc/psa/psa.conf'
logger = logging.getLogger(__name__)


def domain_updated(old_domain_name, new_domain_name=None):
    """
    Triggered after any domain change
    """
    # TODO: probably we can use cpapi here
    # username = domain_owner(new_domain_name)
    domain_path, _ = docroot(new_domain_name)
    uid = os.stat(domain_path).st_uid
    system_user = get_main_username_by_uid(uid)
    # Emulate getpwuid error exception
    if system_user == 'N/A':
        raise KeyError(f'getpwuid(): uid not found: {uid}')

    args = [
        POST_MODIFY_DOMAIN, 'modify',
        '--username', system_user, '--domain', old_domain_name]
    if old_domain_name != new_domain_name:
        args += ['--new-domain', new_domain_name]
    return subprocess.call(args)


def physical_hosting_created(new_system_user=None, new_domain_name=None):
    """
    Triggered after creation new subscription in Plesk.

    This function is called in two situations:
     - when user with main domain is created
     - and when additional domain created
    """
    if not new_system_user or not new_domain_name:
        logger.warning("ph_created but NEW_SYSTEM_USER or NEW_DOMAIN_NAME is empty, do nothing")
        return 0

    number_of_owned_domains = len(userdomains(new_system_user))
    # user must have at least one domain, because it is in his home dir path
    if number_of_owned_domains == 1:
        owner = cpinfo(cpuser=new_system_user, keyls=('reseller', ))[0][0]
        return subprocess.call([
            POST_MODIFY_USER, 'create',
            '--username', new_system_user, '--owner', owner])
    # in case when this method is called more than once -> additional domain created
    elif number_of_owned_domains > 1:
        return subprocess.call([
            POST_MODIFY_DOMAIN, 'create',
            '--username', new_system_user, '--domain', new_domain_name])
    # impossible situation (I hope)
    else:
        raise ValueError(f'user {new_system_user} does not own any domains!')


def physical_hosting_deleted(system_user=None, domain_name=None):
    """
    Triggered after deletion physical hosting in Plesk.
    - means deletion of physical hosting on server
      (BUT NOT DOMAIN ITSELF -> domain can e.g. forward something)
    - when there are no more domains owned by system user -> unix
      user is destroyed here
    """
    if not system_user or not domain_name:
        logger.warning("ph_deleted but OLD_SYSTEM_USER or OLD_DOMAIN_NAME"
                       " is empty, do nothing")
        return 0

    try:
        getpwnam(system_user)
    except KeyError:
        return subprocess.call([
            POST_MODIFY_USER, 'delete',
            '--username', system_user])
    else:
        return subprocess.call([
            POST_MODIFY_DOMAIN, 'delete',
            '--username', system_user, '--domain', domain_name])


def physical_hosting_updated(old_system_user=None, new_system_user=None):
    """
    Triggered after any subscription change in plesk.
    """
    if not old_system_user:
        logger.warning('ph_updated but OLD_SYSTEM_USER is empty, do nothing')
        return 0

    args = [
        POST_MODIFY_USER, 'modify',
        '--username', old_system_user]
    if new_system_user != old_system_user:
        args += ['--new-username', new_system_user]

    return subprocess.call(args)


def plan_renamed():
    """
    Triggered after hosting plan is renamed.
    """
    package_id = os.environ.get('OLD_ADMIN_TEMPLATE')
    new_id = os.environ.get('NEW_ADMIN_TEMPLATE')
    if not package_id:
        package_id = os.environ.get('OLD_DOMAIN_TEMPLATE')
        new_id = os.environ.get('NEW_DOMAIN_TEMPLATE')

    # this id should be equal in case of modify\rename
    assert package_id and package_id == new_id

    args = [POST_MODIFY_PACKAGE, 'rename', '--name', package_id]
    return subprocess.call(args)

Youez - 2016 - github.com/yon3zu
LinuXploit