#!/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 os
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()
    # Bugbot: with shell=False and a custom env, Python falls back to
    # os.defpath ('/bin:/usr/bin') to locate mysql. Preserve PATH from
    # the inherited environment so packages installed under /usr/local/bin
    # (Plesk default for some MariaDB/Mysql installs) still resolve.
    proc_env = {'MYSQL_PWD': password}
    if 'PATH' in os.environ:
        proc_env['PATH'] = os.environ['PATH']
    proc = subprocess.Popen(
        ['mysql', '--no-beep', '--skip-column-names', '--user=admin',
         '--execute', query + ';'],
        stdout=subprocess.PIPE,
        text=True,
        bufsize=-1,
        env=proc_env,
    )
    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'")
