From 5703ee6c08ef3d6bebf678b99645bed908fdf2c6 Mon Sep 17 00:00:00 2001 From: usmannasir <01-134132-158@student.bahria.edu.pk> Date: Thu, 24 May 2018 18:01:06 +0500 Subject: [PATCH] Bug fixes and improvements to Backups and Website creation. --- plogical/backupUtilities.py | 3 +- plogical/virtualHostUtilities.py | 4 +- .../templates/websiteFunctions/website.html | 3 +- websiteFunctions/views.py | 150 ++++++------------ 4 files changed, 54 insertions(+), 106 deletions(-) diff --git a/plogical/backupUtilities.py b/plogical/backupUtilities.py index 1d8264756..c392c8771 100644 --- a/plogical/backupUtilities.py +++ b/plogical/backupUtilities.py @@ -286,7 +286,8 @@ class backupUtilities: {'masterDomain': masterDomain, 'domainName': domain, 'phpSelection': phpSelection, 'path': path, 'ssl': 0, 'restore': 1, - 'dkimCheck': 0}) + 'dkimCheck': 0, + 'openBasedir':0}) r = requests.post("http://localhost:5003/websites/submitDomainCreation", data=finalData, verify=False) diff --git a/plogical/virtualHostUtilities.py b/plogical/virtualHostUtilities.py index dd066ff7f..680486d98 100644 --- a/plogical/virtualHostUtilities.py +++ b/plogical/virtualHostUtilities.py @@ -555,7 +555,7 @@ class virtualHostUtilities: ## OpenBase Dir Protection phpIniOverride = "phpIniOverride {\n" - php_admin_value = 'php_admin_value open_basedir "/tmp:' + path + '"\n' + php_admin_value = 'php_admin_value open_basedir "/tmp:$VH_ROOT"\n' endPHPIniOverride = "}\n" if openBasedir == 1: @@ -1715,7 +1715,6 @@ def issueSSLForMailServer(virtualHost,path): str(msg) + " [issueSSLForHostName]") print "0,"+str(msg) - def createAlias(masterDomain,aliasDomain,ssl,sslPath, administratorEmail): try: @@ -2001,6 +2000,7 @@ def main(): openBasedir = 0 createVirtualHost(args.virtualHostName, args.administratorEmail, args.phpVersion, args.virtualHostUser, int(args.numberOfSites), int(args.ssl), args.sslPath, dkimCheck, openBasedir) + elif args.function == "deleteVirtualHostConfigurations": virtualHostUtilities.deleteVirtualHostConfigurations(args.virtualHostName,int(args.numberOfSites)) elif args.function == "createDomain": diff --git a/websiteFunctions/templates/websiteFunctions/website.html b/websiteFunctions/templates/websiteFunctions/website.html index 7e6be632f..782e8824e 100644 --- a/websiteFunctions/templates/websiteFunctions/website.html +++ b/websiteFunctions/templates/websiteFunctions/website.html @@ -17,7 +17,7 @@ {% if not error %} -
+
@@ -109,7 +109,6 @@
-
diff --git a/websiteFunctions/views.py b/websiteFunctions/views.py index 4fa13c96d..7350b6a88 100644 --- a/websiteFunctions/views.py +++ b/websiteFunctions/views.py @@ -38,7 +38,6 @@ def loadWebsitesHome(request): except KeyError: return redirect(loadLoginPage) - def createWebsite(request): try: val = request.session['userID'] @@ -80,7 +79,6 @@ def createWebsite(request): except KeyError: return redirect(loadLoginPage) - def modifyWebsite(request): try: val = request.session['userID'] @@ -126,7 +124,6 @@ def modifyWebsite(request): except KeyError: return redirect(loadLoginPage) - def deleteWebsite(request): try: val = request.session['userID'] @@ -172,8 +169,7 @@ def deleteWebsite(request): except KeyError: return redirect(loadLoginPage) - -def dnsTemplate(request, domain, admin, dkimCheck): +def dnsTemplate(request, domain, admin): try: ipFile = "/etc/cyberpanel/machineIP" @@ -309,7 +305,6 @@ def dnsTemplate(request, domain, admin, dkimCheck): auth=1) record.save() - else: if Domains.objects.filter(name=topLevelDomain).count() == 0: zone = Domains(admin=admin, name=topLevelDomain, type="NATIVE") @@ -462,7 +457,6 @@ def createDKIMRecords(request, domain, admin): logging.CyberCPLogFileWriter.writeToFile( "We had errors while creating DNS records for: " + domain + ". Error message: " + str(msg)) - def siteState(request): try: val = request.session['userID'] @@ -516,23 +510,19 @@ def submitWebsiteCreation(request): websiteOwner = data['websiteOwner'] externalApp = "".join(re.findall("[a-zA-Z]+", domain))[:7] - try: - website = Websites.objects.get(domain=domain) - data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, - 'error_message': "Website Already Exists"} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - except: - pass - try: - website = ChildDomains.objects.get(domain=domain) + if Websites.objects.filter(domain=domain).count() > 0: data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, - 'error_message': "Website Already Exists"} + 'error_message': "This website already exists."} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + + if ChildDomains.objects.filter(domain=domain).count() > 0: + data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, + 'error_message': "This website already exists as child domain."} json_data = json.dumps(data_ret) return HttpResponse(json_data) - except: - pass ####### Limitations check @@ -540,42 +530,18 @@ def submitWebsiteCreation(request): if admin.type == 1: pass - elif admin.type == 3: - if admin.initWebsitesLimit == 0: - pass - elif admin.websites_set.all().count() == admin.initWebsitesLimit: - data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, - 'error_message': "Selected owner have reached maximum websites limit"} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - else: - pass else: - - initialLimit = admin.initWebsitesLimit - try: - subaccounts = Administrator.objects.filter(owner=admin.pk) - for items in subaccounts: - initialLimit = initialLimit - items.initWebsitesLimit - except: - pass - - if admin.initWebsitesLimit == 0: - pass - elif admin.websites_set.all().count() == initialLimit: - data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, - 'error_message': "Selected owner have reached maximum websites limit"} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - else: - pass + data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, + 'error_message': "Only administrators are allowed to create websites."} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) ####### Limitations Check End ##### Zone creation - dnsTemplate(requests, domain, admin, data['dkimCheck']) + dnsTemplate(requests, domain, admin) ## zone creation @@ -604,7 +570,7 @@ def submitWebsiteCreation(request): ## DKIM Check if data['dkimCheck'] == 1: - createDKIMRecords(request,domain,admin) + createDKIMRecords(request, domain, admin) selectedPackage = Package.objects.get(packageName=packageName) @@ -630,23 +596,21 @@ def submitDomainCreation(request): domain = data['domainName'] phpSelection = data['phpSelection'] - try: - website = Websites.objects.get(domain=domain) - data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, - 'error_message': "Website Already Exists"} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) - except: - pass - try: - website = ChildDomains.objects.get(domain=domain) + ## Check if this domain either exists as website or child domain + + if Websites.objects.filter(domain=domain).count() > 0: data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, - 'error_message': "Website Already Exists"} + 'error_message': "This Domain already exists as a website."} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + + if ChildDomains.objects.filter(domain=domain).count() > 0: + data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, + 'error_message': "This domain already exists as child domain."} json_data = json.dumps(data_ret) return HttpResponse(json_data) - except: - pass ####### Limitations check @@ -682,17 +646,12 @@ def submitDomainCreation(request): else: path = "/home/" + masterDomain + "/public_html/" + domain - ### Zone creation. + ### Zone creation. - try: - restore = data['restore'] - restart = 0 - except BaseException, msg: val = request.session['userID'] admin = Administrator.objects.get(pk=val) - dnsTemplate(requests, domain, admin, data['dkimCheck']) + dnsTemplate(requests, domain, admin) - ## Zone creation. externalApp = master.externalApp numberOfWebsites = str(Websites.objects.count() + ChildDomains.objects.count()) @@ -718,9 +677,9 @@ def submitDomainCreation(request): try: restore = data['restore'] restart = 0 - except BaseException, msg: if data['dkimCheck'] == 1: + admin = Administrator.objects.get(pk=val) createDKIMRecords(request, domain, admin) website = ChildDomains(master=master, domain=domain, path=path, phpSelection=phpSelection, ssl=ssl) @@ -780,8 +739,6 @@ def fetchDomains(request): final_json = json.dumps(final_dic) return HttpResponse(final_json) - - def listWebsites(request): try: val = request.session['userID'] @@ -819,7 +776,6 @@ def listWebsites(request): except KeyError: return redirect(loadLoginPage) - def getFurtherAccounts(request): try: val = request.session['userID'] @@ -891,7 +847,6 @@ def getFurtherAccounts(request): json_data = json.dumps(dic) return HttpResponse(json_data) - def submitWebsiteDeletion(request): try: val = request.session['userID'] @@ -1045,7 +1000,6 @@ def submitWebsiteStatus(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) - def submitWebsiteModify(request): try: val = request.session['userID'] @@ -1127,8 +1081,6 @@ def submitWebsiteModify(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) - - def saveWebsiteChanges(request): try: val = request.session['userID'] @@ -1189,7 +1141,6 @@ def saveWebsiteChanges(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) - def domain(request,domain): try: val = request.session['userID'] @@ -1285,8 +1236,6 @@ def domain(request,domain): except KeyError: return redirect(loadLoginPage) - - def getDataFromLogFile(request): data = json.loads(request.body) logType = data['logType'] @@ -1383,7 +1332,6 @@ def fetchErrorLogs(request): final_json = json.dumps({'logstatus': 0, 'error_message': str(msg)}) return HttpResponse(final_json) - def installWordpress(request): try: val = request.session['userID'] @@ -1602,7 +1550,6 @@ def installJoomla(request): logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[installJoomla]") return HttpResponse("Not Logged in as admin") - def getDataFromConfigFile(request): try: val = request.session['userID'] @@ -1703,7 +1650,6 @@ def saveConfigsToFile(request): logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[saveConfigsToFile]") return HttpResponse("Not Logged in as admin") - def getRewriteRules(request): try: val = request.session['userID'] @@ -1806,8 +1752,6 @@ def saveRewriteRules(request): logging.CyberCPLogFileWriter.writeToFile(str(msg) + "[saveConfigsToFile]") return HttpResponse("Not Logged in as admin") - - def saveSSL(request): try: val = request.session['userID'] @@ -1906,7 +1850,6 @@ def saveSSL(request): data_ret = {'sslStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) - def changePHP(request): try: val = request.session['userID'] @@ -1958,11 +1901,9 @@ def CreateWebsiteFromBackup(request): data = json.loads(request.body) backupFile = data['backupFile'].strip(".tar.gz") - originalFile = "/home/backup/" + data['backupFile'] - if not os.path.exists(originalFile): dir = data['dir'] path = "/home/backup/transfer-"+str(dir)+"/"+backupFile @@ -1982,7 +1923,24 @@ def CreateWebsiteFromBackup(request): phpSelection = backupMetaData.find('phpSelection').text externalApp = backupMetaData.find('externalApp').text - ####### Limitations Check End + + ## Pre-creation checks + + if Websites.objects.filter(domain=domain).count() > 0: + data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, + 'error_message': "This website already exists."} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + + if ChildDomains.objects.filter(domain=domain).count() > 0: + data_ret = {"existsStatus": 0, 'createWebSiteStatus': 0, + 'error_message': "This website already exists as child domain."} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + + ####### Pre-creation checks ends numberOfWebsites = str(Websites.objects.count() + ChildDomains.objects.count()) @@ -2144,7 +2102,6 @@ def CreateWebsiteFromBackup(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) - def listCron(request): try: val = request.session['userID'] @@ -2184,7 +2141,6 @@ def listCron(request): except KeyError: return redirect(loadLoginPage) - def getWebsiteCron(request): try: val = request.session['userID'] @@ -2262,7 +2218,6 @@ def getWebsiteCron(request): final_json = json.dumps(status) return HttpResponse(final_json) - def getCronbyLine(request): try: val = request.session['userID'] @@ -2344,7 +2299,6 @@ def getCronbyLine(request): final_json = json.dumps(status) return HttpResponse(final_json) - def saveCronChanges(request): try: val = request.session['userID'] @@ -2435,7 +2389,6 @@ def saveCronChanges(request): final_json = json.dumps(status) return HttpResponse(final_json) - def remCronbyLine(request): try: val = request.session['userID'] @@ -2527,7 +2480,6 @@ def remCronbyLine(request): final_json = json.dumps(status) return HttpResponse(final_json) - def addNewCron(request): try: val = request.session['userID'] @@ -2620,7 +2572,6 @@ def addNewCron(request): final_json = json.dumps(status) return HttpResponse(final_json) - def domainAlias(request,domain): try: val = request.session['userID'] @@ -2670,7 +2621,6 @@ def domainAlias(request,domain): except KeyError: return redirect(loadLoginPage) - def submitAliasCreation(request): try: if request.method == 'POST': @@ -2685,7 +2635,7 @@ def submitAliasCreation(request): ##### Zone creation - dnsTemplate(requests, aliasDomain, admin, 0) + dnsTemplate(requests, aliasDomain, admin) ### Zone creation @@ -2724,7 +2674,6 @@ def submitAliasCreation(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) - def issueAliasSSL(request): try: if request.method == 'POST': @@ -2813,7 +2762,6 @@ def delateAlias(request): json_data = json.dumps(data_ret) return HttpResponse(json_data) - def changeOpenBasedir(request): try: val = request.session['userID']