????

Your IP : 3.144.25.14


Current Path : /usr/share/cagefs-plugins/
Upload File :
Current File : //usr/share/cagefs-plugins/mysql_lib.py

#!/opt/cloudlinux/venv/bin/python3 -bb
# -*- coding: utf-8 -*-

# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

import subprocess

from future import standard_library
standard_library.install_aliases()
from builtins import *


def _execute(query):
    with open('/etc/psa/.psa.shadow', 'r') as f:
        password = f.readline().rstrip()
    query = query.replace("\n", " ").strip()
    proc = subprocess.Popen(
        f'mysql --no-beep --skip-column-names --user=admin --execute="{query};"',
        shell=True,
        executable='/bin/bash',
        stdout=subprocess.PIPE,
        text=True,
        bufsize=-1,
        env={
            # NOTE: Despite what is said in MySQL documentation, passing password using an environment variable seems to
            #       be quite safe for systems of this millennium. More precisely, on modern Linux no one can read /proc/<pid>/environ
            #       except for euid of root and the process owner.
            'MYSQL_PWD': password,
        }
    )
    return proc.communicate()[0]


def install_cagefs_module_plesk():
    result = _execute("select * from psa.Modules where name='plesk-cagefs'")
    if result == "":
        _execute("""
            insert into psa.Modules(name, packname, display_name, description, icon)
            values(
                'plesk-cagefs',
                'plesk-cagefs',
                'CageFS',
                'GageFS',
                '/images/modules/plesk-cagefs/addon_CloudLinux_logo2.png'
            )
        """)


def delete_cagefs_module_plesk():
    _execute("delete from psa.Modules where name='plesk-cagefs'")