diff --git a/dockerManager/container.py b/dockerManager/container.py index 65fb3d787..9b9e6c7fe 100755 --- a/dockerManager/container.py +++ b/dockerManager/container.py @@ -6,6 +6,8 @@ import sys import django import mimetypes +from plogical.httpProc import httpProc + sys.path.append('/usr/local/CyberCP') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings") django.setup() @@ -91,59 +93,53 @@ class ContainerManager(multi.Thread): logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, str(msg) + ' [404].', 1) def createContainer(self, request=None, userID=None, data=None): + client = docker.from_env() + dockerAPI = docker.APIClient() + + adminNames = ACLManager.loadAllUsers(userID) + tag = request.GET.get('tag') + image = request.GET.get('image') + tag = tag.split(" (")[0] + + if "/" in image: + name = image.split("/")[0] + "." + image.split("/")[1] + else: + name = image + try: - admin = Administrator.objects.get(pk=userID) - if admin.acl.adminStatus != 1: - return ACLManager.loadError() + inspectImage = dockerAPI.inspect_image(image + ":" + tag) + except docker.errors.ImageNotFound: + val = request.session['userID'] + admin = Administrator.objects.get(pk=val) + return render(request, 'dockerManager/images.html', {"type": admin.type, + 'image': image, + 'tag': tag}) - client = docker.from_env() - dockerAPI = docker.APIClient() + envList = {}; + if 'Env' in inspectImage['Config']: + for item in inspectImage['Config']['Env']: + if '=' in item: + splitedItem = item.split('=', 1) + print(splitedItem) + envList[splitedItem[0]] = splitedItem[1] + else: + envList[item] = "" - adminNames = ACLManager.loadAllUsers(userID) - tag = request.GET.get('tag') - image = request.GET.get('image') - tag = tag.split(" (")[0] + portConfig = {}; + if 'ExposedPorts' in inspectImage['Config']: + for item in inspectImage['Config']['ExposedPorts']: + portDef = item.split('/') + portConfig[portDef[0]] = portDef[1] - if "/" in image: - name = image.split("/")[0] + "." + image.split("/")[1] - else: - name = image + if image is None or image is '' or tag is None or tag is '': + return redirect(loadImages) - try: - inspectImage = dockerAPI.inspect_image(image + ":" + tag) - except docker.errors.ImageNotFound: - val = request.session['userID'] - admin = Administrator.objects.get(pk=val) - return render(request, 'dockerManager/images.html', {"type": admin.type, - 'image': image, - 'tag': tag}) + Data = {"ownerList": adminNames, "image": image, "name": name, "tag": tag, "portConfig": portConfig, + "envList": envList} - envList = {}; - if 'Env' in inspectImage['Config']: - for item in inspectImage['Config']['Env']: - if '=' in item: - splitedItem = item.split('=', 1) - print(splitedItem) - envList[splitedItem[0]] = splitedItem[1] - else: - envList[item] = "" - - portConfig = {}; - if 'ExposedPorts' in inspectImage['Config']: - for item in inspectImage['Config']['ExposedPorts']: - portDef = item.split('/') - portConfig[portDef[0]] = portDef[1] - - if image is None or image is '' or tag is None or tag is '': - return redirect(loadImages) - - Data = {"ownerList": adminNames, "image": image, "name": name, "tag": tag, "portConfig": portConfig, - "envList": envList} - - return render(request, 'dockerManager/runContainer.html', Data) - - except BaseException as msg: - return HttpResponse(str(msg)) + template = 'dockerManager/runContainer.html' + proc = httpProc(request, template, Data, 'admin') + return proc.render() def loadContainerHome(self, request=None, userID=None, data=None): name = self.name @@ -196,51 +192,52 @@ class ContainerManager(multi.Thread): data['memoryUsage'] = 0 data['cpuUsage'] = 0 - return render(request, 'dockerManager/viewContainer.html', data) + template = 'dockerManager/viewContainer.html' + proc = httpProc(request, template, data, 'admin') + return proc.render() def listContainers(self, request=None, userID=None, data=None): - try: - client = docker.from_env() - dockerAPI = docker.APIClient() + client = docker.from_env() + dockerAPI = docker.APIClient() - currentACL = ACLManager.loadedACL(userID) - containers = ACLManager.findAllContainers(currentACL, userID) + currentACL = ACLManager.loadedACL(userID) + containers = ACLManager.findAllContainers(currentACL, userID) - allContainers = client.containers.list() - containersList = [] - showUnlistedContainer = True + allContainers = client.containers.list() + containersList = [] + showUnlistedContainer = True - # TODO: Add condition to show unlisted Containers only if user has admin level access + # TODO: Add condition to show unlisted Containers only if user has admin level access - unlistedContainers = [] - for container in allContainers: - if container.name not in containers: - unlistedContainers.append(container) + unlistedContainers = [] + for container in allContainers: + if container.name not in containers: + unlistedContainers.append(container) - if not unlistedContainers: - showUnlistedContainer = False + if not unlistedContainers: + showUnlistedContainer = False - adminNames = ACLManager.loadAllUsers(userID) + adminNames = ACLManager.loadAllUsers(userID) - pages = float(len(containers)) / float(10) - pagination = [] + pages = float(len(containers)) / float(10) + pagination = [] - if pages <= 1.0: - pages = 1 - pagination.append('
  • ') - else: - pages = ceil(pages) - finalPages = int(pages) + 1 + if pages <= 1.0: + pages = 1 + pagination.append('
  • ') + else: + pages = ceil(pages) + finalPages = int(pages) + 1 - for i in range(1, finalPages): - pagination.append('
  • ' + str(i) + '
  • ') + for i in range(1, finalPages): + pagination.append('
  • ' + str(i) + '
  • ') - return render(request, 'dockerManager/listContainers.html', {"pagination": pagination, - "unlistedContainers": unlistedContainers, - "adminNames": adminNames, - "showUnlistedContainer": showUnlistedContainer}) - except BaseException as msg: - return HttpResponse(str(msg)) + template = 'dockerManager/listContainers.html' + proc = httpProc(request, template, {"pagination": pagination, + "unlistedContainers": unlistedContainers, + "adminNames": adminNames, + "showUnlistedContainer": showUnlistedContainer}, 'admin') + return proc.render() def getContainerLogs(self, userID=None, data=None): try: @@ -774,7 +771,9 @@ class ContainerManager(multi.Thread): except: continue - return render(request, 'dockerManager/images.html', {"images": images, "test": ''}) + template = 'dockerManager/images.html' + proc = httpProc(request, template, {"images": images, "test": ''}, 'admin') + return proc.render() except BaseException as msg: return HttpResponse(str(msg)) @@ -808,7 +807,9 @@ class ContainerManager(multi.Thread): except: continue - return render(request, 'dockerManager/manageImages.html', {"images": images}) + template = 'dockerManager/manageImages.html' + proc = httpProc(request, template, {"images": images}, 'admin') + return proc.render() except BaseException as msg: return HttpResponse(str(msg)) diff --git a/dockerManager/views.py b/dockerManager/views.py index 976b27206..ed871a900 100755 --- a/dockerManager/views.py +++ b/dockerManager/views.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- -from django.shortcuts import render, redirect, HttpResponse +from django.shortcuts import redirect, HttpResponse from loginSystem.models import Administrator from loginSystem.views import loadLoginPage +from plogical.httpProc import httpProc from .container import ContainerManager from .decorators import preDockerRun from plogical.acl import ACLManager @@ -25,15 +26,12 @@ def dockerPermission(request, userID, context): @preDockerRun def loadDockerHome(request): - try: - userID = request.session['userID'] - perm = dockerPermission(request, userID, 'loadDockerHome') - if perm: return perm - - admin = Administrator.objects.get(pk=userID) - return render(request,'dockerManager/index.html',{"type":admin.type}) - except KeyError: - return redirect(loadLoginPage) + userID = request.session['userID'] + admin = Administrator.objects.get(pk=userID) + template = 'dockerManager/index.html' + + proc = httpProc(request, template, {"type": admin.type}, 'admin') + return proc.render() def installDocker(request): try: diff --git a/emailMarketing/emailMarketingManager.py b/emailMarketing/emailMarketingManager.py index ef2061be9..cfb19b343 100755 --- a/emailMarketing/emailMarketingManager.py +++ b/emailMarketing/emailMarketingManager.py @@ -4,6 +4,8 @@ from loginSystem.views import loadLoginPage import json from random import randint import time + +from plogical.httpProc import httpProc from .models import EmailMarketing, EmailLists, EmailsInList, EmailJobs from websiteFunctions.models import Websites from .emailMarketing import emailMarketing as EM @@ -21,18 +23,8 @@ class EmailMarketingManager: self.domain = domain def emailMarketing(self): - try: - userID = self.request.session['userID'] - currentACL = ACLManager.loadedACL(userID) - - if currentACL['admin'] == 1: - pass - else: - return ACLManager.loadError() - - return render(self.request, 'emailMarketing/emailMarketing.html') - except KeyError as msg: - return redirect(loadLoginPage) + proc = httpProc(self.request, 'emailMarketing/emailMarketing.html', None, 'admin') + return proc.render() def fetchUsers(self): try: @@ -123,7 +115,8 @@ class EmailMarketingManager: if emACL.checkIfEMEnabled(admin.userName) == 0: return ACLManager.loadError() - return render(self.request, 'emailMarketing/createEmailList.html', {'domain': self.domain}) + proc = httpProc(self.request, 'emailMarketing/createEmailList.html', {'domain': self.domain}, 'admin') + return proc.render() except KeyError as msg: return redirect(loadLoginPage) @@ -178,7 +171,9 @@ class EmailMarketingManager: listNames = emACL.getEmailsLists(self.domain) - return render(self.request, 'emailMarketing/manageLists.html', {'listNames': listNames, 'domain': self.domain}) + proc = httpProc(self.request, 'emailMarketing/manageLists.html', {'listNames': listNames, 'domain': self.domain}, 'admin') + return proc.render() + except KeyError as msg: return redirect(loadLoginPage) @@ -196,7 +191,10 @@ class EmailMarketingManager: if emACL.checkIfEMEnabled(admin.userName) == 0: return ACLManager.loadError() - return render(self.request, 'emailMarketing/configureVerify.html', {'domain': self.domain}) + proc = httpProc(self.request, 'emailMarketing/configureVerify.html', + {'domain': self.domain}, 'admin') + return proc.render() + except KeyError as msg: return redirect(loadLoginPage) @@ -490,7 +488,10 @@ class EmailMarketingManager: for items in emailLists: listNames.append(items.listName) - return render(self.request, 'emailMarketing/manageSMTPHosts.html', {'listNames': listNames, 'domain': self.domain}) + + proc = httpProc(self.request, 'emailMarketing/manageSMTPHosts.html', + {'listNames': listNames, 'domain': self.domain}, 'admin') + return proc.render() except KeyError as msg: return redirect(loadLoginPage) @@ -657,7 +658,9 @@ class EmailMarketingManager: if emACL.checkIfEMEnabled(admin.userName) == 0: return ACLManager.loadErrorJson() - return render(self.request, 'emailMarketing/composeMessages.html') + proc = httpProc(self.request, 'emailMarketing/composeMessages.html', + None, 'admin') + return proc.render() except KeyError as msg: return redirect(loadLoginPage) @@ -709,7 +712,11 @@ class EmailMarketingManager: Data['templateNames'] = templateNames Data['hostNames'] = hostNames Data['listNames'] = listNames - return render(self.request, 'emailMarketing/sendEmails.html', Data) + + proc = httpProc(self.request, 'emailMarketing/sendEmails.html', + Data, 'admin') + return proc.render() + except KeyError as msg: return redirect(loadLoginPage) diff --git a/emailPremium/views.py b/emailPremium/views.py index 62f224844..bbe8b1ccc 100755 --- a/emailPremium/views.py +++ b/emailPremium/views.py @@ -6,6 +6,7 @@ from django.http import HttpResponse from mailServer.models import Domains, EUsers # Create your views here. from loginSystem.models import Administrator +from plogical.httpProc import httpProc from websiteFunctions.models import Websites from loginSystem.views import loadLoginPage import plogical.CyberCPLogFileWriter as logging @@ -34,7 +35,9 @@ def emailPolicyServer(request): else: return ACLManager.loadError() - return render(request, 'emailPremium/policyServer.html') + proc = httpProc(request, 'emailPremium/policyServer.html', + None, 'admin') + return proc.render() except KeyError: return redirect(loadLoginPage) @@ -171,8 +174,9 @@ def listDomains(request): for i in range(1, finalPages): pagination.append('
  • ' + str(i) + '
  • ') - - return render(request,'emailPremium/listDomains.html',{"pagination":pagination, "installCheck": installCheck}) + proc = httpProc(request, 'emailPremium/listDomains.html', + {"pagination":pagination, "installCheck": installCheck}, 'admin') + return proc.render() except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) @@ -350,9 +354,12 @@ def emailLimits(request,domain): Data['pagination'] = pagination - return render(request, 'emailPremium/emailLimits.html', Data) + proc = httpProc(request, 'emailPremium/emailLimits.html', Data, 'admin') + return proc.render() + else: - return render(request, 'emailPremium/emailLimits.html', {"error":1,"domain": "This domain does not exists"}) + proc = httpProc(request, 'emailPremium/emailLimits.html', {"error":1,"domain": "This domain does not exists"}, 'admin') + return proc.render() except KeyError: return redirect(loadLoginPage) @@ -525,7 +532,9 @@ def emailPage(request, emailAddress): Data['pagination'] = pagination - return render(request, 'emailPremium/emailPage.html', Data) + proc = httpProc(request, 'emailPremium/emailPage.html', Data, 'admin') + return proc.render() + except KeyError: return redirect(loadLoginPage) @@ -785,8 +794,8 @@ def spamAssassinHome(request): if mailUtilities.checkIfSpamAssassinInstalled() == 1: checkIfSpamAssassinInstalled = 1 - return render(request, 'emailPremium/SpamAssassin.html',{'checkIfSpamAssassinInstalled': checkIfSpamAssassinInstalled}) - + proc = httpProc(request, 'emailPremium/SpamAssassin.html', {'checkIfSpamAssassinInstalled': checkIfSpamAssassinInstalled}, 'admin') + return proc.render() except KeyError: return redirect(loadLoginPage) @@ -1037,8 +1046,9 @@ def mailQueue(request): else: return ACLManager.loadError() - return render(request, 'emailPremium/mailQueue.html') - + proc = httpProc(request, 'emailPremium/mailQueue.html', + None, 'admin') + return proc.render() except KeyError: return redirect(loadLoginPage) @@ -1195,7 +1205,9 @@ def MailScanner(request): if mailUtilities.checkIfMailScannerInstalled() == 1: checkIfMailScannerInstalled = 1 - return render(request, 'emailPremium/MailScanner.html',{'checkIfMailScannerInstalled': checkIfMailScannerInstalled, 'ipAddress': ipAddress}) + proc = httpProc(request, 'emailPremium/MailScanner.html', + {'checkIfMailScannerInstalled': checkIfMailScannerInstalled, 'ipAddress': ipAddress}, 'admin') + return proc.render() except KeyError: return redirect(loadLoginPage) diff --git a/firewall/firewallManager.py b/firewall/firewallManager.py index 821b6a4fb..b269e6d1d 100755 --- a/firewall/firewallManager.py +++ b/firewall/firewallManager.py @@ -3,6 +3,9 @@ import os import os.path import sys import django + +from plogical.httpProc import httpProc + sys.path.append('/usr/local/CyberCP') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings") django.setup() @@ -31,30 +34,14 @@ class FirewallManager: self.request = request def securityHome(self, request = None, userID = None): - try: - currentACL = ACLManager.loadedACL(userID) - - if currentACL['admin'] == 1: - pass - else: - return ACLManager.loadError() - - return render(request, 'firewall/index.html') - except BaseException as msg: - return HttpResponse(str(msg)) + proc = httpProc(request, 'firewall/index.html', + None, 'admin') + return proc.render() def firewallHome(self, request = None, userID = None): - try: - currentACL = ACLManager.loadedACL(userID) - - if currentACL['admin'] == 1: - pass - else: - return ACLManager.loadError() - - return render(request, 'firewall/firewall.html') - except BaseException as msg: - return HttpResponse(str(msg)) + proc = httpProc(request, 'firewall/firewall.html', + None, 'admin') + return proc.render() def getCurrentRules(self, userID = None): try: @@ -265,17 +252,9 @@ class FirewallManager: return HttpResponse(final_json) def secureSSH(self, request = None, userID = None): - try: - currentACL = ACLManager.loadedACL(userID) - - if currentACL['admin'] == 1: - pass - else: - return ACLManager.loadError() - - return render(request, 'firewall/secureSSH.html') - except BaseException as msg: - return HttpResponse(str(msg)) + proc = httpProc(request, 'firewall/secureSSH.html', + None, 'admin') + return proc.render() def getSSHConfigs(self, userID = None, data = None): try: @@ -512,7 +491,10 @@ class FirewallManager: OLS = 0 modSecInstalled = 1 - return render(request, 'firewall/modSecurity.html', {'modSecInstalled': modSecInstalled, 'OLS': OLS}) + proc = httpProc(request, 'firewall/modSecurity.html', + {'modSecInstalled': modSecInstalled, 'OLS': OLS}, 'admin') + return proc.render() + except BaseException as msg: return HttpResponse(str(msg)) @@ -894,8 +876,9 @@ class FirewallManager: else: modSecInstalled = 1 - return render(request, 'firewall/modSecurityRules.html', {'modSecInstalled': modSecInstalled}) - + proc = httpProc(request, 'firewall/modSecurityRules.html', + {'modSecInstalled': modSecInstalled}, 'admin') + return proc.render() except BaseException as msg: return HttpResponse(str(msg)) @@ -1019,7 +1002,9 @@ class FirewallManager: else: modSecInstalled = 1 - return render(request, 'firewall/modSecurityRulesPacks.html', {'modSecInstalled': modSecInstalled}) + proc = httpProc(request, 'firewall/modSecurityRulesPacks.html', + {'modSecInstalled': modSecInstalled}, 'admin') + return proc.render() except BaseException as msg: return HttpResponse(msg) @@ -1316,7 +1301,11 @@ class FirewallManager: csfInstalled = 0 except subprocess.CalledProcessError: csfInstalled = 0 - return render(self.request,'firewall/csf.html', {'csfInstalled' : csfInstalled}) + + proc = httpProc(self.request, 'firewall/csf.html', + {'csfInstalled' : csfInstalled}, 'admin') + return proc.render() + except BaseException as msg: return HttpResponse(str(msg)) @@ -1575,11 +1564,17 @@ class FirewallManager: data['imunify'] = 0 if data['CL'] == 0: - return render(self.request, 'firewall/notAvailable.html', data) + proc = httpProc(self.request, 'firewall/notAvailable.html', + data, 'admin') + return proc.render() elif data['imunify'] == 0: - return render(self.request, 'firewall/notAvailable.html', data) + proc = httpProc(self.request, 'firewall/notAvailable.html', + data, 'admin') + return proc.render() else: - return render(self.request, 'firewall/imunify.html', data) + proc = httpProc(self.request, 'firewall/imunify.html', + data, 'admin') + return proc.render() except BaseException as msg: @@ -1639,9 +1634,14 @@ class FirewallManager: data['imunify'] = 0 if data['imunify'] == 0: - return render(self.request, 'firewall/notAvailableAV.html', data) + proc = httpProc(self.request, 'firewall/notAvailableAV.html', + data, 'admin') + return proc.render() else: - return render(self.request, 'firewall/imunifyAV.html', data) + proc = httpProc(self.request, 'firewall/imunifyAV.html', + data, 'admin') + return proc.render() + except BaseException as msg: diff --git a/ftp/ftpManager.py b/ftp/ftpManager.py index 3812d57a9..86e583906 100755 --- a/ftp/ftpManager.py +++ b/ftp/ftpManager.py @@ -2,6 +2,9 @@ import os.path import sys import django + +from plogical.httpProc import httpProc + sys.path.append('/usr/local/CyberCP') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings") django.setup() @@ -33,8 +36,9 @@ class FTPManager: def loadFTPHome(self): try: - val = self.request.session['userID'] - return render(self.request, 'ftp/index.html') + proc = httpProc(self.request, 'ftp/index.html', + None, 'createFTPAccount') + return proc.render() except KeyError: return redirect(loadLoginPage) @@ -49,12 +53,15 @@ class FTPManager: admin = Administrator.objects.get(pk=userID) if not os.path.exists('/home/cyberpanel/pureftpd'): - return render(self.request, "ftp/createFTPAccount.html", {"status": 0}) + proc = httpProc(self.request, 'ftp/createFTPAccount.html', + { "status": 0}, 'createFTPAccount') + return proc.render() websitesName = ACLManager.findAllSites(currentACL, userID) - return render(self.request, 'ftp/createFTPAccount.html', - {'websiteList': websitesName, 'admin': admin.userName, "status": 1}) + proc = httpProc(self.request, 'ftp/createFTPAccount.html', + {'websiteList': websitesName, 'admin': admin.userName, "status": 1}, 'createFTPAccount') + return proc.render() except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return HttpResponse(str(msg)) @@ -123,11 +130,16 @@ class FTPManager: return ACLManager.loadError() if not os.path.exists('/home/cyberpanel/pureftpd'): - return render(self.request, "ftp/deleteFTPAccount.html", {"status": 0}) + proc = httpProc(self.request, 'ftp/deleteFTPAccount.html', + { "status": 0}, 'deleteFTPAccount') + return proc.render() websitesName = ACLManager.findAllSites(currentACL, userID) - return render(self.request, 'ftp/deleteFTPAccount.html', {'websiteList': websitesName, "status": 1}) + proc = httpProc(self.request, 'ftp/deleteFTPAccount.html', + {'websiteList': websitesName, "status": 1}, 'deleteFTPAccount') + return proc.render() + except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return HttpResponse(str(msg)) @@ -212,11 +224,14 @@ class FTPManager: return ACLManager.loadError() if not os.path.exists('/home/cyberpanel/pureftpd'): - return render(self.request, "ftp/listFTPAccounts.html", {"status": 0}) + proc = httpProc(self.request, 'ftp/listFTPAccounts.html', + {"status": 0}, 'listFTPAccounts') + return proc.render() websitesName = ACLManager.findAllSites(currentACL, userID) - - return render(self.request, 'ftp/listFTPAccounts.html', {'websiteList': websitesName, "status": 1}) + proc = httpProc(self.request, 'ftp/listFTPAccounts.html', + {'websiteList': websitesName, "status": 1}, 'listFTPAccounts') + return proc.render() except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(str(msg)) return HttpResponse(str(msg))