diff --git a/main/views.py b/main/views.py
index 5cc5fd6..789f972 100755
--- a/main/views.py
+++ b/main/views.py
@@ -62,12 +62,14 @@ def get_ipaddress():
"""
try:
pipe = os.popen("/sbin/ifconfig |" + "grep -B1 'inet addr' |" + "awk '{ if ( $1 == \"inet\" ) { print $2 } else if ( $2 == \"Link\" ) { printf \"%s:\",$1 } }' |" + "awk -F: '{ print $1, $3 }'")
- data = pipe.read().strip().split()
+ data = pipe.read().strip().split('\n')
pipe.close()
data = [n for n in data if not n.startswith(('lo', '127'))]
itf = dict(zip(*[iter(data)] * 2))
+ data = [i.split(None, 2) for i in data]
+
ips = {'interface': itf, 'itfip': data}
data = ips
@@ -119,7 +121,7 @@ def get_traffic(request):
Get the traffic for the specified interface
"""
try:
- pipe = os.popen("cat /proc/net/dev |" + "grep " + request + "| awk {'print $1, $9'}")
+ pipe = os.popen("cat /proc/net/dev |" + "grep " + request + "| awk '{print $2, $10}'")
data = pipe.read().strip().split(':',1)[-1]
pipe.close()
@@ -232,8 +234,8 @@ def getall(request):
'getplatform': get_platform(),
'getcpus': get_cpus(),
#'getdisk': get_disk(),
- 'getip': get_ipaddress(),
- 'gettraffic': get_traffic('eth0'),
+ #'getip': get_ipaddress(),
+ #'gettraffic': get_traffic('eth0'),
#'getusers': get_users(),
'getcpuusage': get_cpu_usage(),
'time_refresh': time_refresh,
diff --git a/pydash/urls.py b/pydash/urls.py
index 90bd6f6..47e0b47 100644
--- a/pydash/urls.py
+++ b/pydash/urls.py
@@ -20,6 +20,8 @@ urlpatterns = patterns('',
url(r'^info/cpuusage/$', 'usage.views.cpuusage', name='cpuusage'),
url(r'^info/getdisk/$', 'usage.views.getdisk', name='getdisk'),
url(r'^info/getusers/$', 'usage.views.getusers', name='getusers'),
+ url(r'^info/getips/$', 'usage.views.getips', name='getips'),
+ url(r'^info/gettraffic/$', 'usage.views.gettraffic', name='gettraffic'),
url(r'^info/loadaverage/$', 'usage.views.loadaverage', name='loadaverage')
)
diff --git a/static/css/dashboard.css b/static/css/dashboard.css
index 78dd108..337845c 100644
--- a/static/css/dashboard.css
+++ b/static/css/dashboard.css
@@ -354,4 +354,38 @@ h6.bigstats {
.dataTables_paginate a{ margin-left:8px;}
.dataTables_paginate a:hover{ pointer:pointer;}
.navbar-fixed-top{ margin-left:0px;}
-.widget-search{display: inline-block; vertical-align: middle; margin: 0 6px; width: 200px;}
\ No newline at end of file
+.widget-search{display: inline-block; vertical-align: middle; margin: 0 6px; width: 200px;}
+
+.netin {
+ border-color: rgb(105,210,231);
+ margin: 0.5em;
+ border-style: solid;
+ border-width: 0 0 0 1em;
+ padding: 0 0.3em;
+ border-style: solid;
+}
+.netout {
+ border-color: rgb(227,48,81);
+ margin: 0.5em;
+ border-style: solid;
+ border-width: 0 0 0 1em;
+ padding: 0 0.3em;
+ border-style: solid;
+}
+.cpuu {
+ border-color: rgb(247,70,74);
+ margin: 0.5em;
+ border-style: solid;
+ border-width: 0 0 0 1em;
+ padding: 0 0.3em;
+ border-style: solid;
+}
+.cpuf {
+ border-color: rgb(10,209,27);
+ margin: 0.5em;
+ border-style: solid;
+ border-width: 0 0 0 1em;
+ padding: 0 0.3em;
+ border-style: solid;
+}
+
diff --git a/templates/ip.html b/templates/ip.html
index 9a7cc37..59e44a7 100644
--- a/templates/ip.html
+++ b/templates/ip.html
@@ -5,12 +5,7 @@
IP |
-
- {% for itfip in getip.itfip %}
- {% cycle '' ''%}
- | {{itfip}} |
- {% cycle '' '
' %}
- {% endfor %}
+
diff --git a/templates/main.html b/templates/main.html
index dce8961..9bee9e1 100644
--- a/templates/main.html
+++ b/templates/main.html
@@ -91,6 +91,10 @@
+
+ {% trans "Free" %}
+ {% trans "Used" %}
+
@@ -212,16 +216,20 @@
@@ -303,6 +311,16 @@ dashboard.getUsers = function() {
$("#get-users").html( tr );
});
}
+dashboard.getIps = function() {
+ $.getJSON('/info/getips/{{ getips }}', function(data) {
+ var tr='';
+ $.each( data, function( index, item){
+ tr+='
| '+item[0]+' | '+item[1]+' |
';
+ })
+ tr+='';
+ $("#get-ips").html( tr );
+ });
+ }
var mem_ctx = $("#memoryChart").get(0).getContext("2d");
@@ -331,6 +349,19 @@ var cpu_ctx = $("#cpuuChart").get(0).getContext("2d");
});
}
+var trf_ctx = $("#trfChart").get(0).getContext("2d");
+ var trfChart = new Chart(trf_ctx);
+ function traffic_usage(){
+ $.getJSON('/info/gettraffic/', function(data) {
+ var options = {
+ animation : false,
+ pointDotRadius : 2,
+ scaleLabel : "<%=value%> Kb"
+ }
+ trfChart.Line(data, options);
+ });
+ }
+
var load_ctx = $("#loadChart").get(0).getContext("2d");
var loadChart = new Chart(load_ctx);
function load_average(){
@@ -351,15 +382,18 @@ var load_ctx = $("#loadChart").get(0).getContext("2d");
window.setInterval('dashboard.getDisk()', {{ time_refresh_long }});
window.setInterval('dashboard.getUsers()', {{ time_refresh_long }});
window.setInterval('cpuu_usage()', {{ time_refresh }});
+ window.setInterval('traffic_usage()', 1000);
});
$(function pageLoad() {
memory_usage();
load_average();
cpuu_usage();
+ traffic_usage();
dashboard.getUptime();
dashboard.getDisk();
dashboard.getUsers();
+ dashboard.getIps();
});
diff --git a/usage/views.py b/usage/views.py
index 992d50b..6676dae 100755
--- a/usage/views.py
+++ b/usage/views.py
@@ -45,7 +45,7 @@ def getdisk(request):
response.write(data)
return response
-def getusers(request):
+def getips(request):
"""
Return the online users
"""
@@ -53,11 +53,11 @@ def getusers(request):
return HttpResponseRedirect('/login')
try:
- getusers = get_users()
+ get_ips = get_ipaddress()
except Exception:
- getusers = None
+ get_ips = None
- data = simplejson.dumps(getusers)
+ data = simplejson.dumps(get_ips['itfip'])
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.write(data)
@@ -233,3 +233,120 @@ def loadaverage(request):
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
+