Files
CyberPanel/manageSSL/views.py

215 lines
6.8 KiB
Python
Raw Normal View History

2017-10-24 19:16:36 +05:00
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render,redirect
from loginSystem.views import loadLoginPage
from websiteFunctions.models import Websites,ChildDomains
2017-10-24 19:16:36 +05:00
from loginSystem.models import Administrator
from plogical.virtualHostUtilities import virtualHostUtilities
from plogical.sslUtilities import sslUtilities
from plogical.installUtilities import installUtilities
from django.http import HttpResponse
import json
import os
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
import shutil
import shlex
import subprocess
# Create your views here.
def loadSSLHome(request):
try:
val = request.session['userID']
return render(request, 'manageSSL/index.html')
except KeyError:
return redirect(loadLoginPage)
def manageSSL(request):
try:
val = request.session['userID']
admin = Administrator.objects.get(pk=request.session['userID'])
if admin.type == 1:
websites = Websites.objects.all()
websitesName = []
for items in websites:
websitesName.append(items.domain)
else:
if admin.type == 2:
websites = admin.websites_set.all()
admins = Administrator.objects.filter(owner=admin.pk)
websitesName = []
for items in websites:
websitesName.append(items.domain)
for items in admins:
webs = items.websites_set.all()
for web in webs:
websitesName.append(web.domain)
else:
websitesName = []
websites = Websites.objects.filter(admin=admin)
for items in websites:
websitesName.append(items.domain)
return render(request, 'manageSSL/manageSSL.html',{'websiteList':websitesName})
except KeyError:
return redirect(loadLoginPage)
def issueSSL(request):
try:
val = request.session['userID']
try:
if request.method == 'POST':
data = json.loads(request.body)
virtualHost = data['virtualHost']
2017-12-09 22:30:10 +05:00
adminEmail = ""
path = ""
try:
website = ChildDomains.objects.get(domain=virtualHost)
2017-12-09 22:30:10 +05:00
adminEmail = website.master.adminEmail
path = data['path']
except:
website = Websites.objects.get(domain=virtualHost)
2017-12-09 22:30:10 +05:00
adminEmail = website.adminEmail
path = "/home/" + virtualHost + "/public_html"
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
## ssl issue
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
execPath = execPath + " issueSSL --virtualHostName " + virtualHost + " --administratorEmail " + adminEmail + " --path " + path
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
output = subprocess.check_output(shlex.split(execPath))
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
if output.find("1,None") > -1:
pass
2017-10-26 23:50:59 +05:00
2017-12-09 22:30:10 +05:00
else:
data_ret = {"SSL": 0,
'error_message': output}
2017-10-24 19:16:36 +05:00
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2017-12-09 22:30:10 +05:00
## ssl issue ends
website.ssl = 1
website.save()
data_ret = {"SSL": 1,
'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2017-10-24 19:16:36 +05:00
except BaseException,msg:
data_ret = {"SSL": 0,
2017-10-24 19:16:36 +05:00
'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError:
data_ret = {"SSL": 0,
2017-10-24 19:16:36 +05:00
'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def sslForHostName(request):
try:
val = request.session['userID']
admin = Administrator.objects.get(pk=request.session['userID'])
if admin.type==1:
pass
else:
return HttpResponse("You should be admin to issue SSL For Hostname.")
if admin.type == 1:
websites = Websites.objects.all()
websitesName = []
for items in websites:
websitesName.append(items.domain)
else:
if admin.type == 2:
websites = admin.websites_set.all()
admins = Administrator.objects.filter(owner=admin.pk)
websitesName = []
for items in websites:
websitesName.append(items.domain)
for items in admins:
webs = items.websites_set.all()
for web in webs:
websitesName.append(web.domain)
else:
websitesName = []
websites = Websites.objects.filter(admin=admin)
for items in websites:
websitesName.append(items.domain)
return render(request, 'manageSSL/sslForHostName.html',{'websiteList':websitesName})
except KeyError:
return redirect(loadLoginPage)
def obtainHostNameSSL(request):
try:
val = request.session['userID']
try:
if request.method == 'POST':
data = json.loads(request.body)
virtualHost = data['virtualHost']
website = Websites.objects.get(domain=virtualHost)
2017-12-09 22:30:10 +05:00
path = "/home/" + virtualHost + "/public_html"
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
## ssl issue
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/virtualHostUtilities.py"
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
execPath = execPath + " issueSSLForHostName --virtualHostName " + virtualHost + " --path " + path
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
output = subprocess.check_output(shlex.split(execPath))
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
if output.find("1,None") > -1:
2017-10-24 19:16:36 +05:00
data_ret = {"SSL": 1,
'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2017-12-09 22:30:10 +05:00
else:
data_ret = {"SSL": 0,
'error_message': output}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
## ssl issue ends
2017-10-24 19:16:36 +05:00
except BaseException,msg:
data_ret = {"SSL": 0,
2017-10-24 19:16:36 +05:00
'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError:
data_ret = {"SSL": 0,
2017-10-24 19:16:36 +05:00
'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)