예제 #1
0
    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)
예제 #2
0
    def restoreSite(self, request = None, userID = None, data = None):
        try:
            currentACL = ACLManager.loadedACL(userID)

            if ACLManager.currentContextPermission(currentACL, 'restoreBackup') == 0:
                return ACLManager.loadError()

            path = os.path.join("/home", "backup")

            if not os.path.exists(path):
                return render(request, 'backup/restore.html')
            else:
                all_files = []
                ext = ".tar.gz"

                command = 'sudo chown -R  cyberpanel:cyberpanel ' + path
                ACLManager.executeCall(command)

                files = os.listdir(path)
                for filename in files:
                    if filename.endswith(ext):
                        all_files.append(filename)

                return render(request, 'backup/restore.html', {'backups': all_files})

        except BaseException, msg:
            return HttpResponse(str(msg))
예제 #3
0
def versionManagment(request):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            pass
        elif currentACL['versionManagement'] == 1:
            pass
        else:
            return ACLManager.loadError()

        vers = version.objects.get(pk=1)

        getVersion = requests.get('https://cyberpanel.net/version.txt')

        latest = getVersion.json()

        latestVersion = latest['version']
        latestBuild = latest['build']

        return render(request, 'baseTemplate/versionManagment.html', {'build': vers.build,
                                                                      'currentVersion': vers.currentVersion,
                                                                      'latestVersion': latestVersion,
                                                                      'latestBuild': latestBuild})

    except KeyError:
        return redirect(loadLoginPage)
예제 #4
0
def changeUserACL(request):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            aclNames = ACLManager.unFileteredACLs()
            userNames = ACLManager.findAllUsers()
            return render(request, 'userManagment/changeUserACL.html', {
                'aclNames': aclNames,
                'usersList': userNames
            })
        elif currentACL['changeUserACL'] == 1:
            aclNames = ACLManager.unFileteredACLs()
            userNames = ACLManager.findAllUsers()

            return render(request, 'userManagment/changeUserACL.html', {
                'aclNames': aclNames,
                'usersList': userNames
            })
        else:
            return ACLManager.loadError()

    except KeyError:
        return redirect(loadLoginPage)
예제 #5
0
    def getTags(self, userID=None, data=None):
        try:

            admin = Administrator.objects.get(pk=userID)
            if admin.acl.adminStatus != 1:
                return ACLManager.loadError()

            image = data['image']
            page = data['page']

            if ":" in image:
                image2 = image.split(":")[0] + "/" + image.split(":")[1]
            else:
                image2 = "library/" + image

            print image
            registryData = requests.get('https://registry.hub.docker.com/v2/repositories/' + image2 + '/tags',
                                        {'page': page}).json()

            tagList = []
            for tag in registryData['results']:
                tagList.append(tag['name'])

            data_ret = {'getTagsStatus': 1, 'list': tagList, 'next': registryData['next'], 'error_message': None}
            json_data = json.dumps(data_ret)
            return HttpResponse(json_data)
        except BaseException, msg:
            data_ret = {'getTagsStatus': 0, 'error_message': str(msg)}
            json_data = json.dumps(data_ret)
            return HttpResponse(json_data)
예제 #6
0
def configservercsfiframe(request):
    userID = request.session['userID']
    currentACL = ACLManager.loadedACL(userID)

    if currentACL['admin'] == 1:
        pass
    else:
        return ACLManager.loadError()

    if request.method == 'GET':
        qs = request.GET.urlencode()
    elif request.method == 'POST':
        qs = request.POST.urlencode()

    try:
        tmp = tempfile.NamedTemporaryFile(mode="w", delete=False)
        tmp.write(qs)
        tmp.close()
        command = "/usr/local/csf/bin/cyberpanel.pl '" + tmp.name + "'"

        try:
            output = ProcessUtilities.outputExecutioner(command)
        except:
            output = "Output Error from csf UI script"

        os.unlink(tmp.name)
    except:
        output = "Unable to create csf UI temp file"

    return HttpResponse(output)
