|
Server : LiteSpeed System : Linux srv526460274 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : kerao9884 ( 1082) PHP Version : 8.0.30 Disable Function : 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, Directory : /usr/local/CyberCP/plogical/ |
Upload File : |
import os,sys
sys.path.append('/usr/local/CyberCP')
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
try:
django.setup()
except:
pass
import subprocess
class rebuildQuotas:
def __init__(self):
pass
def Rebuild(self):
try:
print("Fixing and rebuilding Quotas...")
fstab_path = '/etc/fstab'
rData = open(fstab_path, 'r').read()
if rData.find('xfs') > -1:
command = "mount | grep ' / '"
try:
qResult = subprocess.run(command, capture_output=True, universal_newlines=True, shell=True)
except:
qResult = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, shell=True)
if qResult.stdout.find('usrquota') > -1:
print("Looks like Quotas are enabled in filesystem, moving on..")
else:
print("Looks like Quotas are not enabled in filesystem, exiting.")
print("Please follow this guide to enable Quotas on XFS file system: ")
exit(1)
else:
command = "mount | grep quota"
try:
qResult = subprocess.run(command, capture_output=True, universal_newlines=True, shell=True)
except:
qResult = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
universal_newlines=True, shell=True)
if qResult.stdout.find('usrquota') > -1:
print("Looks like Quotas are enabled in filesystem, moving on..")
else:
print("Looks like Quotas are not enabled in filesystem, exiting.")
exit(1)
from websiteFunctions.models import Websites
for website in Websites.objects.all():
print(f"Rebuilding quotas for {website.domain}...")
command = 'chattr -R -i /home/%s/' % (website.domain)
try:
qResult = subprocess.run(command, capture_output=True, universal_newlines=True, shell=True)
except:
qResult = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
universal_newlines=True, shell=True)
if website.package.enforceDiskLimits:
spaceString = f'{website.package.diskSpace}M {website.package.diskSpace}M'
command = f'setquota -u {website.externalApp} {spaceString} 0 0 /'
print(command)
try:
qResult = subprocess.run(command, capture_output=True, universal_newlines=True, shell=True)
except:
qResult = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
universal_newlines=True, shell=True)
else:
print(f"Ignored {website.domain} because the selected package does not enforce disk limits.")
except:
pass
def main():
rbQ = rebuildQuotas()
rbQ.Rebuild()
if __name__ == "__main__":
main()