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: //proc/676643/root/usr/local/CyberCP/dockerManager/decorators.py
from django.shortcuts import render,redirect
from loginSystem.models import Administrator
import os 
import docker
import json
from django.http import HttpResponse
from loginSystem.views import loadLoginPage
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
from plogical.acl import ACLManager

def preDockerRun(function):
    def wrap(request, *args, **kwargs):
        
        try:
            userID = request.session['userID']
        except KeyError:
            return redirect(loadLoginPage)

        currentACL = ACLManager.loadedACL(userID)
        
        if request.method == "POST":
            isPost = True
        else:
            isPost = False
            
        # check if docker is installed
        dockerInstallPath = '/usr/bin/docker'
        if not os.path.exists(dockerInstallPath):
            if isPost:
                data_ret = {'status': 0, 'error_message': 'Docker not installed'}
                json_data = json.dumps(data_ret)
                return HttpResponse(json_data)
            else:
                from plogical.httpProc import httpProc
                proc = httpProc(request, 'dockerManager/install.html', {'status':currentACL['admin'], 'conErr':0}, 'admin')
                return proc.render()
                #return render(request, 'dockerManager/install.html', {'status':currentACL['admin'], 'conErr':0})
            
        # Check if docker is running and we are able to connect
                
        try:
            client = docker.from_env()
            result = client.ping()
        except BaseException as msg:
            logging.writeToFile(str(msg))
            if isPost:
                data_ret = {'status': 0, 'error_message': 'Docker daemon not running or not responsive'}
                json_data = json.dumps(data_ret)
                return HttpResponse(json_data)
            else:
                from plogical.httpProc import httpProc
                proc = httpProc(request, 'dockerManager/install.html', {'status': currentACL['admin'], 'conErr': 0},
                                'admin')
                return proc.render()
                #return render(request, 'dockerManager/install.html', {'status':currentACL['admin'], 'conErr':1})
        
        return function(request, *args, **kwargs)

    return wrap