예제 #7
0
    def submitZoneDeletion(self, userID=None, data=None):
        try:
            zoneDomain = data['zoneDomain']

            currentACL = ACLManager.loadedACL(userID)
            admin = Administrator.objects.get(pk=userID)
            if ACLManager.currentContextPermission(currentACL,
                                                   'deleteZone') == 0:
                return ACLManager.loadErrorJson('delete_status', 0)

            if ACLManager.checkOwnershipZone(zoneDomain, admin,
                                             currentACL) == 1:
                pass
            else:
                return ACLManager.loadError()

            delZone = Domains.objects.get(name=zoneDomain)
            admin = Administrator.objects.get(pk=userID)
            if currentACL['admin'] == 1:
                if delZone.admin != admin:
                    return ACLManager.loadErrorJson()

            delZone.delete()

            final_dic = {'delete_status': 1, 'error_message': "None"}
            final_json = json.dumps(final_dic)
            return HttpResponse(final_json)

        except BaseException, msg:
            final_dic = {'delete_status': 0, 'error_message': str(msg)}
            final_json = json.dumps(final_dic)
            return HttpResponse(final_json)
예제 #8
0
    def renderC(self):

        userID = self.request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            pass
        else:
            return ACLManager.loadError()

        data = {}
        data['OLS'] = 0
        data['notInstalled'] = 0

        if ProcessUtilities.decideServer() == ProcessUtilities.OLS:
            data['OLS'] = 1
            data['notInstalled'] = 0
            return render(self.request, 'containerization/notAvailable.html', data)
        elif not ProcessUtilities.containerCheck():
            data['OLS'] = 0
            data['notInstalled'] = 1
            return render(self.request, 'containerization/notAvailable.html', data)
        else:
            if self.data == None:
                self.data = {}
            self.data['OLS'] = 0
            self.data['notInstalled'] = 0
            return render(self.request, self.templateName, self.data)
예제 #9
0
파일: views.py 프로젝트: qtwrk/cyberpanel
def emailPage(request, emailAddress):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            pass
        else:
            return ACLManager.loadError()

        Data = {}
        Data['emailAddress'] = emailAddress

        email = EUsers.objects.get(email=emailAddress)
        logEntries = email.emaillogs_set.all().count()

        pages = float(logEntries) / float(10)
        pagination = []

        if pages <= 1.0:
            pages = 1
            pagination.append('<li><a href="\#"></a></li>')
        else:
            pages = ceil(pages)
            finalPages = int(pages) + 1

            for i in range(1, finalPages):
                pagination.append('<li><a href="\#">' + str(i) + '</a></li>')

        Data['pagination'] = pagination

        return render(request, 'emailPremium/emailPage.html', Data)
    except KeyError:
        return redirect(loadLoginPage)
예제 #10
0
    def renderC(self):

        userID = self.request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            pass
        else:
            return ACLManager.loadError()

        data = {}
        data['CL'] = 0
        data['CAGEFS'] = 0
        CLPath = '/etc/sysconfig/cloudlinux'
        CageFSPath = '/usr/sbin/cagefsctl'

        if os.path.exists(CLPath):
            data['CL'] = 1

        if os.path.exists(CageFSPath):
            data['CAGEFS'] = 1

        if data['CL'] == 0:
            return render(self.request, 'CLManager/notAvailable.html', data)
        elif data['CAGEFS'] == 0:
            return render(self.request, 'CLManager/notAvailable.html', data)
        else:
            return render(self.request, self.templateName, self.data)
예제 #11
0
    def removeImage(self, userID=None, data=None):
        try:
            admin = Administrator.objects.get(pk=userID)

            if admin.acl.adminStatus != 1:
                return ACLManager.loadError()

            client = docker.from_env()
            dockerAPI = docker.APIClient()

            name = data['name']
            try:
                if name == 0:
                    action = client.images.prune()
                else:
                    action = client.images.remove(name)
                print action
            except docker.errors.APIError as err:
                data_ret = {'removeImageStatus': 0, 'error_message': str(err)}
                json_data = json.dumps(data_ret)
                return HttpResponse(json_data)
            except:
                data_ret = {'removeImageStatus': 0, 'error_message': 'Unknown'}
                json_data = json.dumps(data_ret)
                return HttpResponse(json_data)

            data_ret = {'removeImageStatus': 1, 'error_message': 'None'}
            json_data = json.dumps(data_ret)
            return HttpResponse(json_data)

        except BaseException, msg:
            data_ret = {'removeImageStatus': 0, 'error_message': str(msg)}
            json_data = json.dumps(data_ret)
            return HttpResponse(json_data)
