mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 22:06:05 +01:00
fix: disk/bw usage to calculate every 12 hour
This commit is contained in:
@@ -123,6 +123,7 @@ class CloudManager:
|
|||||||
|
|
||||||
def fetchWebsiteData(self):
|
def fetchWebsiteData(self):
|
||||||
try:
|
try:
|
||||||
|
|
||||||
currentACL = ACLManager.loadedACL(self.admin.pk)
|
currentACL = ACLManager.loadedACL(self.admin.pk)
|
||||||
website = Websites.objects.get(domain=self.data['domainName'])
|
website = Websites.objects.get(domain=self.data['domainName'])
|
||||||
admin = Administrator.objects.get(pk=self.admin.pk)
|
admin = Administrator.objects.get(pk=self.admin.pk)
|
||||||
@@ -140,39 +141,22 @@ class CloudManager:
|
|||||||
Data['dbUsed'] = website.databases_set.all().count()
|
Data['dbUsed'] = website.databases_set.all().count()
|
||||||
Data['dbAllowed'] = website.package.dataBases
|
Data['dbAllowed'] = website.package.dataBases
|
||||||
|
|
||||||
diskUsageDetails = virtualHostUtilities.getDiskUsage("/home/" + self.data['domainName'],
|
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(website)
|
||||||
website.package.diskSpace)
|
|
||||||
|
|
||||||
## bw usage calculation
|
|
||||||
|
|
||||||
try:
|
|
||||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
|
||||||
execPath = execPath + " findDomainBW --virtualHostName " + self.data[
|
|
||||||
'domainName'] + " --bandwidth " + str(
|
|
||||||
website.package.bandwidth)
|
|
||||||
|
|
||||||
output = ProcessUtilities.outputExecutioner(execPath)
|
|
||||||
bwData = output.split(",")
|
|
||||||
except BaseException:
|
|
||||||
bwData = [0, 0]
|
|
||||||
|
|
||||||
## bw usage calculations
|
## bw usage calculations
|
||||||
|
|
||||||
Data['bwAllowed'] = website.package.bandwidth
|
Data['bwInMBTotal'] = website.package.bandwidth
|
||||||
Data['bwUsed'] = bwData[0]
|
Data['bwInMB'] = bwInMB
|
||||||
Data['bwUsage'] = bwData[1]
|
Data['bwUsage'] = bwUsage
|
||||||
|
|
||||||
if diskUsageDetails != None:
|
if DiskUsagePercentage > 100:
|
||||||
if diskUsageDetails[1] > 100:
|
DiskUsagePercentage = 100
|
||||||
diskUsageDetails[1] = 100
|
|
||||||
|
|
||||||
Data['diskUsage'] = diskUsageDetails[1]
|
Data['diskUsage'] = DiskUsagePercentage
|
||||||
Data['diskUsed'] = diskUsageDetails[0]
|
Data['diskInMB'] = DiskUsage
|
||||||
Data['diskAllowed'] = website.package.diskSpace
|
Data['diskInMBTotal'] = website.package.diskSpace
|
||||||
else:
|
|
||||||
Data['diskUsed'] = 0
|
##
|
||||||
Data['diskUsage'] = 0
|
|
||||||
Data['diskInMBTotal'] = website.package.diskSpace
|
|
||||||
|
|
||||||
Data['status'] = 1
|
Data['status'] = 1
|
||||||
final_json = json.dumps(Data)
|
final_json = json.dumps(Data)
|
||||||
|
|||||||
@@ -731,6 +731,27 @@ Automatic backup failed for %s on %s.
|
|||||||
except BaseException as msg:
|
except BaseException as msg:
|
||||||
logging.writeToFile(str(msg) + ' [S3Backups.runAWSBackups]')
|
logging.writeToFile(str(msg) + ' [S3Backups.runAWSBackups]')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def CalculateAndUpdateDiskUsage():
|
||||||
|
for website in Websites.objects.all():
|
||||||
|
try:
|
||||||
|
try:
|
||||||
|
config = json.loads(website.config)
|
||||||
|
except:
|
||||||
|
config = {}
|
||||||
|
|
||||||
|
config['DiskUsage'], config['DiskUsagePercentage'] = virtualHostUtilities.getDiskUsage("/home/" + website.domain, website.package.diskSpace)
|
||||||
|
|
||||||
|
## Calculate bw usage
|
||||||
|
|
||||||
|
from plogical.vhost import vhost
|
||||||
|
config['bwInMB'], config['bwUsage'] = vhost.findDomainBW(website.domain, int(website.package.bandwidth))
|
||||||
|
|
||||||
|
website.config = json.dumps(config)
|
||||||
|
website.save()
|
||||||
|
|
||||||
|
except BaseException as msg:
|
||||||
|
logging.writeToFile('%s. [CalculateAndUpdateDiskUsage:753]' % (str(msg)))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@@ -744,6 +765,7 @@ def main():
|
|||||||
IncScheduler.forceRunAWSBackup(args.planName)
|
IncScheduler.forceRunAWSBackup(args.planName)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
IncScheduler.CalculateAndUpdateDiskUsage()
|
||||||
IncScheduler.startBackup(args.function)
|
IncScheduler.startBackup(args.function)
|
||||||
IncScheduler.runGoogleDriveBackups(args.function)
|
IncScheduler.runGoogleDriveBackups(args.function)
|
||||||
IncScheduler.git(args.function)
|
IncScheduler.git(args.function)
|
||||||
|
|||||||
@@ -721,11 +721,13 @@ class vhost:
|
|||||||
|
|
||||||
if not os.path.exists("/home/" + domainName + "/logs"):
|
if not os.path.exists("/home/" + domainName + "/logs"):
|
||||||
print("0,0")
|
print("0,0")
|
||||||
|
return 0,0
|
||||||
|
|
||||||
bwmeta = "/home/" + domainName + "/logs/bwmeta"
|
bwmeta = "/home/" + domainName + "/logs/bwmeta"
|
||||||
|
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
print("0,0")
|
print("0,0")
|
||||||
|
return 0, 0
|
||||||
|
|
||||||
if os.path.exists(bwmeta):
|
if os.path.exists(bwmeta):
|
||||||
try:
|
try:
|
||||||
@@ -741,19 +743,24 @@ class vhost:
|
|||||||
percentage = float(percentage) * float(inMB)
|
percentage = float(percentage) * float(inMB)
|
||||||
except:
|
except:
|
||||||
print("0,0")
|
print("0,0")
|
||||||
|
return 0, 0
|
||||||
|
|
||||||
if percentage > 100.0:
|
if percentage > 100.0:
|
||||||
percentage = 100
|
percentage = 100
|
||||||
|
|
||||||
print(str(inMB) + "," + str(percentage))
|
print(str(inMB) + "," + str(percentage))
|
||||||
|
return str(inMB), str(percentage)
|
||||||
else:
|
else:
|
||||||
print("0,0")
|
print("0,0")
|
||||||
|
return 0, 0
|
||||||
except OSError as msg:
|
except OSError as msg:
|
||||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [findDomainBW]")
|
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [findDomainBW]")
|
||||||
print("0,0")
|
print("0,0")
|
||||||
|
return 0, 0
|
||||||
except ValueError as msg:
|
except ValueError as msg:
|
||||||
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [findDomainBW]")
|
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [findDomainBW]")
|
||||||
print("0,0")
|
print("0,0")
|
||||||
|
return 0, 0
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def permissionControl(path):
|
def permissionControl(path):
|
||||||
|
|||||||
@@ -1308,8 +1308,7 @@ class virtualHostUtilities:
|
|||||||
def getDiskUsage(path, totalAllowed):
|
def getDiskUsage(path, totalAllowed):
|
||||||
try:
|
try:
|
||||||
|
|
||||||
totalUsageInMB = ProcessUtilities.outputExecutioner(["sudo", "du", "-hs", path, "--block-size=1M"]).split()[
|
totalUsageInMB = subprocess.check_output('du -hs %s --block-size=1M' % (path), shell=True).decode("utf-8").split()[0]
|
||||||
0]
|
|
||||||
|
|
||||||
percentage = float(100) / float(totalAllowed)
|
percentage = float(100) / float(totalAllowed)
|
||||||
|
|
||||||
@@ -1347,6 +1346,24 @@ class virtualHostUtilities:
|
|||||||
except BaseException as msg:
|
except BaseException as msg:
|
||||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def FindStats(website):
|
||||||
|
|
||||||
|
import json
|
||||||
|
try:
|
||||||
|
config = json.loads(website.config)
|
||||||
|
DiskUsage = config['DiskUsage']
|
||||||
|
DiskUsagePercentage = config['DiskUsagePercentage']
|
||||||
|
bwInMB = config['bwInMB']
|
||||||
|
bwUsage = config['bwUsage']
|
||||||
|
except:
|
||||||
|
DiskUsage = 0
|
||||||
|
DiskUsagePercentage = 0
|
||||||
|
bwInMB = 0
|
||||||
|
bwUsage = 0
|
||||||
|
|
||||||
|
return DiskUsage, DiskUsagePercentage, bwInMB, bwUsage
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description='CyberPanel Installer')
|
parser = argparse.ArgumentParser(description='CyberPanel Installer')
|
||||||
|
|||||||
@@ -1035,11 +1035,12 @@ def fetchTableUsers(request):
|
|||||||
|
|
||||||
for items in users:
|
for items in users:
|
||||||
|
|
||||||
diskUsage = 0
|
diskUsageCurrent = 0
|
||||||
|
|
||||||
for webs in items.websites_set.all():
|
for webs in items.websites_set.all():
|
||||||
#diskUsage = virtualHostUtilities.getDiskUsage("/home/" + webs.domain, webs.package.diskSpace)[0] + diskUsage
|
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(webs)
|
||||||
diskUsage = 1
|
diskUsageCurrent = DiskUsage + diskUsageCurrent
|
||||||
|
|
||||||
|
|
||||||
owner = Administrator.objects.get(pk=items.owner)
|
owner = Administrator.objects.get(pk=items.owner)
|
||||||
|
|
||||||
@@ -1047,7 +1048,7 @@ def fetchTableUsers(request):
|
|||||||
'name': items.userName,
|
'name': items.userName,
|
||||||
'owner': owner.userName,
|
'owner': owner.userName,
|
||||||
'acl': items.acl.name,
|
'acl': items.acl.name,
|
||||||
'diskUsage': '%sMB' % str(diskUsage),
|
'diskUsage': '%sMB' % str(diskUsageCurrent),
|
||||||
'websites': items.initWebsitesLimit,
|
'websites': items.initWebsitesLimit,
|
||||||
'state': items.state
|
'state': items.state
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -452,9 +452,9 @@ class WebsiteManager:
|
|||||||
else:
|
else:
|
||||||
state = "Active"
|
state = "Active"
|
||||||
|
|
||||||
#diskUsed = "%sMB" % str(virtualHostUtilities.getDiskUsage("/home/" + items.domain, items.package.diskSpace)[0])
|
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(items)
|
||||||
|
diskUsed = "%sMB" % str(DiskUsage)
|
||||||
|
|
||||||
diskUsed = '1MB' ## to be fixed later
|
|
||||||
|
|
||||||
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
||||||
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
||||||
@@ -830,38 +830,20 @@ class WebsiteManager:
|
|||||||
|
|
||||||
Data['domain'] = self.domain
|
Data['domain'] = self.domain
|
||||||
|
|
||||||
diskUsageDetails = virtualHostUtilities.getDiskUsage("/home/" + self.domain, website.package.diskSpace)
|
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(website)
|
||||||
|
|
||||||
## bw usage calculation
|
|
||||||
|
|
||||||
try:
|
|
||||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
|
||||||
execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str(
|
|
||||||
website.package.bandwidth)
|
|
||||||
|
|
||||||
output = ProcessUtilities.outputExecutioner(execPath)
|
|
||||||
bwData = output.split(",")
|
|
||||||
except BaseException as msg:
|
|
||||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
|
||||||
bwData = [0, 0]
|
|
||||||
|
|
||||||
## bw usage calculations
|
## bw usage calculations
|
||||||
|
|
||||||
Data['bwInMBTotal'] = website.package.bandwidth
|
Data['bwInMBTotal'] = website.package.bandwidth
|
||||||
Data['bwInMB'] = bwData[0]
|
Data['bwInMB'] = bwInMB
|
||||||
Data['bwUsage'] = bwData[1]
|
Data['bwUsage'] = bwUsage
|
||||||
|
|
||||||
if diskUsageDetails != None:
|
if DiskUsagePercentage > 100:
|
||||||
if diskUsageDetails[1] > 100:
|
DiskUsagePercentage = 100
|
||||||
diskUsageDetails[1] = 100
|
|
||||||
|
|
||||||
Data['diskUsage'] = diskUsageDetails[1]
|
Data['diskUsage'] = DiskUsagePercentage
|
||||||
Data['diskInMB'] = diskUsageDetails[0]
|
Data['diskInMB'] = DiskUsage
|
||||||
Data['diskInMBTotal'] = website.package.diskSpace
|
Data['diskInMBTotal'] = website.package.diskSpace
|
||||||
else:
|
|
||||||
Data['diskUsage'] = 0
|
|
||||||
Data['diskInMB'] = 0
|
|
||||||
Data['diskInMBTotal'] = website.package.diskSpace
|
|
||||||
|
|
||||||
Data['phps'] = PHPManager.findPHPVersions()
|
Data['phps'] = PHPManager.findPHPVersions()
|
||||||
|
|
||||||
@@ -932,38 +914,20 @@ class WebsiteManager:
|
|||||||
Data['domain'] = self.domain
|
Data['domain'] = self.domain
|
||||||
Data['childDomain'] = self.childDomain
|
Data['childDomain'] = self.childDomain
|
||||||
|
|
||||||
diskUsageDetails = virtualHostUtilities.getDiskUsage("/home/" + self.domain, website.package.diskSpace)
|
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(website)
|
||||||
|
|
||||||
## bw usage calculation
|
|
||||||
|
|
||||||
try:
|
|
||||||
execPath = "/usr/local/CyberCP/bin/python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
|
|
||||||
execPath = execPath + " findDomainBW --virtualHostName " + self.domain + " --bandwidth " + str(
|
|
||||||
website.package.bandwidth)
|
|
||||||
|
|
||||||
output = ProcessUtilities.outputExecutioner(execPath)
|
|
||||||
bwData = output.split(",")
|
|
||||||
except BaseException as msg:
|
|
||||||
logging.CyberCPLogFileWriter.writeToFile(str(msg))
|
|
||||||
bwData = [0, 0]
|
|
||||||
|
|
||||||
## bw usage calculations
|
## bw usage calculations
|
||||||
|
|
||||||
Data['bwInMBTotal'] = website.package.bandwidth
|
Data['bwInMBTotal'] = website.package.bandwidth
|
||||||
Data['bwInMB'] = bwData[0]
|
Data['bwInMB'] = bwInMB
|
||||||
Data['bwUsage'] = bwData[1]
|
Data['bwUsage'] = bwUsage
|
||||||
|
|
||||||
if diskUsageDetails != None:
|
if DiskUsagePercentage > 100:
|
||||||
if diskUsageDetails[1] > 100:
|
DiskUsagePercentage = 100
|
||||||
diskUsageDetails[1] = 100
|
|
||||||
|
|
||||||
Data['diskUsage'] = diskUsageDetails[1]
|
Data['diskUsage'] = DiskUsagePercentage
|
||||||
Data['diskInMB'] = diskUsageDetails[0]
|
Data['diskInMB'] = DiskUsage
|
||||||
Data['diskInMBTotal'] = website.package.diskSpace
|
Data['diskInMBTotal'] = website.package.diskSpace
|
||||||
else:
|
|
||||||
Data['diskUsage'] = 0
|
|
||||||
Data['diskInMB'] = 0
|
|
||||||
Data['diskInMBTotal'] = website.package.diskSpace
|
|
||||||
|
|
||||||
Data['phps'] = PHPManager.findPHPVersions()
|
Data['phps'] = PHPManager.findPHPVersions()
|
||||||
|
|
||||||
@@ -2393,8 +2357,9 @@ StrictHostKeyChecking no
|
|||||||
else:
|
else:
|
||||||
state = "Active"
|
state = "Active"
|
||||||
|
|
||||||
diskUsed = "%sMB" % str(
|
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(items)
|
||||||
virtualHostUtilities.getDiskUsage("/home/" + items.domain, items.package.diskSpace)[0])
|
|
||||||
|
diskUsed = "%sMB" % str(DiskUsage)
|
||||||
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
||||||
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
||||||
|
|
||||||
@@ -2431,7 +2396,9 @@ StrictHostKeyChecking no
|
|||||||
else:
|
else:
|
||||||
state = "Active"
|
state = "Active"
|
||||||
|
|
||||||
diskUsed = "%sMB" % str(virtualHostUtilities.getDiskUsage("/home/" + items.domain, items.package.diskSpace)[0])
|
DiskUsage, DiskUsagePercentage, bwInMB, bwUsage = virtualHostUtilities.FindStats(items)
|
||||||
|
|
||||||
|
diskUsed = "%sMB" % str(DiskUsage)
|
||||||
|
|
||||||
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
dic = {'domain': items.domain, 'adminEmail': items.adminEmail, 'ipAddress': ipAddress,
|
||||||
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
'admin': items.admin.userName, 'package': items.package.packageName, 'state': state, 'diskUsed': diskUsed}
|
||||||
|
|||||||
Reference in New Issue
Block a user