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.

367 lines
9.2 KiB

12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
  1. import json
  2. from django.shortcuts import render_to_response
  3. from django.http import HttpResponse, HttpResponseRedirect
  4. from django.template import RequestContext
  5. from django.contrib.auth.decorators import login_required
  6. from main.views import *
  7. from pydash.settings import TIME_JS_REFRESH, TIME_JS_REFRESH_LONG, TIME_JS_REFRESH_NET
  8. time_refresh = TIME_JS_REFRESH
  9. time_refresh_long = TIME_JS_REFRESH_LONG
  10. time_refresh_net = TIME_JS_REFRESH_NET
  11. @login_required(login_url='/login/')
  12. def uptime(request):
  13. """
  14. Return uptime
  15. """
  16. try:
  17. up_time = get_uptime()
  18. except Exception:
  19. up_time = None
  20. data = json.dumps(up_time)
  21. response = HttpResponse()
  22. response['Content-Type'] = "text/javascript"
  23. response.write(data)
  24. return response
  25. @login_required(login_url='/login/')
  26. def getdisk(request):
  27. """
  28. Return the disk usage
  29. """
  30. try:
  31. getdisk = get_disk()
  32. except Exception:
  33. getdisk = None
  34. data = json.dumps(getdisk)
  35. response = HttpResponse()
  36. response['Content-Type'] = "text/javascript"
  37. response.write(data)
  38. return response
  39. @login_required(login_url='/login/')
  40. def getips(request):
  41. """
  42. Return the IPs and interfaces
  43. """
  44. try:
  45. get_ips = get_ipaddress()
  46. except Exception:
  47. get_ips = None
  48. data = json.dumps(get_ips['itfip'])
  49. response = HttpResponse()
  50. response['Content-Type'] = "text/javascript"
  51. response.write(data)
  52. return response
  53. @login_required(login_url='/login/')
  54. def getusers(request):
  55. """
  56. Return online users
  57. """
  58. try:
  59. online_users = get_users()
  60. except Exception:
  61. online_users = None
  62. data = json.dumps(online_users)
  63. response = HttpResponse()
  64. response['Content-Type'] = "text/javascript"
  65. response.write(data)
  66. return response
  67. @login_required(login_url='/login/')
  68. def getproc(request):
  69. """
  70. Return the running processes
  71. """
  72. try:
  73. processes = get_cpu_usage()
  74. processes = processes['all']
  75. except Exception:
  76. processes = None
  77. data = json.dumps(processes)
  78. response = HttpResponse()
  79. response['Content-Type'] = "text/javascript"
  80. response.write(data)
  81. return response
  82. @login_required(login_url='/login/')
  83. def cpuusage(request):
  84. """
  85. Return CPU Usage in %
  86. """
  87. try:
  88. cpu_usage = get_cpu_usage()
  89. except Exception:
  90. cpu_usage = 0
  91. cpu = [
  92. {
  93. "value": cpu_usage['free'],
  94. "color": "#0AD11B"
  95. },
  96. {
  97. "value": cpu_usage['used'],
  98. "color": "#F7464A"
  99. }
  100. ]
  101. data = json.dumps(cpu)
  102. response = HttpResponse()
  103. response['Content-Type'] = "text/javascript"
  104. response.write(data)
  105. return response
  106. @login_required(login_url='/login/')
  107. def memusage(request):
  108. """
  109. Return Memory Usage in % and numeric
  110. """
  111. datasets = []
  112. try:
  113. mem_usage = get_mem()
  114. except Exception:
  115. mem_usage = 0
  116. try:
  117. cookies = request._cookies['memory_usage']
  118. except Exception:
  119. cookies = None
  120. if not cookies:
  121. datasets.append(0)
  122. else:
  123. datasets = eval(cookies)
  124. if len(datasets) > 10:
  125. while datasets:
  126. del datasets[0]
  127. if len(datasets) == 10:
  128. break
  129. if len(datasets) <= 9:
  130. datasets.append(int(mem_usage['usage']))
  131. if len(datasets) == 10:
  132. datasets.append(int(mem_usage['usage']))
  133. del datasets[0]
  134. # Some fix division by 0 Chart.js
  135. if len(datasets) == 10:
  136. if sum(datasets) == 0:
  137. datasets[9] += 0.1
  138. if sum(datasets) / 10 == datasets[0]:
  139. datasets[9] += 0.1
  140. memory = {
  141. 'labels': [""] * 10,
  142. 'datasets': [
  143. {
  144. "fillColor": "rgba(249,134,33,0.5)",
  145. "strokeColor": "rgba(249,134,33,1)",
  146. "pointColor": "rgba(249,134,33,1)",
  147. "pointStrokeColor": "#fff",
  148. "data": datasets
  149. }
  150. ]
  151. }
  152. data = json.dumps(memory)
  153. response = HttpResponse()
  154. response['Content-Type'] = "text/javascript"
  155. response.cookies['memory_usage'] = datasets
  156. response.write(data)
  157. return response
  158. @login_required(login_url='/login/')
  159. def loadaverage(request):
  160. """
  161. Return Load Average numeric
  162. """
  163. datasets = []
  164. try:
  165. load_average = get_load()
  166. except Exception:
  167. load_average = 0
  168. try:
  169. cookies = request._cookies['load_average']
  170. except Exception:
  171. cookies = None
  172. if not cookies:
  173. datasets.append(0)
  174. else:
  175. datasets = eval(cookies)
  176. if len(datasets) > 10:
  177. while datasets:
  178. del datasets[0]
  179. if len(datasets) == 10:
  180. break
  181. if len(datasets) <= 9:
  182. datasets.append(float(load_average))
  183. if len(datasets) == 10:
  184. datasets.append(float(load_average))
  185. del datasets[0]
  186. # Some fix division by 0 Chart.js
  187. if len(datasets) == 10:
  188. if sum(datasets) == 0:
  189. datasets[9] += 0.1
  190. if sum(datasets) / 10 == datasets[0]:
  191. datasets[9] += 0.1
  192. load = {
  193. 'labels': [""] * 10,
  194. 'datasets': [
  195. {
  196. "fillColor" : "rgba(151,187,205,0.5)",
  197. "strokeColor" : "rgba(151,187,205,1)",
  198. "pointColor" : "rgba(151,187,205,1)",
  199. "pointStrokeColor": "#fff",
  200. "data": datasets
  201. }
  202. ]
  203. }
  204. data = json.dumps(load)
  205. response = HttpResponse()
  206. response['Content-Type'] = "text/javascript"
  207. response.cookies['load_average'] = datasets
  208. response.write(data)
  209. return response
  210. @login_required(login_url='/login/')
  211. def gettraffic(request):
  212. """
  213. Return the traffic for the interface
  214. """
  215. datasets_in = []
  216. datasets_in_i = []
  217. datasets_out = []
  218. datasets_out_o = []
  219. json_traffic = []
  220. cookie_traffic = {}
  221. label = "KBps"
  222. try:
  223. intf = get_ipaddress()
  224. intf = intf['interface'][0]
  225. traffic = get_traffic(intf)
  226. except Exception:
  227. traffic = 0
  228. try:
  229. cookies = request._cookies['traffic']
  230. except Exception:
  231. cookies = None
  232. if not cookies:
  233. datasets_in.append(0)
  234. datasets_in_i.append(0)
  235. datasets_out.append(0)
  236. datasets_out_o.append(0)
  237. else:
  238. datasets = eval(cookies)
  239. datasets_in = datasets[0]
  240. datasets_out = datasets[1]
  241. datasets_in_i = datasets[2]
  242. datasets_out_o = datasets[3]
  243. if len(datasets_in) > 10:
  244. while datasets_in:
  245. del datasets_in[0]
  246. if len(datasets_in) == 10:
  247. break
  248. if len(datasets_in_i) > 2:
  249. while datasets_in_i:
  250. del datasets_in_i[0]
  251. if len(datasets_in_i) == 2:
  252. break
  253. if len(datasets_out) > 10:
  254. while datasets_out:
  255. del datasets_out[0]
  256. if len(datasets_out) == 10:
  257. break
  258. if len(datasets_out_o) > 2:
  259. while datasets_out_o:
  260. del datasets_out_o[0]
  261. if len(datasets_out_o) == 2:
  262. break
  263. if len(datasets_in_i) <= 1:
  264. datasets_in_i.append(float(traffic['traffic_in']))
  265. if len(datasets_in_i) == 2:
  266. datasets_in_i.append(float(traffic['traffic_in']))
  267. del datasets_in_i[0]
  268. if len(datasets_out_o) <= 1:
  269. datasets_out_o.append(float(traffic['traffic_out']))
  270. if len(datasets_out_o) == 2:
  271. datasets_out_o.append(float(traffic['traffic_out']))
  272. del datasets_out_o[0]
  273. dataset_in = (float(((datasets_in_i[1] - datasets_in_i[0]) / 1024 ) / ( time_refresh_net / 1000 )))
  274. dataset_out = (float(((datasets_out_o[1] - datasets_out_o[0]) / 1024 ) / ( time_refresh_net / 1000 )))
  275. if dataset_in > 1024 or dataset_out > 1024:
  276. dataset_in = (float(dataset_in / 1024 ))
  277. dataset_out = (float(dataset_out / 1024 ))
  278. label = "MBps"
  279. if len(datasets_in) <= 9:
  280. datasets_in.append(dataset_in)
  281. if len(datasets_in) == 10:
  282. datasets_in.append(dataset_in)
  283. del datasets_in[0]
  284. if len(datasets_out) <= 9:
  285. datasets_out.append(dataset_out)
  286. if len(datasets_out) == 10:
  287. datasets_out.append(dataset_out)
  288. del datasets_out[0]
  289. # Some fix division by 0 Chart.js
  290. if len(datasets_in) == 10:
  291. if sum(datasets_in) == 0:
  292. datasets_in[9] += 0.1
  293. if sum(datasets_in) / 10 == datasets_in[0]:
  294. datasets_in[9] += 0.1
  295. traff = {
  296. 'labels': [label] * 10,
  297. 'datasets': [
  298. {
  299. "fillColor": "rgba(105,210,231,0.5)",
  300. "strokeColor": "rgba(105,210,231,1)",
  301. "pointColor": "rgba(105,210,231,1)",
  302. "pointStrokeColor": "#fff",
  303. "data": datasets_in
  304. },
  305. {
  306. "fillColor": "rgba(227,48,81,0.5)",
  307. "strokeColor": "rgba(227,48,81,1)",
  308. "pointColor": "rgba(227,48,81,1)",
  309. "pointStrokeColor": "#fff",
  310. "data": datasets_out
  311. }
  312. ]
  313. }
  314. cookie_traffic = [datasets_in, datasets_out, datasets_in_i, datasets_out_o]
  315. data = json.dumps(traff)
  316. response = HttpResponse()
  317. response['Content-Type'] = "text/javascript"
  318. response.cookies['traffic'] = cookie_traffic
  319. response.write(data)
  320. return response