예제 #12
0
def resellerCenter(request):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            userNames = ACLManager.loadDeletionUsers(userID, currentACL)
            resellerPrivUsers = ACLManager.userWithResellerPriv(userID)
            return render(
                request, 'userManagment/resellerCenter.html', {
                    'userToBeModified': userNames,
                    'resellerPrivUsers': resellerPrivUsers
                })
        elif currentACL['resellerCenter'] == 1:
            userNames = ACLManager.loadDeletionUsers(userID, currentACL)
            resellerPrivUsers = ACLManager.userWithResellerPriv(userID)
            return render(
                request, 'userManagment/resellerCenter.html', {
                    'userToBeModified': userNames,
                    'resellerPrivUsers': resellerPrivUsers
                })
        else:
            return ACLManager.loadError()

    except KeyError:
        return redirect(loadLoginPage)
예제 #13
0
def createFTPAccount(sender, **kwargs):
    from loginSystem.models import Administrator
    from plogical.acl import ACLManager
    try:
        request = kwargs['request']
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if ACLManager.currentContextPermission(currentACL,
                                               'createFTPAccount') == 0:
            return ACLManager.loadError()

        admin = Administrator.objects.get(pk=userID)

        if not os.path.exists('/home/cyberpanel/pureftpd'):
            return render(request, "ftp/createFTPAccount.html", {"status": 0})

        websitesName = ACLManager.findAllSites(currentACL, userID)

        return render(request, 'beautifulNames/createFTPAccount.html', {
            'websiteList': websitesName,
            'admin': admin.userName,
            "status": 1
        })
    except BaseException, msg:
        return HttpResponse(str(msg))
예제 #14
0
파일: views.py 프로젝트: qtwrk/cyberpanel
def restoreRemoteBackups(request):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if ACLManager.currentContextPermission(currentACL,
                                               'createBackup') == 0:
            return ACLManager.loadError()

        websitesName = ACLManager.findAllSites(currentACL, userID)

        destinations = []

        path = '/home/cyberpanel/sftp'

        if os.path.exists(path):
            for items in os.listdir(path):
                destinations.append('sftp:%s' % (items))

        path = '/home/cyberpanel/aws'
        if os.path.exists(path):
            for items in os.listdir(path):
                destinations.append('s3:s3.amazonaws.com/%s' % (items))

        return defRenderer(request, 'IncBackups/restoreRemoteBackups.html', {
            'websiteList': websitesName,
            'destinations': destinations
        })
    except BaseException, msg:
        logging.writeToFile(str(msg))
        return redirect(loadLoginPage)
예제 #15
0
파일: views.py 프로젝트: qtwrk/cyberpanel
def services(request):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            pass
        else:
            return ACLManager.loadError()
        data = {}

        if ProcessUtilities.decideServer() == ProcessUtilities.OLS:
            data['serverName'] = 'OpenLiteSpeed'
        else:
            data['serverName'] = 'LiteSpeed Ent'

        dockerInstallPath = '/usr/bin/docker'
        if not os.path.exists(dockerInstallPath):
            data['isDocker'] = False
        else:
            data['isDocker'] = True

        return render(request, 'serverStatus/services.html', data)
    except KeyError:
        return redirect(loadLoginPage)
예제 #16
0
    def manageImages(self, request=None, userID=None, data=None):
        try:
            currentACL = ACLManager.loadedACL(userID)

            if currentACL['admin'] == 1:
                pass
            else:
                return ACLManager.loadError()

            client = docker.from_env()
            dockerAPI = docker.APIClient()

            imageList = client.images.list()

            images = {}
            names = []

            for image in imageList:
                try:
                    name = image.attrs['RepoTags'][0].split(":")[0]
                    if name in names:
                        images[name]['tags'].extend(image.tags)
                    else:
                        names.append(name)
                        images[name] = {"name": name,
                                        "tags": image.tags}
                except:
                    continue

            return render(request, 'dockerManager/manageImages.html', {"images": images})

        except BaseException, msg:
            return HttpResponse(str(msg))
