def getCurrentBackups(self, userID = None, data = None): try: currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) backupDomain = data['websiteToBeBacked'] if ACLManager.checkOwnership(backupDomain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson('fetchStatus', 0) if ACLManager.checkOwnership(backupDomain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() website = Websites.objects.get(domain=backupDomain) backups = website.backups_set.all() json_data = "[" checker = 0 for items in backups: if items.status == 0: status = "Pending" else: status = "Completed" dic = {'id': items.id, 'file': items.fileName, 'date': items.date, 'size': items.size, 'status': status } if checker == 0: json_data = json_data + json.dumps(dic) checker = 1 else: json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ']' final_json = json.dumps({'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data}) return HttpResponse(final_json) except BaseException, msg: final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)
def submitEmailDeletion(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'deleteEmail') == 0: return ACLManager.loadErrorJson('deleteEmailStatus', 0) data = json.loads(self.request.body) email = data['email'] eUser = EUsers.objects.get(email=email) admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(eUser.emailOwner.domainOwner.domain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() mailUtilities.deleteEmailAccount(email) data_ret = {'status': 1, 'deleteEmailStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 0, 'deleteEmailStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def fetchWebsiteData(self): try: currentACL = ACLManager.loadedACL(self.admin.pk) website = Websites.objects.get(domain=self.data['domainName']) admin = Administrator.objects.get(pk=self.admin.pk) if ACLManager.checkOwnership(self.data['domainName'], admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() Data = {} Data['ftpAllowed'] = website.package.ftpAccounts Data['ftpUsed'] = website.users_set.all().count() Data['dbUsed'] = website.databases_set.all().count() Data['dbAllowed'] = website.package.dataBases diskUsageDetails = virtualHostUtilities.getDiskUsage( "/home/" + self.data['domainName'], website.package.diskSpace) ## bw usage calculation try: execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py" execPath = execPath + " findDomainBW --virtualHostName " + self.data[ 'domainName'] + " --bandwidth " + str( website.package.bandwidth) output = subprocess.check_output(shlex.split(execPath)) bwData = output.split(",") except BaseException: bwData = [0, 0] ## bw usage calculations Data['bwAllowed'] = website.package.bandwidth Data['bwUsed'] = bwData[0] Data['bwUsage'] = bwData[1] if diskUsageDetails != None: if diskUsageDetails[1] > 100: diskUsageDetails[1] = 100 Data['diskUsage'] = diskUsageDetails[1] Data['diskUsed'] = diskUsageDetails[0] Data['diskAllowed'] = website.package.diskSpace else: Data['diskUsed'] = 0 Data['diskUsage'] = 0 Data['diskInMBTotal'] = website.package.diskSpace Data['status'] = 1 final_json = json.dumps(Data) return HttpResponse(final_json) except BaseException, msg: return self.ajaxPre(0, str(msg))
def submitEmailList(self): try: data = json.loads(self.request.body) extraArgs = {} extraArgs['domain'] = data['domain'] extraArgs['path'] = data['path'] extraArgs['listName'] = data['listName'].replace(' ', '') extraArgs['tempStatusPath'] = "/home/cyberpanel/" + str(randint(1000, 9999)) userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(data['domain'], admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() if emACL.checkIfEMEnabled(admin.userName) == 0: return ACLManager.loadErrorJson() em = EM('createEmailList', extraArgs) em.start() time.sleep(2) data_ret = {"status": 1, 'tempStatusPath': extraArgs['tempStatusPath']} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: final_dic = {'status': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)
def deleteBackup(request): try: userID = request.session['userID'] currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) data = json.loads(request.body) backupDomain = data['websiteToBeBacked'] if ACLManager.checkOwnership(backupDomain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson('fetchStatus', 0) id = data['backupID'] IncJob.objects.get(id=id).delete() final_dic = {'status': 1, 'error_message': 'None'} final_json = json.dumps(final_dic) return HttpResponse(final_json) except BaseException, msg: final_dic = {'destStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)
def deleteBackup(self, userID = None, data = None): try: backupID = data['backupID'] backup = Backups.objects.get(id=backupID) domainName = backup.website.domain currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() path = "/home/" + domainName + "/backup/" + backup.fileName + ".tar.gz" command = 'sudo rm -f ' + path ProcessUtilities.executioner(command) backup.delete() final_json = json.dumps({'status': 1, 'deleteStatus': 1, 'error_message': "None"}) return HttpResponse(final_json) except BaseException, msg: final_dic = {'status': 0, 'deleteStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)
def manageSMTP(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(self.domain, admin, currentACL) == 1: pass else: return ACLManager.loadError() if emACL.checkIfEMEnabled(admin.userName) == 0: return ACLManager.loadError() website = Websites.objects.get(domain=self.domain) emailLists = website.emaillists_set.all() listNames = [] for items in emailLists: listNames.append(items.listName) return render(self.request, 'emailMarketing/manageSMTPHosts.html', { 'listNames': listNames, 'domain': self.domain }) except KeyError, msg: return redirect(loadLoginPage)
def submitPasswordChange(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'changeEmailPassword') == 0: return ACLManager.loadErrorJson('passChangeStatus', 0) data = json.loads(self.request.body) email = data['email'] password = data['passwordByPass'] emailDB = EUsers.objects.get(email=email) admin = Administrator.objects.get(pk=userID) try: if ACLManager.checkOwnership(emailDB.emailOwner.domainOwner.domain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() except: if ACLManager.checkOwnership(emailDB.emailOwner.childOwner.domain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() CentOSPath = '/etc/redhat-release' if os.path.exists(CentOSPath): password = bcrypt.hashpw(str(password), bcrypt.gensalt()) password = '******' % (password) emailDB.password = password else: password = bcrypt.hashpw(str(password), bcrypt.gensalt()) password = '******' % (password) emailDB.password = password emailDB.save() data_ret = {'status': 1, 'passChangeStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 0, 'passChangeStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def getEmailsForDomain(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'deleteEmail') == 0: return ACLManager.loadErrorJson('fetchStatus', 0) data = json.loads(self.request.body) domain = data['domain'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(domain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() try: domain = Domains.objects.get(domain=domain) except: final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': "No email accounts exists!"} final_json = json.dumps(final_dic) return HttpResponse(final_json) emails = domain.eusers_set.all() if emails.count() == 0: final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': "No email accounts exists!"} final_json = json.dumps(final_dic) return HttpResponse(final_json) json_data = "[" checker = 0 count = 1 for items in emails: dic = {'id': count, 'email': items.email} count = count + 1 if checker == 0: json_data = json_data + json.dumps(dic) checker = 1 else: json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ']' final_dic = {'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data} final_json = json.dumps(final_dic) return HttpResponse(final_json) except BaseException, msg: data_ret = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def obtainHostNameSSL(request): try: userID = request.session['userID'] try: if request.method == 'POST': currentACL = ACLManager.loadedACL(userID) if currentACL['admin'] == 1: pass elif currentACL['hostnameSSL'] == 1: pass else: return ACLManager.loadErrorJson('SSL', 0) data = json.loads(request.body) virtualHost = data['virtualHost'] path = "/home/" + virtualHost + "/public_html" data = json.loads(request.body) virtualHost = data['virtualHost'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(virtualHost, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() ## ssl issue execPath = "/usr/local/CyberCP/bin/python2 " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py" execPath = execPath + " issueSSLForHostName --virtualHostName " + virtualHost + " --path " + path output = ProcessUtilities.outputExecutioner(execPath) if output.find("1,None") > -1: data_ret = {"status": 1, "SSL": 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: data_ret = {"status": 0, "SSL": 0, 'error_message': output} json_data = json.dumps(data_ret) return HttpResponse(json_data) ## ssl issue ends except BaseException, msg: data_ret = {"status": 0, "SSL": 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) except KeyError: data_ret = {"status": 0, "SSL": 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def fetchDatabases(self, userID=None, data=None): try: currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'deleteDatabase') == 0: return ACLManager.loadErrorJson('fetchStatus', 0) databaseWebsite = data['databaseWebsite'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(databaseWebsite, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() website = Websites.objects.get(domain=databaseWebsite) databases = Databases.objects.filter(website=website) json_data = "[" checker = 0 for items in databases: dic = { 'id': items.pk, 'dbName': items.dbName, 'dbUser': items.dbUser, } if checker == 0: json_data = json_data + json.dumps(dic) checker = 1 else: json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ']' final_json = json.dumps({ 'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data }) return HttpResponse(final_json) except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) final_json = json.dumps({ 'status': 0, 'fetchStatus': 0, 'error_message': str(msg) }) return HttpResponse(final_json)
def submitDBCreation(self, userID=None, data=None, rAPI=None): try: currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) if ACLManager.currentContextPermission(currentACL, 'createDatabase') == 0: return ACLManager.loadErrorJson('createDBStatus', 0) databaseWebsite = data['databaseWebsite'] dbName = data['dbName'] dbUsername = data['dbUsername'] dbPassword = data['dbPassword'] webUsername = data['webUserName'] if ACLManager.checkOwnership(databaseWebsite, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() if rAPI == None: dbName = webUsername + "_" + dbName dbUsername = webUsername + "_" + dbUsername result = mysqlUtilities.submitDBCreation(dbName, dbUsername, dbPassword, databaseWebsite) if result[0] == 1: data_ret = { 'status': 1, 'createDBStatus': 1, 'error_message': "None" } json_data = json.dumps(data_ret) return HttpResponse(json_data) else: data_ret = { 'status': 0, 'createDBStatus': 0, 'error_message': result[1] } json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = { 'status': 0, 'createDBStatus': 0, 'error_message': str(msg) } json_data = json.dumps(data_ret) return HttpResponse(json_data)
def submitFTPCreation(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'createFTPAccount') == 0: return ACLManager.loadErrorJson('creatFTPStatus', 0) data = json.loads(self.request.body) userName = data['ftpUserName'] password = data['passwordByPass'] domainName = data['ftpDomain'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: pass else: return ACLManager.loadError() try: api = data['api'] except: api = '0' admin = Administrator.objects.get(id=userID) try: path = data['path'] if len(path) > 0: pass else: path = 'None' except: path = 'None' result = FTPUtilities.submitFTPCreation(domainName, userName, password, path, admin.userName, api) if result[0] == 1: data_ret = {'status': 1, 'creatFTPStatus': 1, 'error_message': 'None'} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: data_ret = {'status': 0, 'creatFTPStatus': 0, 'error_message': result[1]} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 0, 'creatFTPStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def submitForwardDeletion(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'emailForwarding') == 0: return ACLManager.loadErrorJson('deleteForwardingStatus', 0) data = json.loads(self.request.body) destination = data['destination'] source = data['source'] forwardingOption = data['forwardingOption'] eUser = EUsers.objects.get(email=source) admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(eUser.emailOwner.domainOwner.domain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() if forwardingOption == 'Forward to email': for items in Forwardings.objects.filter(destination=destination, source=source): items.delete() else: for items in Pipeprograms.objects.filter(destination=destination, source=source): items.delete() ## Delete Email PIPE sourceusername = source.split("@")[0] virtualfilter = '%s FILTER %spipe:dummy' % (source, sourceusername) command = "sed -i 's/^" + source + ".*//g' /etc/postfix/script_filter" ProcessUtilities.executioner(command) command = "sed -i 's/^" + sourceusername + "pipe.*//g' /etc/postfix/master.cf" ProcessUtilities.executioner(command) #### Hashing filter Reloading Postfix command = "postmap /etc/postfix/script_filter" ProcessUtilities.executioner(command) command = "postfix reload" ProcessUtilities.executioner(command) ## data_ret = {'status': 1, 'deleteForwardingStatus': 1, 'error_message': "None", 'successMessage': 'Successfully deleted!'} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 0, 'deleteForwardingStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def restorePoint(request): try: userID = request.session['userID'] currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) data = json.loads(request.body) backupDomain = data['websiteToBeBacked'] jobid = data['jobid'] if ACLManager.checkOwnership(backupDomain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson('metaStatus', 0) tempPath = "/home/cyberpanel/" + str(randint(1000, 9999)) if data['reconstruct'] == 'remote': extraArgs = {} extraArgs['website'] = backupDomain extraArgs['jobid'] = jobid extraArgs['tempPath'] = tempPath extraArgs['reconstruct'] = data['reconstruct'] extraArgs['backupDestinations'] = data['backupDestinations'] extraArgs['password'] = data['password'] extraArgs['path'] = data['path'] else: extraArgs = {} extraArgs['website'] = backupDomain extraArgs['jobid'] = jobid extraArgs['tempPath'] = tempPath extraArgs['reconstruct'] = data['reconstruct'] startJob = IncJobs('restorePoint', extraArgs) startJob.start() time.sleep(2) final_json = json.dumps({ 'status': 1, 'error_message': "None", 'tempPath': tempPath }) return HttpResponse(final_json) except BaseException, msg: logging.writeToFile(str(msg)) final_dic = {'status': 0, 'metaStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)
def fetchRestorePoints(request): try: userID = request.session['userID'] currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) data = json.loads(request.body) backupDomain = data['websiteToBeBacked'] if ACLManager.checkOwnership(backupDomain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson('fetchStatus', 0) data = json.loads(request.body) id = data['id'] incJob = IncJob.objects.get(id=id) backups = incJob.jobsnapshots_set.all() json_data = "[" checker = 0 for items in backups: dic = { 'id': items.id, 'snapshotid': items.snapshotid, 'type': items.type, 'destination': items.destination, } if checker == 0: json_data = json_data + json.dumps(dic) checker = 1 else: json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ']' final_json = json.dumps({ 'status': 1, 'error_message': "None", "data": json_data }) return HttpResponse(final_json) except BaseException, msg: final_dic = {'status': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)
def controller(request): try: data = json.loads(request.body) domainName = data['domainName'] method = data['method'] userID = request.session['userID'] admin = Administrator.objects.get(pk=userID) currentACL = ACLManager.loadedACL(userID) if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() fm = FM(request, data) if method == 'listForTable': return fm.listForTable() elif method == 'list': return fm.list() elif method == 'createNewFile': return fm.createNewFile() elif method == 'createNewFolder': return fm.createNewFolder() elif method == 'deleteFolderOrFile': return fm.deleteFolderOrFile() elif method == 'copy': return fm.copy() elif method == 'move': return fm.move() elif method == 'rename': return fm.rename() elif method == 'readFileContents': return fm.readFileContents() elif method == 'writeFileContents': return fm.writeFileContents() elif method == 'upload': return fm.writeFileContents() elif method == 'extract': return fm.extract() elif method == 'compress': return fm.compress() elif method == 'changePermissions': return fm.changePermissions() except BaseException, msg: fm = FM(request, None) return fm.ajaxPre(0, str(msg))
def changePassword(self, userID=None, data=None): try: currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'listDatabases') == 0: return ACLManager.loadErrorJson('changePasswordStatus', 0) userName = data['dbUserName'] dbPassword = data['dbPassword'] db = Databases.objects.get(dbUser=userName) admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(db.website.domain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() res = mysqlUtilities.changePassword(userName, dbPassword) if res == 0: data_ret = { 'status': 0, 'changePasswordStatus': 0, 'error_message': "Please see CyberPanel main log file." } json_data = json.dumps(data_ret) return HttpResponse(json_data) data_ret = { 'status': 1, 'changePasswordStatus': 1, 'error_message': "None" } json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = { 'status': 0, 'changePasswordStatus': 0, 'error_message': str(msg) } json_data = json.dumps(data_ret) return HttpResponse(json_data)
def createEmailList(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(self.domain, admin, currentACL) == 1: pass else: return ACLManager.loadError() if emACL.checkIfEMEnabled(admin.userName) == 0: return ACLManager.loadError() return render(self.request, 'emailMarketing/createEmailList.html', {'domain': self.domain}) except KeyError, msg: return redirect(loadLoginPage)
def loadFileManagerHome(request, domain): try: userID = request.session['userID'] if Websites.objects.filter(domain=domain).exists(): admin = Administrator.objects.get(pk=userID) currentACL = ACLManager.loadedACL(userID) if ACLManager.checkOwnership(domain, admin, currentACL) == 1: return render(request, 'filemanager/index.html', {'domainName': domain}) else: return ACLManager.loadError() else: return HttpResponse("Domain does not exists.") except KeyError: return redirect(loadLoginPage)
def fetchEmails(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'listEmails') == 0: return ACLManager.loadErrorJson('status', 0) data = json.loads(self.request.body) selectedDomain = data['selectedDomain'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(selectedDomain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() try: emailDomain = Domains.objects.get(domain=selectedDomain) except: raise BaseException('No emails exist for this domain.') records = emailDomain.eusers_set.all() json_data = "[" checker = 0 for items in records: dic = {'email': items.email, } if checker == 0: json_data = json_data + json.dumps(dic) checker = 1 else: json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ']' final_json = json.dumps({'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data}) return HttpResponse(final_json) except BaseException, msg: final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)
def getAllFTPAccounts(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'listFTPAccounts') == 0: return ACLManager.loadErrorJson('fetchStatus', 0) data = json.loads(self.request.body) selectedDomain = data['selectedDomain'] domain = Websites.objects.get(domain=selectedDomain) admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(selectedDomain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() records = Users.objects.filter(domain=domain) json_data = "[" checker = 0 for items in records: dic = {'id': items.id, 'user': items.user, 'dir': items.dir, 'quotasize': str(items.quotasize) + "MB", } if checker == 0: json_data = json_data + json.dumps(dic) checker = 1 else: json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ']' final_json = json.dumps({'status': 1, 'fetchStatus': 1, 'error_message': "None", "data": json_data}) return HttpResponse(final_json) except BaseException, msg: final_dic = {'status': 0, 'fetchStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)
def changePermissions(request): try: userID = request.session['userID'] admin = Administrator.objects.get(pk=userID) try: data = json.loads(request.body) domainName = data['domainName'] currentACL = ACLManager.loadedACL(userID) if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson('permissionsChanged', 0) website = Websites.objects.get(domain=domainName) externalApp = website.externalApp command = "sudo chown -R " + externalApp + ":" + externalApp + " /home/" + domainName ProcessUtilities.popenExecutioner(command) command = "sudo chown -R lscpd:lscpd /home/" + domainName + "/logs" ProcessUtilities.popenExecutioner(command) command = "sudo find %s -type d -exec chmod 0755 {} \;" % ( "/home/" + domainName + "/public_html") ProcessUtilities.popenExecutioner(command) command = "sudo find %s -type f -exec chmod 0644 {} \;" % ( "/home/" + domainName + "/public_html") ProcessUtilities.popenExecutioner(command) data_ret = {'permissionsChanged': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) data_ret = {'permissionsChanged': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data) except KeyError: return redirect(loadLoginPage)
def submitDatabaseDeletion(self, userID=None, data=None): try: currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) if ACLManager.currentContextPermission(currentACL, 'deleteDatabase') == 0: return ACLManager.loadErrorJson('deleteStatus', 0) dbName = data['dbName'] db = Databases.objects.get(dbName=dbName) if ACLManager.checkOwnership(db.website.domain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() result = mysqlUtilities.submitDBDeletion(dbName) if result[0] == 1: data_ret = { 'status': 1, 'deleteStatus': 1, 'error_message': "None" } json_data = json.dumps(data_ret) return HttpResponse(json_data) else: data_ret = { 'status': 0, 'deleteStatus': 0, 'error_message': result[1] } json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = { 'status': 0, 'deleteStatus': 0, 'error_message': str(msg) } json_data = json.dumps(data_ret) return HttpResponse(json_data)
def upload(request): try: data = request.POST userID = request.session['userID'] admin = Administrator.objects.get(pk=userID) currentACL = ACLManager.loadedACL(userID) if ACLManager.checkOwnership(data['domainName'], admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() fm = FM(request, data) return fm.upload() except KeyError: return redirect(loadLoginPage)
def createTemporaryFile(request): try: userID = request.session['userID'] data = json.loads(request.body) domainName = data['domainName'] admin = Administrator.objects.get(pk=userID) currentACL = ACLManager.loadedACL(userID) if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson('createTemporaryFile', 0) ## Create file manager entry if Websites.objects.filter(domain=domainName).exists(): execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/filemanager.py" execPath = execPath + " createTemporaryFile --domainName " + domainName output = subprocess.check_output(shlex.split(execPath)) if output.find("0,") > -1: data_ret = {'createTemporaryFile': 0, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: domainRandomSeed = output.rstrip('\n') data_ret = { 'createTemporaryFile': 1, 'error_message': "None", 'domainRandomSeed': domainRandomSeed } json_data = json.dumps(data_ret) return HttpResponse(json_data) except KeyError: return redirect(loadLoginPage)
def fetchFTPAccounts(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'deleteFTPAccount') == 0: return ACLManager.loadErrorJson('fetchStatus', 0) data = json.loads(self.request.body) domain = data['ftpDomain'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(domain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() website = Websites.objects.get(domain=domain) ftpAccounts = website.users_set.all() json_data = "[" checker = 0 for items in ftpAccounts: dic = {"userName": items.user} if checker == 0: json_data = json_data + json.dumps(dic) checker = 1 else: json_data = json_data + ',' + json.dumps(dic) json_data = json_data + ']' final_json = json.dumps({'fetchStatus': 1, 'error_message': "None", "data": json_data}) return HttpResponse(final_json) except BaseException, msg: data_ret = {'fetchStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def submitEmailCreation(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'createEmail') == 0: return ACLManager.loadErrorJson('createEmailStatus', 0) data = json.loads(self.request.body) domainName = data['domain'] userName = data['username'].lower() password = data['passwordByPass'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson() ## Create email entry result = mailUtilities.createEmailAccount(domainName, userName.lower(), password) if result[0] == 1: data_ret = {'status': 1, 'createEmailStatus': 1, 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) else: data_ret = {'status': 0, 'createEmailStatus': 0, 'error_message': result[1]} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 0, 'createEmailStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def fetchDKIMKeys(self): try: userID = self.request.session['userID'] currentACL = ACLManager.loadedACL(userID) if ACLManager.currentContextPermission(currentACL, 'dkimManager') == 0: return ACLManager.loadErrorJson('fetchStatus', 0) data = json.loads(self.request.body) domainName = data['domainName'] admin = Administrator.objects.get(pk=userID) if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: pass else: return ACLManager.loadError() try: path = "/etc/opendkim/keys/" + domainName + "/default.txt" command = "sudo cat " + path output = ProcessUtilities.outputExecutioner(command, 'opendkim') leftIndex = output.index('(') + 2 rightIndex = output.rindex(')') - 1 path = "/etc/opendkim/keys/" + domainName + "/default.private" command = "sudo cat " + path privateKey = ProcessUtilities.outputExecutioner(command, 'opendkim') data_ret = {'status': 1, 'fetchStatus': 1, 'keysAvailable': 1, 'publicKey': output[leftIndex:rightIndex], 'privateKey': privateKey, 'dkimSuccessMessage': 'Keys successfully fetched!', 'error_message': "None"} json_data = json.dumps(data_ret) return HttpResponse(json_data) except BaseException, msg: data_ret = {'status': 1, 'fetchStatus': 1, 'keysAvailable': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret) return HttpResponse(json_data)
def submitBackupCreation(self, userID = None, data = None): try: currentACL = ACLManager.loadedACL(userID) admin = Administrator.objects.get(pk=userID) backupDomain = data['websiteToBeBacked'] website = Websites.objects.get(domain=backupDomain) if ACLManager.checkOwnership(backupDomain, admin, currentACL) == 1: pass else: return ACLManager.loadErrorJson('metaStatus', 0) ## defining paths ## /home/example.com/backup backupPath = os.path.join("/home", backupDomain, "backup/") backupDomainName = data['websiteToBeBacked'] backupName = 'backup-' + backupDomainName + "-" + time.strftime("%m.%d.%Y_%H-%M-%S") ## /home/example.com/backup/backup-example.com-02.13.2018_10-24-52 tempStoragePath = os.path.join(backupPath, backupName) p = Process(target=backupUtil.submitBackupCreation, args=(tempStoragePath, backupName, backupPath,backupDomain)) p.start() time.sleep(2) final_json = json.dumps({'status': 1, 'metaStatus': 1, 'error_message': "None", 'tempStorage': tempStoragePath}) return HttpResponse(final_json) except BaseException, msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) final_dic = {'status': 0, 'metaStatus': 0, 'error_message': str(msg)} final_json = json.dumps(final_dic) return HttpResponse(final_json)