HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/plogical/findBWUsage.py
import sys
sys.path.append('/usr/local/CyberCP')
import os
from plogical import CyberCPLogFileWriter as logging
import shlex
import subprocess
import validators

class findBWUsage:
    @staticmethod
    def parse_last_digits(line):
        return line.split(' ')

    @staticmethod
    def calculateBandwidth(domainName):
        try:
            path = "/home/"+domainName+"/logs/"+domainName+".access_log"

            if not os.path.exists(path):
                return 0
            from processUtilities import ProcessUtilities
            logData = ProcessUtilities.outputExecutioner('cat %s' % (path), 'nobody').splitlines()
            logDataLines = len(logData)

            if not os.path.exists("/home/"+domainName+"/logs"):
                return 0

            bwmeta = "/home/cyberpanel/%s.bwmeta" % (domainName)

            if not os.path.exists(path):
                writeMeta = open(bwmeta, 'w')
                writeMeta.writelines('0\n0\n')
                writeMeta.close()
                os.chmod(bwmeta, 0o600)
                return 1

            if os.path.exists(bwmeta):
                data = open(bwmeta).readlines()
                currentUsed = int(data[0].strip("\n"))
                currentLinesRead = int(data[1].strip("\n"))
                if currentLinesRead > logDataLines:
                    currentLinesRead = 0
            else:
                currentUsed = 0
                currentLinesRead = 0

            startLine = currentLinesRead

            for line in logData[startLine:]:
                line = line.strip('"\n')
                currentLinesRead = currentLinesRead + 1
                if len(line)>10:
                    currentUsed = int(findBWUsage.parse_last_digits(line)[9].replace('"', '')) + currentUsed

            writeMeta = open(bwmeta,'w')
            writeMeta.writelines(str(currentUsed)+"\n")
            writeMeta.writelines(str(currentLinesRead) + "\n")
            writeMeta.close()

            os.chmod(bwmeta, 0o600)

        except BaseException as msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [calculateBandwidth]")
            return 0

        return 1

    @staticmethod
    def startCalculations():
        try:
            for directories in os.listdir("/home"):
                if validators.domain(directories):
                    findBWUsage.calculateBandwidth(directories)
        except BaseException as msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [startCalculations]")
            return 0

    @staticmethod
    def findDomainBW(domainName,totalAllowed):
        try:
            path = "/home/"+domainName+"/logs/"+domainName+".access_log"

            if not os.path.exists("/home/"+domainName+"/logs"):
                return [0,0]

            bwmeta = "/home/" + domainName + "/logs/bwmeta"

            if not os.path.exists(path):
                return [0,0]



            if os.path.exists(bwmeta):
                try:
                    data = open(bwmeta).readlines()
                    currentUsed = int(data[0].strip("\n"))

                    inMB = int(float(currentUsed)/(1024.0*1024.0))

                    percentage = float(100) / float(totalAllowed)

                    percentage = float(percentage) * float(inMB)
                except:
                    return [0,0]

                if percentage > 100.0:
                    percentage = 100

                return [inMB,percentage]
            else:
                return [0, 0]


        except OSError as msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [findDomainBW]")
            return 0
        except ValueError as msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [findDomainBW]")
            return 0

        return 1

    @staticmethod
    def changeSystemLanguage():
        try:

            command = 'localectl set-locale LANG=en_US.UTF-8'

            cmd = shlex.split(command)

            res = subprocess.call(cmd)

            if res == 1:
                logging.CyberCPLogFileWriter.writeToFile("1440 [setup_cron]")
            else:
                pass


            print("###############################################")
            print("        Language Changed to English                ")
            print("###############################################")


        except OSError as msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [changeSystemLanguage]")
            return 0
        except ValueError as msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [changeSystemLanguage]")
            return 0

        return 1


findBWUsage.startCalculations()