Files
CyberPanel/baseTemplate/views.py

222 lines
7.0 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 django.http import HttpResponse
from plogical.getSystemInformation import SystemInformation
2018-08-18 00:39:10 +05:00
from loginSystem.models import Administrator, ACL
2017-10-24 19:16:36 +05:00
import json
from loginSystem.views import loadLoginPage
import re
from .models import version
import requests
import subprocess
import shlex
import os
import plogical.CyberCPLogFileWriter as logging
2018-08-18 00:39:10 +05:00
from plogical.acl import ACLManager
2019-06-26 03:57:16 +05:00
from manageServices.models import PDNSStatus
from django.views.decorators.csrf import ensure_csrf_cookie
2019-07-25 14:12:54 +05:00
from plogical.processUtilities import ProcessUtilities
2017-10-24 19:16:36 +05:00
# Create your views here.
@ensure_csrf_cookie
2017-10-24 19:16:36 +05:00
def renderBase(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
admin = 1
else:
admin = 0
2017-10-24 19:16:36 +05:00
cpuRamDisk = SystemInformation.cpuRamDisk()
2018-08-18 00:39:10 +05:00
finaData = {"admin": admin,'ramUsage':cpuRamDisk['ramUsage'],'cpuUsage':cpuRamDisk['cpuUsage'],'diskUsage':cpuRamDisk['diskUsage'] }
2017-10-24 19:16:36 +05:00
return render(request, 'baseTemplate/homePage.html', finaData)
except KeyError:
return redirect(loadLoginPage)
def getAdminStatus(request):
try:
2018-08-18 00:39:10 +05:00
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
2017-10-24 19:16:36 +05:00
2019-06-26 03:57:16 +05:00
if os.path.exists('/home/cyberpanel/postfix'):
currentACL['emailAsWhole'] = 1
else:
currentACL['emailAsWhole'] = 0
if os.path.exists('/home/cyberpanel/pureftpd'):
currentACL['ftpAsWhole'] = 1
else:
currentACL['ftpAsWhole'] = 0
try:
pdns = PDNSStatus.objects.get(pk=1)
currentACL['dnsAsWhole'] = pdns.serverStatus
except:
2019-07-25 14:12:54 +05:00
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu:
pdnsPath = '/etc/powerdns'
else:
pdnsPath = '/etc/pdns'
if os.path.exists(pdnsPath):
2019-06-26 03:57:16 +05:00
PDNSStatus(serverStatus=1).save()
currentACL['dnsAsWhole'] = 1
else:
currentACL['dnsAsWhole'] = 0
2018-08-18 00:39:10 +05:00
json_data = json.dumps(currentACL)
2017-10-24 19:16:36 +05:00
return HttpResponse(json_data)
except KeyError:
return HttpResponse("Can not get admin Status")
def getSystemStatus(request):
try:
HTTPData = SystemInformation.getSystemInformation()
json_data = json.dumps(HTTPData)
return HttpResponse(json_data)
except KeyError:
return HttpResponse("Can not get admin Status")
def getLoadAverage(request):
loadAverage = SystemInformation.cpuLoad()
loadAverage = list(loadAverage)
one = loadAverage[0]
two = loadAverage[1]
three = loadAverage[2]
loadAvg = {"one": one, "two": two,"three": three}
json_data = json.dumps(loadAvg)
return HttpResponse(json_data)
@ensure_csrf_cookie
2017-10-24 19:16:36 +05:00
def versionManagment(request):
try:
2018-08-18 00:39:10 +05:00
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
if currentACL['admin'] == 1:
pass
elif currentACL['versionManagement'] == 1:
pass
else:
return ACLManager.loadError()
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
vers = version.objects.get(pk=1)
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
getVersion = requests.get('https://cyberpanel.net/version.txt')
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
latest = getVersion.json()
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
latestVersion = latest['version']
latestBuild = latest['build']
2017-10-24 19:16:36 +05:00
2018-08-18 00:39:10 +05:00
return render(request, 'baseTemplate/versionManagment.html', {'build': vers.build,
'currentVersion': vers.currentVersion,
'latestVersion': latestVersion,
'latestBuild': latestBuild})
2017-10-24 19:16:36 +05:00
except KeyError:
return redirect(loadLoginPage)
def upgrade(request):
try:
admin = request.session['userID']
try:
os.remove('upgrade.py')
except:
pass
command = 'wget http://cyberpanel.net/upgrade.py'
cmd = shlex.split(command)
2019-03-26 16:19:03 +05:00
res = subprocess.call(cmd)
2017-10-24 19:16:36 +05:00
vers = version.objects.get(pk=1)
from upgrade import Upgrade
Upgrade.initiateUpgrade(vers.currentVersion,vers.build)
adminData = {"upgrade":1}
json_data = json.dumps(adminData)
return HttpResponse(json_data)
except KeyError:
adminData = {"upgrade": 1,"error_message":"Please login or refresh this page."}
json_data = json.dumps(adminData)
return HttpResponse(json_data)
def upgradeStatus(request):
try:
val = request.session['userID']
try:
if request.method == 'POST':
path = "/usr/local/lscp/logs/upgradeLog"
try:
upgradeLog = open(path, "r").read()
except:
final_json = json.dumps({'finished': 0, 'upgradeStatus': 1,
'error_message': "None",
'upgradeLog': "Upgrade Just started.."})
return HttpResponse(final_json)
if upgradeLog.find("Upgrade Completed")>-1:
vers = version.objects.get(pk=1)
getVersion = requests.get('https://cyberpanel.net/version.txt')
latest = getVersion.json()
vers.currentVersion = latest['version']
vers.build = latest['build']
vers.save()
os.remove(path)
final_json = json.dumps({'finished': 1, 'upgradeStatus': 1,
'error_message': "None",
'upgradeLog': upgradeLog})
return HttpResponse(final_json)
else:
final_json = json.dumps({'finished': 0, 'upgradeStatus': 1,
'error_message': "None",
'upgradeLog': upgradeLog})
return HttpResponse(final_json)
except BaseException,msg:
final_dic = {'upgradeStatus': 0, 'error_message': str(msg)}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
except KeyError:
final_dic = {'upgradeStatus': 0, 'error_message': "Not Logged In, please refresh the page or login again."}
final_json = json.dumps(final_dic)
return HttpResponse(final_json)
def upgradeVersion(request):
try:
vers = version.objects.get(pk=1)
getVersion = requests.get('https://cyberpanel.net/version.txt')
latest = getVersion.json()
vers.currentVersion = latest['version']
vers.build = latest['build']
vers.save()
return HttpResponse("Version upgrade OK.")
except BaseException, msg:
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))