예제 #17
0
    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)
예제 #18
0
def listDomains(request):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            pass
        else:
            return ACLManager.loadError()

        try:
            websites = DomainLimits.objects.all()

            ## Check if Policy Server is installed.

            command = 'sudo cat /etc/postfix/main.cf'
            output = subprocess.check_output(shlex.split(command)).split('\n')

            installCheck = 0

            for items in output:
                if items.find(
                        'check_policy_service unix:/var/log/policyServerSocket'
                ) > -1:
                    installCheck = 1
                    break

            if installCheck == 0:
                return render(request, 'emailPremium/listDomains.html',
                              {"installCheck": installCheck})

            ###

            pages = float(len(websites)) / float(10)
            pagination = []

            if pages <= 1.0:
                pages = 1
                pagination.append('<li><a href="\#"></a></li>')
            else:
                pages = ceil(pages)
                finalPages = int(pages) + 1

                for i in range(1, finalPages):
                    pagination.append('<li><a href="\#">' + str(i) +
                                      '</a></li>')

            return render(request, 'emailPremium/listDomains.html', {
                "pagination": pagination,
                "installCheck": installCheck
            })

        except BaseException, msg:
            logging.CyberCPLogFileWriter.writeToFile(str(msg))
            return HttpResponse("See CyberCP main log file.")

    except KeyError:
        return redirect(loadLoginPage)
예제 #19
0
def configservercsf(request):
    userID = request.session['userID']
    currentACL = ACLManager.loadedACL(userID)

    if currentACL['admin'] == 1:
        pass
    else:
        return ACLManager.loadError()

    return render(request, 'configservercsf/index.html')
예제 #20
0
def dockerPermission(request, userID, context):
    currentACL = ACLManager.loadedACL(userID)

    if currentACL['admin'] != 1:
        if request.method == "POST":
            return ACLManager.loadErrorJson()
        else:
            return ACLManager.loadError()
    else:
        return 0
예제 #21
0
    def backupSite(self, request = None, userID = None, data = None):
        try:
            currentACL = ACLManager.loadedACL(userID)

            if ACLManager.currentContextPermission(currentACL, 'createBackup') == 0:
                return ACLManager.loadError()

            websitesName = ACLManager.findAllSites(currentACL, userID)
            return render(request, 'backup/backup.html', {'websiteList': websitesName})
        except BaseException, msg:
            return HttpResponse(str(msg))
예제 #22
0
    def backupDestinations(self, request = None, userID = None, data = None):
        try:
            currentACL = ACLManager.loadedACL(userID)

            if ACLManager.currentContextPermission(currentACL, 'addDeleteDestinations') == 0:
                return ACLManager.loadError()

            return render(request, 'backup/backupDestinations.html', {})

        except BaseException, msg:
            return HttpResponse(str(msg))
예제 #23
0
def createNewACL(request):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            return render(request, 'userManagment/createACL.html')
        else:
            return ACLManager.loadError()
    except KeyError:
        return redirect(loadLoginPage)
예제 #24
0
    def createContainer(self, request=None, userID=None, data=None):
        try:
            admin = Administrator.objects.get(pk=userID)
            if admin.acl.adminStatus != 1:
                return ACLManager.loadError()

            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:
                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})

            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, msg:
            return HttpResponse(str(msg))
예제 #25
0
    def remoteBackups(self, request, userID = None, data = None):
        try:
            currentACL = ACLManager.loadedACL(userID)

            if ACLManager.currentContextPermission(currentACL, 'remoteBackups') == 0:
                return ACLManager.loadError()

            return render(request, 'backup/remoteBackups.html')

        except BaseException, msg:
            return HttpResponse(str(msg))
