Files
CyberPanel/baseTemplate/views.py
2017-11-05 21:07:12 +05:00

248 lines
7.3 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render,redirect
from django.http import HttpResponse
from plogical.getSystemInformation import SystemInformation
from loginSystem.models import Administrator
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
from django.utils.translation import ugettext,ungettext
# Create your views here.
def renderBase(request):
try:
val = request.session['userID']
admin = Administrator.objects.get(pk=val)
cpuRamDisk = SystemInformation.cpuRamDisk()
finaData = {"type": admin.type,'ramUsage':cpuRamDisk['ramUsage'],'cpuUsage':cpuRamDisk['cpuUsage'],'diskUsage':cpuRamDisk['diskUsage'] }
return render(request, 'baseTemplate/homePage.html', finaData)
except KeyError:
return redirect(loadLoginPage)
def getAdminStatus(request):
try:
admin = request.session['userID']
administrator = Administrator.objects.get(pk=admin)
if administrator.type == 1:
admin_type = "Administrator"
elif administrator.type == 2:
admin_type = "Reseller"
else:
admin_type = "Normal User"
serverIPAddress = "192.168.100.1"
try:
serverIPAddress = requests.get('https://api.ipify.org').text
except:
pass
adminName = administrator.firstName + " " + administrator.lastName
adminData = {"admin_type":admin_type,"user_name":adminName,"serverIPAddress":serverIPAddress}
json_data = json.dumps(adminData)
return HttpResponse(json_data)
except KeyError:
return HttpResponse("Can not get admin Status")
def getSystemStatus(request):
try:
HTTPData = SystemInformation.getSystemInformation()
try:
data = open("/tmp/lshttpd/.rtreport", "r").readlines()
httpData = data[3]
requestsData = data[4]
finalHTTP = re.findall(r"[A-Za-z0-9]+", httpData)
finalReq = re.findall(r"[A-Za-z0-9]+", requestsData)
HTTPData['RequestProcessing'] = finalReq[4]
HTTPData['TotalRequests'] = finalReq[11]
HTTPData['MAXCONN'] = finalHTTP[1]
HTTPData['MAXSSL'] = finalHTTP[4]
HTTPData['Avail'] = finalHTTP[8]
HTTPData['AvailSSL'] = finalHTTP[14]
except BaseException,msg:
HTTPData['RequestProcessing'] = 0
HTTPData['TotalRequests'] = 0
HTTPData['MAXCONN'] = 2000
HTTPData['MAXSSL'] = 1000
HTTPData['Avail'] = 2000
HTTPData['AvailSSL'] = 1000
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)
def versionManagment(request):
try:
val = request.session['userID']
admin = Administrator.objects.get(pk=val)
if admin.type == 1:
vers = version.objects.get(pk=1)
getVersion = requests.get('https://cyberpanel.net/version.txt')
latest = getVersion.json()
latestVersion = latest['version']
latestBuild = latest['build']
if vers.currentVersion == latestVersion and vers.build == latestBuild:
active = 0
else:
active = 0
return render(request, 'baseTemplate/versionManagment.html', {'build':vers.build,
'currentVersion':vers.currentVersion,
'latestVersion':latestVersion,'latestBuild':latestBuild,"active":active})
else:
return HttpResponse("You need to be admiministrator to view this page.")
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)
res = subprocess.call(cmd)
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))