HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/plogical/httpProc.py
# -*- coding: utf-8 -*-

from django.shortcuts import render, HttpResponse
import json
from plogical.processUtilities import ProcessUtilities


class httpProc:
    def __init__(self, request, templateName, data = None, function = None):
        self.request = request
        self.templateName = templateName
        self.data = data
        self.function = function


    def render(self):
        try:
            userID = self.request.session['userID']
            try:
                from loginSystem.models import Administrator
                from plogical.acl import ACLManager

                currentACL = ACLManager.loadedACL(userID)
                admin = Administrator.objects.get(pk=userID)

                ### Permissions Check

                if self.function != None:
                    if not currentACL['admin']:
                        if not currentACL[self.function]:
                            templateName = 'baseTemplate/error.html'
                            return render(self.request, templateName, {'error_message': 'You are not authorized to access %s' % (self.function)})

                ###

                if self.data == None:
                    self.data = {}

                from IncBackups.models import OneClickBackups
                if OneClickBackups.objects.filter(owner=admin).count() == 0:
                    self.data['backupDisplay'] = 1
                else:
                    self.data['backupDisplay'] = 0

                ### Onboarding checks

                if currentACL['admin']:
                    try:
                        admin = Administrator.objects.get(userName='admin')
                        config = json.loads(admin.config)
                        self.data['onboarding'] = config['onboarding']
                    except:
                        self.data['onboarding'] = 0
                        self.data['onboardingError'] = """
Please launch the <a href="/base/onboarding">set-up wizard</a> to get maximum out of your CyberPanel installation.
"""
                else:

                    self.data['onboarding'] = 2

                ipFile = "/etc/cyberpanel/machineIP"
                f = open(ipFile)
                ipData = f.read()
                ipAddress = ipData.split('\n', 1)[0]
                self.data['ipAddress'] = ipAddress
                self.data['fullName'] = '%s %s' % (admin.firstName, admin.lastName)
                # self.data['serverCheck'] = 1

                if ProcessUtilities.decideServer() == ProcessUtilities.ent:
                    self.data['serverCheck'] = 1

                ### Load Custom CSS
                try:
                    from baseTemplate.models import CyberPanelCosmetic
                    cosmetic = CyberPanelCosmetic.objects.get(pk=1)
                    self.data['cosmetic'] = cosmetic
                except:
                    try:
                        from baseTemplate.models import CyberPanelCosmetic
                        cosmetic = CyberPanelCosmetic()
                        cosmetic.save()
                        self.data['cosmetic'] = cosmetic
                    except:
                        pass


                ACLManager.GetServiceStatus(self.data)

                self.data.update(currentACL)

                return render(self.request, self.templateName, self.data)
            except BaseException as msg:
                templateName = 'baseTemplate/error.html'
                return render(self.request, templateName, {'error_message': str(msg)})
        except:
            from loginSystem.views import loadLoginPage
            from django.shortcuts import redirect
            return redirect(loadLoginPage)

    def renderPre(self):
        if self.data == None:
            return render(self.request, self.templateName)
        else:
            return render(self.request, self.templateName, self.data)

    def ajaxPre(self, status, errorMessage, success = None):
        final_dic = {'status': status, 'error_message': errorMessage, 'success': success}
        final_json = json.dumps(final_dic)
        return HttpResponse(final_json)

    def ajax(self, status, errorMessage, data = None):
        if data == None:
            finalDic = {'status': status, 'error_message': errorMessage}
            finalJson = json.dumps(finalDic)
            return HttpResponse(finalJson)
        else:
            finalDic = {}
            finalDic['status'] = status
            finalDic['error_message'] = errorMessage

            for key, value in data.items():
                finalDic[key] = value

            finalJson = json.dumps(finalDic)
            return HttpResponse(finalJson)

    @staticmethod
    def AJAX(status, errorMessage, success = None):
        final_dic = {'status': status, 'error_message': errorMessage, 'success': success}
        final_json = json.dumps(final_dic)
        return HttpResponse(final_json)