Yetixx
Server: LiteSpeed
System: Linux srv81050498.ultasrv.net 5.15.0-97-generic #107-Ubuntu SMP Wed Feb 7 13:26:48 UTC 2024 x86_64
User: hemat3240 (1051)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/local/CyberCP/CLManager/CLManagerMain.py
import threading as multi
from plogical.acl import ACLManager
import plogical.CyberCPLogFileWriter as logging
from plogical.processUtilities import ProcessUtilities
from django.shortcuts import render
import os
from serverStatus.serverStatusUtil import ServerStatusUtil
import json
from django.shortcuts import HttpResponse
from math import ceil
from websiteFunctions.models import Websites
from CLManager.models import CLPackages
from plogical.httpProc import httpProc

class CLManagerMain(multi.Thread):

    def __init__(self, request=None, templateName=None, function=None, data=None):
        multi.Thread.__init__(self)
        self.request = request
        self.templateName = templateName
        self.function = function
        self.data = data

    def run(self):
        try:
            if self.function == 'submitCageFSInstall':
                self.submitCageFSInstall()
            elif self.function == 'enableOrDisable':
                self.enableOrDisable()
        except BaseException as msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg) + ' [ContainerManager.run]')

    def renderC(self):

        data = {}
        data['CL'] = 0
        data['activatedPath'] = 0
        CLPath = '/etc/sysconfig/cloudlinux'
        activatedPath = '/home/cyberpanel/cloudlinux'

        if os.path.exists(CLPath):
            data['CL'] = 1

        if os.path.exists(activatedPath):
            data['activatedPath'] = 1

        if data['CL']  == 0:
            proc = httpProc(self.request, 'CLManager/notAvailable.html', data, 'admin')
            return proc.render()
        elif data['activatedPath']  == 0:
            proc = httpProc(self.request, 'CLManager/notAvailable.html', data, 'admin')
            return proc.render()
        else:
            proc = httpProc(self.request, 'CLManager/cloudLinux.html', data, 'admin')
            return proc.render()

    def submitCageFSInstall(self):
        try:
            userID = self.request.session['userID']
            currentACL = ACLManager.loadedACL(userID)

            if currentACL['admin'] == 1:
                pass
            else:
                logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath,
                                                          'Not authorized to install container packages. [404].',
                                                          1)
                return 0

            execPath = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/CLManager/CageFS.py"
            execPath = execPath + " --function submitCageFSInstall"
            ProcessUtilities.outputExecutioner(execPath)

        except BaseException as msg:
            logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, str(msg) + ' [404].', 1)

    def findWebsitesJson(self, currentACL, userID, pageNumber):
        finalPageNumber = ((pageNumber * 10)) - 10
        endPageNumber = finalPageNumber + 10
        websites = ACLManager.findWebsiteObjects(currentACL, userID)[finalPageNumber:endPageNumber]

        json_data = "["
        checker = 0

        command = '/usr/sbin/cagefsctl --list-enabled'
        Enabled = ProcessUtilities.outputExecutioner(command)

        for items in websites:
            if Enabled.find(items.externalApp) > -1:
                status = 1
            else:
                status = 0
            dic = {'domain': items.domain, 'externalApp': items.externalApp, 'status': status}

            if checker == 0:
                json_data = json_data + json.dumps(dic)
                checker = 1
            else:
                json_data = json_data + ',' + json.dumps(dic)

        json_data = json_data + ']'

        return json_data

    def websitePagination(self, currentACL, userID):
        websites = ACLManager.findAllSites(currentACL, userID)

        pages = float(len(websites)) / float(10)
        pagination = []

        if pages <= 1.0:
            pages = 1
            pagination.append('<li><a href="\#"></a></li>')
        else:
            pages = ceil(pages)
            finalPages = int(pages) + 1

            for i in range(1, finalPages):
                pagination.append('<li><a href="\#">' + str(i) + '</a></li>')

        return pagination

    def getFurtherAccounts(self, userID=None, data=None):
        try:
            currentACL = ACLManager.loadedACL(userID)
            pageNumber = int(data['page'])
            json_data = self.findWebsitesJson(currentACL, userID, pageNumber)
            pagination = self.websitePagination(currentACL, userID)

            cageFSPath = '/home/cyberpanel/cagefs'

            if os.path.exists(cageFSPath):
                default = 'On'
            else:
                default = 'Off'

            final_dic = {'status': 1, 'listWebSiteStatus': 1, 'error_message': "None", "data": json_data,
                         'pagination': pagination, 'default': default}
            final_json = json.dumps(final_dic)
            return HttpResponse(final_json)
        except BaseException as msg:
            dic = {'status': 1, 'listWebSiteStatus': 0, 'error_message': str(msg)}
            json_data = json.dumps(dic)
            return HttpResponse(json_data)

    def enableOrDisable(self):
        try:
            websites = Websites.objects.all()
            if self.data['mode'] == 1:
                for items in websites:
                    command = '/usr/sbin/cagefsctl --enable %s' % (items.externalApp)
                    ProcessUtilities.executioner(command)
            else:
                for items in websites:
                    command = '/usr/sbin/cagefsctl --disable %s' % (items.externalApp)
                    ProcessUtilities.executioner(command)
        except BaseException as msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg))

    def fetchPackages(self, currentACL):

        if currentACL['admin'] == 1:
            pass
        else:
            return ACLManager.loadErrorJson()

        json_data = "["
        checker = 0

        for items in CLPackages.objects.all():
            dic = {'name': items.name, 'SPEED': items.speed, 'VMEM': items.vmem, 'PMEM': items.pmem, 'IO': items.io, 'IOPS': items.iops, 'EP': items.ep,
                   'NPROC': items.nproc, 'inodessoft': items.inodessoft, 'inodeshard': items.inodeshard}

            if checker == 0:
                json_data = json_data + json.dumps(dic)
                checker = 1
            else:
                json_data = json_data + ',' + json.dumps(dic)

        json_data = json_data + ']'

        final_dic = {'status': 1, 'error_message': "None", "data": json_data}
        final_json = json.dumps(final_dic)
        return HttpResponse(final_json)