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.

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