mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-10-26 07:46:35 +01:00
89 lines
3.3 KiB
Python
89 lines
3.3 KiB
Python
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() |