diff --git a/filemanager/filemanager.py b/filemanager/filemanager.py index 1a6068e70..14f89fe54 100644 --- a/filemanager/filemanager.py +++ b/filemanager/filemanager.py @@ -320,6 +320,10 @@ class FileManager: command = "touch " + self.returnPathEnclosed(self.data['fileName']) ProcessUtilities.executioner(command, website.externalApp) self.changeOwner(self.returnPathEnclosed(self.data['fileName'])) + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) except: homePath = '/' @@ -352,6 +356,10 @@ class FileManager: ProcessUtilities.executioner(command, website.externalApp) self.changeOwner(self.returnPathEnclosed(self.data['folderName'])) + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) except: homePath = '/' @@ -431,6 +439,10 @@ class FileManager: if result.find('cannot') > -1 or result.find('Permission denied') > -1: return self.ajaxPre(0, f'Failed to delete {item}: {result}') logging.CyberCPLogFileWriter.writeToFile(f"Successfully deleted: {itemPath}") + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) else: # Move to trash trashPath = '%s/.trash' % (self.homePath) @@ -461,6 +473,10 @@ class FileManager: return self.ajaxPre(0, f'Failed to move {item} to trash: {result}') logging.CyberCPLogFileWriter.writeToFile(f"Successfully moved to trash: {itemPath}") + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + if RemoveOK == 0: logging.CyberCPLogFileWriter.writeToFile(f"Restoring chattr +i flags for {self.homePath}") @@ -590,6 +606,10 @@ class FileManager: tItem.delete() + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + json_data = json.dumps(finalData) return HttpResponse(json_data) @@ -622,6 +642,11 @@ class FileManager: self.data['newPath']) ProcessUtilities.executioner(command, website.externalApp) self.changeOwner(self.data['newPath']) + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + json_data = json.dumps(finalData) return HttpResponse(json_data) @@ -638,6 +663,10 @@ class FileManager: ProcessUtilities.executioner(command, website.externalApp) self.changeOwner(self.data['newPath']) + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) except: @@ -657,6 +686,11 @@ class FileManager: self.data['newPath']) ProcessUtilities.executioner(command,) self.changeOwner(self.data['newPath']) + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + json_data = json.dumps(finalData) return HttpResponse(json_data) @@ -675,6 +709,10 @@ class FileManager: self.changeOwner(self.data['newPath']) + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + json_data = json.dumps(finalData) return HttpResponse(json_data) @@ -710,6 +748,10 @@ class FileManager: self.data['newPath'] + '/' + item) ProcessUtilities.executioner(command, website.externalApp) + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + #self.changeOwner(self.data['newPath']) #self.fixPermissions(domainName) @@ -739,6 +781,10 @@ class FileManager: self.changeOwner(self.data['newPath']) + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + json_data = json.dumps(finalData) return HttpResponse(json_data) @@ -925,6 +971,11 @@ class FileManager: ProcessUtilities.executioner(command, website.externalApp) self.changeOwner(self.returnPathEnclosed(self.data['completePath'] + '/' + myfile.name)) + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + try: os.remove(UploadPath + RanddomFileName) except: @@ -947,6 +998,11 @@ class FileManager: ProcessUtilities.executioner(command) self.changeOwner(self.returnPathEnclosed(self.data['completePath'] + '/' + myfile.name)) + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + try: os.remove(UploadPath + RanddomFileName) except: @@ -993,6 +1049,10 @@ class FileManager: ProcessUtilities.executioner(command, website.externalApp) + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + #self.fixPermissions(domainName) except: @@ -1014,6 +1074,10 @@ class FileManager: ProcessUtilities.executioner(command) + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + json_data = json.dumps(finalData) return HttpResponse(json_data) @@ -1054,6 +1118,10 @@ class FileManager: ProcessUtilities.executioner(finalCommand, website.externalApp) self.changeOwner(self.data['compressedFileName']) + + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) except: if self.data['compressionType'] == 'zip': compressedFileName = self.returnPathEnclosed( @@ -1080,6 +1148,10 @@ class FileManager: self.changeOwner(self.data['compressedFileName']) + ## Update disk usage in background + command = "/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForceDomain --domainName %s" % (domainName) + ProcessUtilities.popenExecutioner(command) + json_data = json.dumps(finalData) return HttpResponse(json_data) diff --git a/plogical/IncScheduler.py b/plogical/IncScheduler.py index 00d14f0a1..11bdc4a25 100644 --- a/plogical/IncScheduler.py +++ b/plogical/IncScheduler.py @@ -1173,6 +1173,42 @@ Automatic backup failed for %s on %s. except BaseException as msg: logging.writeToFile('%s. [CalculateAndUpdateDiskUsage:753]' % (str(msg))) + @staticmethod + def CalculateAndUpdateDiskUsageDomain(domainName): + """Calculate and update disk usage for a specific domain""" + try: + website = Websites.objects.get(domain=domainName) + try: + config = json.loads(website.config) + except: + config = {} + + # Calculate email disk usage + eDomains = website.domains_set.all() + for eDomain in eDomains: + for email in eDomain.eusers_set.all(): + emailPath = '/home/vmail/%s/%s' % (website.domain, email.email.split('@')[0]) + email.DiskUsage = virtualHostUtilities.getDiskUsageofPath(emailPath) + email.save() + print('Disk Usage of %s is %s' % (email.email, email.DiskUsage)) + + # Calculate website disk usage + config['DiskUsage'], config['DiskUsagePercentage'] = virtualHostUtilities.getDiskUsage( + "/home/" + website.domain, website.package.diskSpace) + + # Calculate bandwidth usage + from plogical.vhost import vhost + config['bwInMB'], config['bwUsage'] = vhost.findDomainBW(website.domain, int(website.package.bandwidth)) + + # Save configuration + website.config = json.dumps(config) + website.save() + + return 1 + except BaseException as msg: + logging.writeToFile('Failed to update disk usage for %s: %s. [CalculateAndUpdateDiskUsageDomain]' % (domainName, str(msg))) + return 0 + @staticmethod def WPUpdates(): from cloudAPI.models import WPDeployments @@ -1749,12 +1785,20 @@ def main(): parser = argparse.ArgumentParser(description='CyberPanel Installer') parser.add_argument('function', help='Specific a function to call!') parser.add_argument('--planName', help='Plan name for AWS!') + parser.add_argument('--domainName', help='Domain name for UpdateDiskUsageForceDomain') args = parser.parse_args() if args.function == 'UpdateDiskUsageForce': IncScheduler.CalculateAndUpdateDiskUsage() return 0 + if args.function == 'UpdateDiskUsageForceDomain': + if args.domainName: + IncScheduler.CalculateAndUpdateDiskUsageDomain(args.domainName) + else: + print('Error: --domainName argument is required for UpdateDiskUsageForceDomain') + return 0 + if args.function == '30 Minutes' or args.function == '1 Hour' or args.function == '6 Hours' or args.function == '12 Hours' or args.function == '1 Day' or args.function == '3 Days' or args.function == '1 Week': # IncScheduler.refresh_access_token()