You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

352 lines
8.9 KiB

from django.shortcuts import render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from django.template import RequestContext
from django.utils import simplejson
from main.views import *
from pydash.settings import TIME_JS_REFRESH, TIME_JS_REFRESH_LONG
time_refresh = TIME_JS_REFRESH
time_refresh_long = TIME_JS_REFRESH_LONG
def uptime(request):
"""
Return uptime
"""
if not request.user.is_authenticated():
return HttpResponseRedirect('/login')
try:
up_time = get_uptime()
except Exception:
up_time = None
data = simplejson.dumps(up_time)
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.write(data)
return response
def getdisk(request):
"""
Return the disk usage
"""
if not request.user.is_authenticated():
return HttpResponseRedirect('/login')
try:
getdisk = get_disk()
except Exception:
getdisk = None
data = simplejson.dumps(getdisk)
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.write(data)
return response
def getips(request):
"""
Return the online users
"""
if not request.user.is_authenticated():
return HttpResponseRedirect('/login')
try:
get_ips = get_ipaddress()
except Exception:
get_ips = None
data = simplejson.dumps(get_ips['itfip'])
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.write(data)
return response
def getusers(request):
"""
Return uptime
"""
if not request.user.is_authenticated():
return HttpResponseRedirect('/login')
try:
online_users = get_users()
except Exception:
online_users = None
data = simplejson.dumps(online_users)
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.write(data)
return response
def cpuusage(request):
"""
Return CPU Usage in %
"""
if not request.user.is_authenticated():
return HttpResponseRedirect('/login')
try:
cpu_usage = get_cpu_usage()
except Exception:
cpu_usage = 0
cpu = [
{
"value": cpu_usage['free'],
"color": "#0AD11B"
},
{
"value": cpu_usage['used'],
"color": "#F7464A"
}
]
data = simplejson.dumps(cpu)
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.write(data)
return response
def memusage(request):
"""
Return Memory Usage in % and numeric
"""
if not request.user.is_authenticated():
return HttpResponseRedirect('/login')
datasets = []
try:
mem_usage = get_mem()
except Exception:
mem_usage = 0
try:
cookies = request._cookies['memory_usage']
except Exception:
cookies = None
if not cookies:
datasets.append(0)
else:
datasets = eval(cookies)
if len(datasets) > 10:
while datasets:
del datasets[0]
if len(datasets) == 10:
break
if len(datasets) <= 9:
datasets.append(int(mem_usage['usage']))
if len(datasets) == 10:
datasets.append(int(mem_usage['usage']))
del datasets[0]
# Some fix division by 0 Chart.js
if len(datasets) == 10:
if sum(datasets) == 0:
datasets[9] += 0.1
if sum(datasets) / 10 == datasets[0]:
datasets[9] += 0.1
memory = {
'labels': [""] * 10,
'datasets': [
{
"fillColor": "rgba(249,134,33,0.5)",
"strokeColor": "rgba(249,134,33,1)",
"pointColor": "rgba(249,134,33,1)",
"pointStrokeColor": "#fff",
"data": datasets
}
]
}
data = simplejson.dumps(memory)
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.cookies['memory_usage'] = datasets
response.write(data)
return response
def loadaverage(request):
"""
Return Load Average numeric
"""
if not request.user.is_authenticated():
return HttpResponseRedirect('/login')
datasets = []
try:
load_average = get_load()
except Exception:
load_average = 0
try:
cookies = request._cookies['load_average']
except Exception:
cookies = None
if not cookies:
datasets.append(0)
else:
datasets = eval(cookies)
if len(datasets) > 10:
while datasets:
del datasets[0]
if len(datasets) == 10:
break
if len(datasets) <= 9:
datasets.append(int(load_average))
if len(datasets) == 10:
datasets.append(int(load_average))
del datasets[0]
# Some fix division by 0 Chart.js
if len(datasets) == 10:
if sum(datasets) == 0:
datasets[9] += 0.1
if sum(datasets) / 10 == datasets[0]:
datasets[9] += 0.1
load = {
'labels': [""] * 10,
'datasets': [
{
"fillColor" : "rgba(151,187,205,0.5)",
"strokeColor" : "rgba(151,187,205,1)",
"pointColor" : "rgba(151,187,205,1)",
"pointStrokeColor": "#fff",
"data": datasets
}
]
}
data = simplejson.dumps(load)
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.cookies['load_average'] = datasets
response.write(data)
return response
def gettraffic(request):
"""
Return the traffic for the interface
"""
if not request.user.is_authenticated():
return HttpResponseRedirect('/login')
datasets_in = []
datasets_in_i = []
datasets_out = []
datasets_out_o = []
json_traffic = []
cookie_traffic = {}
try:
traffic = get_traffic('eth0')
except Exception:
traffic = 0
try:
cookies = request._cookies['traffic']
except Exception:
cookies = None
if not cookies:
datasets_in.append(0)
datasets_in_i.append(0)
datasets_out.append(0)
datasets_out_o.append(0)
else:
datasets = eval(cookies)
datasets_in = datasets[0]
datasets_out = datasets[1]
datasets_in_i = datasets[2]
datasets_out_o = datasets[3]
if len(datasets_in) > 10:
while datasets_in:
del datasets_in[0]
if len(datasets_in) == 10:
break
if len(datasets_in_i) > 2:
while datasets_in_i:
del datasets_in_i[0]
if len(datasets_in_i) == 2:
break
if len(datasets_out) > 10:
while datasets_out:
del datasets_out[0]
if len(datasets_out) == 10:
break
if len(datasets_out_o) > 2:
while datasets_out_o:
del datasets_out_o[0]
if len(datasets_out_o) == 2:
break
if len(datasets_in_i) <= 1:
datasets_in_i.append(int(traffic['traffic_in']))
if len(datasets_in_i) == 2:
datasets_in_i.append(int(traffic['traffic_in']))
del datasets_in_i[0]
if len(datasets_out_o) <= 1:
datasets_out_o.append(int(traffic['traffic_out']))
if len(datasets_out_o) == 2:
datasets_out_o.append(int(traffic['traffic_out']))
del datasets_out_o[0]
if len(datasets_in) <= 9:
datasets_in.append(float((datasets_in_i[1] - datasets_in_i[0]) / 1024 ))
if len(datasets_in) == 10:
datasets_in.append(float((datasets_in_i[1] - datasets_in_i[0]) / 1024 ))
del datasets_in[0]
if len(datasets_out) <= 9:
datasets_out.append(float((datasets_out_o[1] - datasets_out_o[0]) / 1024 ))
if len(datasets_out) == 10:
datasets_out.append(float((datasets_out_o[1] - datasets_out_o[0]) / 1024 ))
del datasets_out[0]
# Some fix division by 0 Chart.js
if len(datasets_in) == 10:
if sum(datasets_in) == 0:
datasets_in[9] += 0.1
if sum(datasets_in) / 10 == datasets_in[0]:
datasets_in[9] += 0.1
traff = {
'labels': [""] * 10,
'datasets': [
{
"fillColor": "rgba(105,210,231,0.5)",
"strokeColor": "rgba(105,210,231,1)",
"pointColor": "rgba(105,210,231,1)",
"pointStrokeColor": "#fff",
"data": datasets_in
},
{
"fillColor": "rgba(227,48,81,0.5)",
"strokeColor": "rgba(227,48,81,1)",
"pointColor": "rgba(227,48,81,1)",
"pointStrokeColor": "#fff",
"data": datasets_out
}
]
}
cookie_traffic = [datasets_in, datasets_out, datasets_in_i, datasets_out_o]
data = simplejson.dumps(traff)
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.cookies['traffic'] = cookie_traffic
response.write(data)
return response