Bug fixes to ACL

This commit is contained in:
usmannasir
2018-08-26 04:55:51 +05:00
parent 357502bd9a
commit c531c9d058
12 changed files with 3484 additions and 3222 deletions

View File

@@ -71,9 +71,7 @@ class cyberPanel:
def deleteWebsite(self, domainName): def deleteWebsite(self, domainName):
try: try:
vhost.deleteVirtualHostConfigurations(domainName)
numberOfWebsites = Websites.objects.count() + ChildDomains.objects.count()
vhost.deleteVirtualHostConfigurations(domainName, numberOfWebsites)
self.printStatus(1, 'None') self.printStatus(1, 'None')
except BaseException, msg: except BaseException, msg:

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,7 @@ django.setup()
from loginSystem.models import Administrator, ACL from loginSystem.models import Administrator, ACL
from django.shortcuts import HttpResponse from django.shortcuts import HttpResponse
from packages.models import Package from packages.models import Package
from websiteFunctions.models import Websites from websiteFunctions.models import Websites, ChildDomains
from dns.models import Domains from dns.models import Domains
import json import json
@@ -104,6 +104,18 @@ class ACLManager:
return finalResponse return finalResponse
@staticmethod
def currentContextPermission(currentACL, context):
try:
if currentACL['admin'] == 1:
return 1
elif currentACL[context] == 1:
return 1
else:
return 0
except:
pass
@staticmethod @staticmethod
def createDefaultACLs(): def createDefaultACLs():
try: try:
@@ -372,6 +384,18 @@ class ACLManager:
@staticmethod @staticmethod
def checkOwnership(domain, admin, currentACL): def checkOwnership(domain, admin, currentACL):
try:
childDomain = ChildDomains.objects.get(domain=domain)
if currentACL['admin'] == 1:
return 1
elif childDomain.master.admin == admin:
return 1
else:
if childDomain.master.admin.owner == admin.pk:
return 1
except:
domainName = Websites.objects.get(domain=domain) domainName = Websites.objects.get(domain=domain)
if currentACL['admin'] == 1: if currentACL['admin'] == 1:

View File

@@ -590,8 +590,7 @@ class ApplicationInstaller(multi.Thread):
command = 'sudo GIT_SSH_COMMAND="ssh -i /root/.ssh/cyberpanel -o StrictHostKeyChecking=no" git clone ' \ command = 'sudo GIT_SSH_COMMAND="ssh -i /root/.ssh/cyberpanel -o StrictHostKeyChecking=no" git clone ' \
'--depth 1 --no-single-branch git@' + defaultProvider +'.com:' + username + '/' + reponame + '.git -b ' + branch + ' ' + finalPath '--depth 1 --no-single-branch git@' + defaultProvider +'.com:' + username + '/' + reponame + '.git -b ' + branch + ' ' + finalPath
result = subprocess.check_output(shlex.split(command)) subprocess.check_output(shlex.split(command))
except subprocess.CalledProcessError, msg: except subprocess.CalledProcessError, msg:
statusFile = open(tempStatusPath, 'w') statusFile = open(tempStatusPath, 'w')
statusFile.writelines('Failed to clone repository, make sure you deployed your key to repository. [404]') statusFile.writelines('Failed to clone repository, make sure you deployed your key to repository. [404]')

View File

@@ -0,0 +1,40 @@
#!/usr/local/CyberCP/bin/python2
import os
import os.path
import sys
import django
sys.path.append('/usr/local/CyberCP')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
django.setup()
from websiteFunctions.models import Websites
import json
class ChildDomainManager:
def __init__(self, masterDomain = None, childDomain = None):
self.masterDomain = masterDomain
self.childDomain = childDomain
def findChildDomainsJson(self):
master = Websites.objects.get(domain=self.masterDomain)
childDomains = master.childdomains_set.all()
json_data = "["
checker = 0
for items in childDomains:
dic = {
'childDomain': items.domain,
'path': items.path,
'childLunch': '/websites/' + self.masterDomain + '/' + items.domain
}
if checker == 0:
json_data = json_data + json.dumps(dic)
checker = 1
else:
json_data = json_data + ',' + json.dumps(dic)
json_data = json_data + ']'
return json_data

1176
plogical/firewallManager.py Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -336,7 +336,7 @@ WantedBy=multi-user.target"""
cmd = shlex.split(command) cmd = shlex.split(command)
subprocess.call(cmd) subprocess.call(cmd)
passwordCMD = "use " + dbName + ";insert into loginSystem_acl (id, name) values (3,'user');" passwordCMD = "use " + dbName + ";insert into loginSystem_acl (id, name, createDatabase, deleteDatabase, listDatabases, createDNSZone, deleteZone, addDeleteRecords, createEmail, deleteEmail, emailForwarding, changeEmailPassword, dkimManager, createFTPAccount, deleteFTPAccount, listFTPAccounts, createBackup, manageSSL) values (3,'user', 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);"
command = 'sudo mysql --host=' + host + ' --port=' + port + ' -u ' + dbUser + ' -p' + password + ' -e "' + passwordCMD + '"' command = 'sudo mysql --host=' + host + ' --port=' + port + ' -u ' + dbUser + ' -p' + password + ' -e "' + passwordCMD + '"'
cmd = shlex.split(command) cmd = shlex.split(command)
subprocess.call(cmd) subprocess.call(cmd)
@@ -351,6 +351,11 @@ WantedBy=multi-user.target"""
cmd = shlex.split(command) cmd = shlex.split(command)
subprocess.call(cmd) subprocess.call(cmd)
passwordCMD = "use " + dbName + ";alter table loginSystem_administrator drop initUserAccountsLimit;"
command = 'sudo mysql --host=' + host + ' --port=' + port + ' -u ' + dbUser + ' -p' + password + ' -e "' + passwordCMD + '"'
cmd = shlex.split(command)
subprocess.call(cmd)
os.chdir(cwd) os.chdir(cwd)
except OSError, msg: except OSError, msg:

