Files
CyberPanel/dockerManager/decorators.py

52 lines
1.8 KiB
Python
Raw Normal View History

2019-01-07 13:11:12 +00:00
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
2019-01-27 01:18:49 +05:00
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
from plogical.acl import ACLManager
2019-01-07 13:11:12 +00:00
def preDockerRun(function):
def wrap(request, *args, **kwargs):
2019-02-04 01:03:18 +05:00
try:
userID = request.session['userID']
2019-01-07 13:11:12 +00:00
except KeyError:
return redirect(loadLoginPage)
2019-02-04 01:03:18 +05:00
currentACL = ACLManager.loadedACL(userID)
2019-01-07 13:11:12 +00:00
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:
return render(request, 'dockerManager/install.html', {'status':currentACL['admin'], 'conErr':0})
2019-01-07 13:11:12 +00:00
# Check if docker is running and we are able to connect
2019-01-07 13:11:12 +00:00
try:
client = docker.from_env()
client.ping()
2019-01-27 01:18:49 +05:00
except BaseException, msg:
logging.writeToFile(str(msg))
2019-01-07 13:11:12 +00:00
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:
return render(request, 'dockerManager/install.html', {'status':currentACL['admin'], 'conErr':1})
2019-01-07 13:11:12 +00:00
return function(request, *args, **kwargs)
2019-01-27 01:18:49 +05:00
2019-02-04 01:03:18 +05:00
return wrap