Files
CyberPanel/baseTemplate/views.py

231 lines
7.4 KiB
Python
Raw Normal View History

2017-10-24 19:16:36 +05:00
# -*- coding: utf-8 -*-
from django.shortcuts import render,redirect
from django.http import HttpResponse
from plogical.getSystemInformation import SystemInformation
import json
from loginSystem.views import loadLoginPage
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
from plogical.httpProc import httpProc
2017-10-24 19:16:36 +05:00
# Create your views here.
2021-03-08 11:10:48 +05:00
VERSION = '2.1'
BUILD = 1
2017-10-24 19:16:36 +05:00
@ensure_csrf_cookie
2017-10-24 19:16:36 +05:00
def renderBase(request):
template = 'baseTemplate/homePage.html'
cpuRamDisk = SystemInformation.cpuRamDisk()
finaData = {'ramUsage': cpuRamDisk['ramUsage'], 'cpuUsage': cpuRamDisk['cpuUsage'],
'diskUsage': cpuRamDisk['diskUsage']}
proc = httpProc(request, template, finaData)
return proc.render()
2017-10-24 19:16:36 +05:00
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:
2020-05-15 01:07:04 +05:00
if ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu or ProcessUtilities.decideDistro() == ProcessUtilities.ubuntu20:
2019-07-25 14:12:54 +05:00
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:
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
2017-10-24 19:16:36 +05:00
HTTPData = SystemInformation.getSystemInformation()
json_data = json.dumps(HTTPData)
return HttpResponse(json_data)
except KeyError:
return HttpResponse("Can not get admin Status")
def getLoadAverage(request):
try:
val = request.session['userID']
currentACL = ACLManager.loadedACL(val)
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)
except KeyError:
return HttpResponse("Not allowed.")
2017-10-24 19:16:36 +05:00
@ensure_csrf_cookie
2017-10-24 19:16:36 +05:00
def versionManagment(request):
2021-02-23 23:38:58 +05:00
## Get latest version
2017-10-24 19:16:36 +05:00
2021-02-23 23:38:58 +05:00
getVersion = requests.get('https://cyberpanel.net/version.txt')
latest = getVersion.json()
latestVersion = latest['version']
latestBuild = latest['build']
2017-10-24 19:16:36 +05:00
2021-02-23 23:38:58 +05:00
## Get local version
2020-01-06 13:51:36 +05:00
2021-02-23 23:38:58 +05:00
currentVersion = VERSION
currentBuild = str(BUILD)
2020-01-06 13:51:36 +05:00
2021-02-23 23:38:58 +05:00
template = 'baseTemplate/versionManagment.html'
finalData = {'build': currentBuild, 'currentVersion': currentVersion, 'latestVersion': latestVersion,
'latestBuild': latestBuild}
2017-10-24 19:16:36 +05:00
2021-02-23 23:38:58 +05:00
proc = httpProc(request, template, finalData, 'versionManagement')
return proc.render()
2017-10-24 19:16:36 +05:00
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)
2019-12-10 15:09:10 +05:00
except BaseException as msg:
2017-10-24 19:16:36 +05:00
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.")
2019-12-10 15:09:10 +05:00
except BaseException as msg:
2017-10-24 19:16:36 +05:00
logging.CyberCPLogFileWriter.writeToFile(str(msg))
return HttpResponse(str(msg))
2021-07-16 15:00:35 +05:00
@ensure_csrf_cookie
def design(request):
### Load Custom CSS
try:
from baseTemplate.models import CyberPanelCosmetic
cosmetic = CyberPanelCosmetic.objects.get(pk=1)
except:
from baseTemplate.models import CyberPanelCosmetic
cosmetic = CyberPanelCosmetic()
cosmetic.save()
finalData = {}
if request.method == 'POST':
MainDashboardCSS = request.POST.get('MainDashboardCSS', '')
cosmetic.MainDashboardCSS = MainDashboardCSS
cosmetic.save()
finalData['saved'] = 1
template = 'baseTemplate/design.html'
finalData['cosmetic'] = cosmetic
proc = httpProc(request, template, finalData, 'versionManagement')
return proc.render()