View File

@@ -452,11 +452,12 @@ RewriteFile .htaccess
return [0,"223 [IO Error with main config file [createConfigInMainVirtualHostFile]]"] return [0,"223 [IO Error with main config file [createConfigInMainVirtualHostFile]]"]
@staticmethod @staticmethod
def deleteVirtualHostConfigurations(virtualHostName, numberOfSites): def deleteVirtualHostConfigurations(virtualHostName):
try: try:
## Deleting master conf ## Deleting master conf
numberOfSites = str(Websites.objects.count() + ChildDomains.objects.count())
vhost.deleteCoreConf(virtualHostName, numberOfSites) vhost.deleteCoreConf(virtualHostName, numberOfSites)
delWebsite = Websites.objects.get(domain=virtualHostName) delWebsite = Websites.objects.get(domain=virtualHostName)
@@ -1000,3 +1001,4 @@ RewriteFile .htaccess
logging.CyberCPLogFileWriter.writeToFile( logging.CyberCPLogFileWriter.writeToFile(
str(msg) + "223 [IO Error with main config file [createConfigInMainDomainHostFile]]") str(msg) + "223 [IO Error with main config file [createConfigInMainDomainHostFile]]")
return [0, "223 [IO Error with main config file [createConfigInMainDomainHostFile]]"] return [0, "223 [IO Error with main config file [createConfigInMainDomainHostFile]]"]

View File

@@ -14,7 +14,7 @@ from os.path import join
from os import listdir, rmdir from os import listdir, rmdir
from shutil import move from shutil import move
from multiprocessing import Process from multiprocessing import Process
from websiteFunctions.models import Websites, ChildDomains from websiteFunctions.models import Websites, ChildDomains, aliasDomains
from loginSystem.models import Administrator from loginSystem.models import Administrator
from packages.models import Package from packages.models import Package
import subprocess import subprocess
@@ -137,8 +137,7 @@ class virtualHostUtilities:
return 1, 'None' return 1, 'None'
except BaseException, msg: except BaseException, msg:
numberOfWebsites = str(Websites.objects.count() + ChildDomains.objects.count()) vhost.deleteVirtualHostConfigurations(virtualHostName)
vhost.deleteVirtualHostConfigurations(virtualHostName, numberOfWebsites)
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [createVirtualHost]") logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [createVirtualHost]")
logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, str(msg) + " [404]") logging.CyberCPLogFileWriter.statusWriter(tempStatusPath, str(msg) + " [404]")
return 0, str(msg) return 0, str(msg)
@@ -597,10 +596,14 @@ class virtualHostUtilities:
else: else:
vhost.createAliasSSLMap(confPath, masterDomain, aliasDomain) vhost.createAliasSSLMap(confPath, masterDomain, aliasDomain)
website = Websites.objects.get(domain=masterDomain)
newAlias = aliasDomains(master=website, aliasDomain = aliasDomain)
newAlias.save()
print "1,None" print "1,None"
except BaseException, msg: except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [createAlias]") logging.CyberCPLogFileWriter.writeToFile(str(msg) + " [createAlias]")
print "0," + str(msg) print "0," + str(msg)
@@ -664,6 +667,9 @@ class virtualHostUtilities:
writeToFile.close() writeToFile.close()
installUtilities.installUtilities.reStartLiteSpeed() installUtilities.installUtilities.reStartLiteSpeed()
delAlias = aliasDomains.objects.get(aliasDomain=aliasDomain)
delAlias.delete()
print "1,None" print "1,None"
@@ -1018,7 +1024,7 @@ def main():
virtualHostUtilities.createVirtualHost(args.virtualHostName, args.administratorEmail, args.phpVersion, args.virtualHostUser, int(args.ssl), dkimCheck, openBasedir, args.websiteOwner, args.package, tempStatusPath) virtualHostUtilities.createVirtualHost(args.virtualHostName, args.administratorEmail, args.phpVersion, args.virtualHostUser, int(args.ssl), dkimCheck, openBasedir, args.websiteOwner, args.package, tempStatusPath)
elif args.function == "deleteVirtualHostConfigurations": elif args.function == "deleteVirtualHostConfigurations":
vhost.deleteVirtualHostConfigurations(args.virtualHostName,int(args.numberOfSites)) vhost.deleteVirtualHostConfigurations(args.virtualHostName)
elif args.function == "createDomain": elif args.function == "createDomain":
try: try:
dkimCheck = int(args.dkimCheck) dkimCheck = int(args.dkimCheck)

1942
plogical/website.py Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -6,9 +6,7 @@ from django.http import HttpResponse
import json import json
import plogical.CyberCPLogFileWriter as logging import plogical.CyberCPLogFileWriter as logging
from plogical.tuning import tuning from plogical.tuning import tuning
from loginSystem.models import Administrator
from loginSystem.views import loadLoginPage from loginSystem.views import loadLoginPage
from websiteFunctions.models import Websites,ChildDomains
from plogical.virtualHostUtilities import virtualHostUtilities from plogical.virtualHostUtilities import virtualHostUtilities
import subprocess import subprocess
import shlex import shlex

File diff suppressed because it is too large Load Diff