예제 #26
0
def emailLimits(request, domain):
    try:
        userID = request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            pass
        else:
            return ACLManager.loadError()

        if Websites.objects.filter(domain=domain).exists():
            website = Websites.objects.get(domain=domain)
            domainEmail = Domains.objects.get(domainOwner=website)
            domainLimits = DomainLimits.objects.get(domain=domainEmail)

            Data = {}
            Data['domain'] = domain
            Data['monthlyLimit'] = domainLimits.monthlyLimit
            Data['monthlyUsed'] = domainLimits.monthlyUsed
            Data['emailAccounts'] = domainEmail.eusers_set.count()

            if domainLimits.limitStatus == 1:
                Data['limitsOn'] = 1
                Data['limitsOff'] = 0
            else:
                Data['limitsOn'] = 0
                Data['limitsOff'] = 1

            ## Pagination for emails

            pages = float(Data['emailAccounts']) / float(10)
            pagination = []

            if pages <= 1.0:
                pages = 1
                pagination.append('<li><a href="\#"></a></li>')
            else:
                pages = ceil(pages)
                finalPages = int(pages) + 1

                for i in range(1, finalPages):
                    pagination.append('<li><a href="\#">' + str(i) +
                                      '</a></li>')

            Data['pagination'] = pagination

            return render(request, 'emailPremium/emailLimits.html', Data)
        else:
            return render(request, 'emailPremium/emailLimits.html', {
                "error": 1,
                "domain": "This domain does not exists"
            })
    except KeyError:
        return redirect(loadLoginPage)
예제 #27
0
    def renderDM(self):

        userID = self.request.session['userID']
        currentACL = ACLManager.loadedACL(userID)

        if currentACL['admin'] == 1:
            pass
        else:
            return ACLManager.loadError()

        return render(self.request, self.templateName, self.data)
예제 #28
0
    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)
예제 #29
0
    def liteSpeedTuning(self, request, userID):
        try:
            userID = request.session['userID']
            currentACL = ACLManager.loadedACL(userID)

            if currentACL['admin'] == 1:
                pass
            else:
                return ACLManager.loadError()
            return render(request, 'tuning/liteSpeedTuning.html', {})
        except KeyError:
            return redirect(loadLoginPage)
예제 #30
0
    def loadContainerHome(self, request=None, userID=None, data=None):
        name = self.name

        if ACLManager.checkContainerOwnership(name, userID) != 1:
            return ACLManager.loadError()

        client = docker.from_env()
        dockerAPI = docker.APIClient()
        try:
            container = client.containers.get(name)
        except docker.errors.NotFound as err:
            return HttpResponse("Container not found")

        data = {}
        con = Containers.objects.get(name=name)
        data['name'] = name
        data['image'] = con.image + ":" + con.tag
        data['ports'] = json.loads(con.ports)
        data['cid'] = con.cid
        data['envList'] = json.loads(con.env)
        data['volList'] = json.loads(con.volumes)

        stats = container.stats(decode=False, stream=False)
        logs = container.logs(stream=True)

        data['status'] = container.status
        data['memoryLimit'] = con.memory
        if con.startOnReboot == 1:
            data['startOnReboot'] = 'true'
            data['restartPolicy'] = "Yes"
        else:
            data['startOnReboot'] = 'false'
            data['restartPolicy'] = "No"

        if 'usage' in stats['memory_stats']:
            # Calculate Usage
            # Source: https://github.com/docker/docker/blob/28a7577a029780e4533faf3d057ec9f6c7a10948/api/client/stats.go#L309
            data['memoryUsage'] = (stats['memory_stats']['usage'] / stats['memory_stats']['limit']) * 100

            cpu_count = len(stats["cpu_stats"]["cpu_usage"]["percpu_usage"])
            data['cpuUsage'] = 0.0
            cpu_delta = float(stats["cpu_stats"]["cpu_usage"]["total_usage"]) - \
                        float(stats["precpu_stats"]["cpu_usage"]["total_usage"])
            system_delta = float(stats["cpu_stats"]["system_cpu_usage"]) - \
                           float(stats["precpu_stats"]["system_cpu_usage"])
            if system_delta > 0.0:
                data['cpuUsage'] = round(cpu_delta / system_delta * 100.0 * cpu_count, 3)
        else:
            data['memoryUsage'] = 0
            data['cpuUsage'] = 0

        return render(request, 'dockerManager/viewContainer.html', data)