Files
CyberPanel/manageServices/views.py

334 lines
12 KiB
Python
Raw Normal View History

2018-07-23 02:09:33 +05:00
# -*- coding: utf-8 -*-
2019-12-10 15:09:10 +05:00
2018-07-23 02:09:33 +05:00
from django.shortcuts import render
from django.shortcuts import HttpResponse, redirect
import plogical.CyberCPLogFileWriter as logging
from loginSystem.views import loadLoginPage
import os
import json
from plogical.mailUtilities import mailUtilities
2018-08-18 00:39:10 +05:00
from plogical.acl import ACLManager
2019-12-11 10:40:35 +05:00
from .models import PDNSStatus, SlaveServers
2019-02-04 01:03:18 +05:00
from .serviceManager import ServiceManager
2019-03-26 16:19:03 +05:00
from plogical.processUtilities import ProcessUtilities
2018-07-23 02:09:33 +05:00
# Create your views here.
def managePowerDNS(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
2018-07-23 02:09:33 +05:00
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadError()
try:
2018-08-21 13:10:40 +05:00
data = {}
data['status'] = 1
pdnsStatus = PDNSStatus.objects.get(pk=1)
if pdnsStatus.type == 'MASTER':
counter = 1
for items in SlaveServers.objects.all():
if counter == 1:
data['slaveServer'] = items.slaveServer
data['slaveServerIP'] = items.slaveServerIP
else:
data['slaveServer%s' % (str(counter))] = items.slaveServer
data['slaveServerIP%s' % (str(counter))] = items.slaveServerIP
counter = counter + 1
else:
data['slaveServerNS'] = pdnsStatus.masterServer
data['masterServerIP'] = pdnsStatus.masterIP
return render(request, 'manageServices/managePowerDNS.html', data)
2019-12-10 15:09:10 +05:00
except BaseException as msg:
2018-07-23 02:09:33 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse("See CyberCP main log file.")
except KeyError:
return redirect(loadLoginPage)
2018-07-23 16:41:59 +05:00
def managePostfix(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadError()
2018-07-23 16:41:59 +05:00
try:
2018-08-18 00:39:10 +05:00
return render(request, 'manageServices/managePostfix.html', {"status": 1})
2018-07-23 16:41:59 +05:00
2019-12-10 15:09:10 +05:00
except BaseException as msg:
2018-07-23 16:41:59 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse("See CyberCP main log file.")
except KeyError:
return redirect(loadLoginPage)
2018-07-23 22:11:42 +05:00
def managePureFtpd(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
2018-07-23 22:11:42 +05:00
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadError()
try:
return render(request, 'manageServices/managePureFtpd.html', {"status": 1})
2019-12-10 15:09:10 +05:00
except BaseException as msg:
2018-07-23 22:11:42 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse("See CyberCP main log file.")
except KeyError:
return redirect(loadLoginPage)
2018-07-23 02:09:33 +05:00
def fetchStatus(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson()
2018-07-23 02:09:33 +05:00
try:
if request.method == 'POST':
mailUtilities.checkHome()
data = json.loads(request.body)
service = data['service']
if service == 'powerdns':
2019-02-04 01:03:18 +05:00
data_ret = {}
data_ret['status'] = 1
try:
pdns = PDNSStatus.objects.get(pk=1)
data_ret['installCheck'] = pdns.serverStatus
2019-06-26 03:57:16 +05:00
#data_ret['slaveIPData'] = pdns.also_notify
2019-02-04 01:03:18 +05:00
except:
PDNSStatus(serverStatus=1).save()
2019-02-05 12:21:37 +05:00
data_ret['installCheck'] = 1
2019-06-26 03:57:16 +05:00
#data_ret['slaveIPData'] = ''
2019-02-04 01:03:18 +05:00
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2018-07-23 02:09:33 +05:00
2018-07-23 16:41:59 +05:00
elif service == 'postfix':
if os.path.exists('/home/cyberpanel/postfix'):
data_ret = {'status': 1, 'error_message': 'None', 'installCheck': 1}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
else:
data_ret = {'status': 1, 'error_message': 'None', 'installCheck': 0}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2018-07-23 22:11:42 +05:00
elif service == 'pureftpd':
if os.path.exists('/home/cyberpanel/pureftpd'):
data_ret = {'status': 1, 'error_message': 'None', 'installCheck': 1}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
else:
data_ret = {'status': 1, 'error_message': 'None', 'installCheck': 0}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2018-07-23 02:09:33 +05:00
2019-12-10 15:09:10 +05:00
except BaseException as msg:
2018-07-23 02:09:33 +05:00
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2019-12-10 15:09:10 +05:00
except KeyError as msg:
2018-07-23 02:09:33 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg))
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def saveStatus(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson()
2018-07-23 02:09:33 +05:00
try:
if request.method == 'POST':
data = json.loads(request.body)
status = data['status']
service = data['service']
mailUtilities.checkHome()
if service == 'powerdns':
2018-07-23 16:41:59 +05:00
2018-07-23 02:09:33 +05:00
if status == True:
2019-02-04 01:03:18 +05:00
pdns = PDNSStatus.objects.get(pk=1)
pdns.serverStatus = 1
pdns.type = data['dnsMode']
2019-06-26 03:57:16 +05:00
if data['dnsMode'] == 'SLAVE':
pdns.masterServer = data['slaveServerNS']
pdns.masterIP = data['masterServerIP']
pdns.save()
2019-06-27 13:07:47 +05:00
elif data['dnsMode'] == 'MASTER':
2019-06-26 03:57:16 +05:00
pdns.masterServer = 'NONE'
pdns.masterIP = 'NONE'
pdns.save()
for items in SlaveServers.objects.all():
items.delete()
slaveServer = SlaveServers(slaveServer=data['slaveServer'],
slaveServerIP=data['slaveServerIP'])
slaveServer.save()
try:
slaveServer = SlaveServers(slaveServer=data['slaveServer2'], slaveServerIP=data['slaveServerIP2'])
slaveServer.save()
except:
pass
try:
slaveServer = SlaveServers(slaveServer=data['slaveServer3'], slaveServerIP=data['slaveServerIP3'])
slaveServer.save()
except:
pass
2019-07-18 14:08:00 +05:00
else:
pdns.save()
2019-06-26 03:57:16 +05:00
2019-06-27 13:07:47 +05:00
if data['dnsMode'] != 'Default':
data['type'] = data['dnsMode']
2019-06-26 03:57:16 +05:00
2019-06-27 13:07:47 +05:00
sm = ServiceManager(data)
sm.managePDNS()
2019-02-04 01:03:18 +05:00
2019-02-05 12:21:37 +05:00
command = 'sudo systemctl enable pdns'
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
2019-02-05 12:21:37 +05:00
command = 'sudo systemctl restart pdns'
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
2018-07-23 02:09:33 +05:00
else:
2019-02-04 01:03:18 +05:00
pdns = PDNSStatus.objects.get(pk=1)
pdns.serverStatus = 0
pdns.save()
2018-07-23 02:09:33 +05:00
command = 'sudo systemctl stop pdns'
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
command = 'sudo systemctl disable pdns'
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
2018-07-23 16:41:59 +05:00
elif service == 'postfix':
servicePath = '/home/cyberpanel/postfix'
if status == True:
writeToFile = open(servicePath, 'w+')
writeToFile.close()
command = 'sudo systemctl start postfix'
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 16:41:59 +05:00
else:
command = 'sudo systemctl stop postfix'
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
command = 'sudo systemctl disable postfix'
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
try:
os.remove(servicePath)
except:
pass
elif service == 'pureftpd':
2018-11-08 12:11:42 +05:00
if os.path.exists("/etc/lsb-release"):
serviceName = 'pure-ftpd-mysql'
else:
serviceName = 'pure-ftpd'
2018-07-23 22:11:42 +05:00
servicePath = '/home/cyberpanel/pureftpd'
if status == True:
writeToFile = open(servicePath, 'w+')
writeToFile.close()
2018-11-08 12:11:42 +05:00
command = 'sudo systemctl start ' + serviceName
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
else:
2018-11-08 12:11:42 +05:00
command = 'sudo systemctl stop ' + serviceName
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
2018-11-08 12:11:42 +05:00
command = 'sudo systemctl disable ' + serviceName
2019-03-26 16:19:03 +05:00
ProcessUtilities.executioner(command)
2018-07-23 22:11:42 +05:00
2018-07-23 16:41:59 +05:00
try:
os.remove(servicePath)
except:
pass
data_ret = {'status': 1, 'error_message': "None"}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2018-07-23 02:09:33 +05:00
2019-12-10 15:09:10 +05:00
except BaseException as msg:
2018-07-23 02:09:33 +05:00
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
2019-12-10 15:09:10 +05:00
except KeyError as msg:
2018-07-23 02:09:33 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg))
data_ret = {'status': 0, 'error_message': str(msg)}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
def manageApplications(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadError()
services = []
## ElasticSearch
esPath = '/home/cyberpanel/elasticsearch'
if os.path.exists(esPath):
installed = 'Installed'
else:
installed = 'Not-Installed'
elasticSearch = {'image': '/static/manageServices/images/elastic-search.png', 'name': 'Elastic Search', 'installed': installed}
services.append(elasticSearch)
try:
return render(request, 'manageServices/applications.html', {'services': services})
except BaseException as msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse("See CyberCP main log file.")
except KeyError:
return redirect(loadLoginPage)