Browse Source

Merge branch 'master' of https://github.com/k3oni/pydash

windows
root 12 years ago
parent
commit
667ff09dd9
  1. 9
      README.md
  2. 13
      main/views.py
  3. 3
      pydash/settings.py
  4. 5
      static/css/style.css
  5. 18
      static/js/dashboard.js
  6. 39
      templates/main.html
  7. 8
      usage/views.py

9
README.md

@ -1,7 +1,7 @@
pyDash - v1.4
pyDash - v1.4.2
====== ======
A small web monitoring dashboard for your linux pc/server writen in Python and Django + Chart.js.
A small web-based monitoring dashboard for your linux pc/server writen in Python and Django + Chart.js.
The dashboard is built using only Python libraries available in the main Python distribution, trying to create a small list of dependencies without the need of installing many packages or libraries. The dashboard is built using only Python libraries available in the main Python distribution, trying to create a small list of dependencies without the need of installing many packages or libraries.
@ -67,3 +67,8 @@ Credits
[Dashboard Template](http://www.egrappler.com/templatevamp-free-twitter-bootstrap-admin-template/), [Dashboard Template](http://www.egrappler.com/templatevamp-free-twitter-bootstrap-admin-template/),
[Bootstrap](http://getbootstrap.com/), [Bootstrap](http://getbootstrap.com/),
[Font Awesome](http://fontawesome.io/) [Font Awesome](http://fontawesome.io/)
Follow [@hostechs](https://twitter.com/hostechs) on Twitter
[![Flattr this](http://api.flattr.com/button/flattr-badge-large.png)](http://flattr.com/thing/2630601/k3onipydash-on-GitHub "Flattr this")

13
main/views.py

@ -71,12 +71,18 @@ def get_ipaddress():
Get the IP Address Get the IP Address
""" """
try: try:
pipe = os.popen(" ip addr | grep -A3 'LOWER_UP' | awk '{printf \"%s,\",$2}'|awk -F,, '{print $0}'")
if get_platform()['osname'] == "Linux":
pipe = os.popen("ip addr | grep -A3 'LOWER_UP' | awk '{if ($2 == \"forever\"){printf \"unavailable,\"} else{ printf \"%s,\",$2}}'|awk -F,, '{print $0}'")
else:
pipe = os.popen("ip addr | grep -A3 'LOWER_UP' | awk '{if ($2 == \"forever\"){printf \"unavailable,,\"} else{ printf \"%s,\",$2}}'|awk -F,, '{print $0}'")
data = pipe.read().strip().split(',,') data = pipe.read().strip().split(',,')
pipe.close() pipe.close()
data = [n for n in data if not n.startswith(('lo', '127'))]
data = [i.split(',', 4) for i in data] data = [i.split(',', 4) for i in data]
if len(data) == 2:
del data[0]
if len(data) > 2:
data = data[1:-1]
itf = [] itf = []
for e in data: for e in data:
@ -123,6 +129,9 @@ def get_users():
data = pipe.read().strip().split('\n') data = pipe.read().strip().split('\n')
pipe.close() pipe.close()
if data == [""]:
data = None
else:
data = [i.split(None, 3) for i in data] data = [i.split(None, 3) for i in data]
except Exception, err: except Exception, err:

3
pydash/settings.py

@ -19,7 +19,6 @@ BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# SECURITY WARNING: keep the secret key used in production secret! # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '1)$crmowu-23tz@i2-d=7tb3t+1u&(pm!lnjyuarki^72h!3af' SECRET_KEY = '1)$crmowu-23tz@i2-d=7tb3t+1u&(pm!lnjyuarki^72h!3af'
#SECRET_KEY = '1)$-23tz@i2-d=7tb3t+1u&(pm!lnjyuarki^72h!3a9'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False DEBUG = False
@ -37,7 +36,7 @@ TIME_JS_REFRESH = 30000
TIME_JS_REFRESH_LONG = 120000 TIME_JS_REFRESH_LONG = 120000
TIME_JS_REFRESH_NET = 2000 TIME_JS_REFRESH_NET = 2000
VERSION = 1.4
VERSION = "1.4.2"
ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*']

5
static/css/style.css

@ -410,12 +410,8 @@ textarea {
.widget-content { .widget-content {
padding: 20px 15px 15px; padding: 20px 15px 15px;
background: #FFF; background: #FFF;
border: 1px solid #D5D5D5; border: 1px solid #D5D5D5;
-moz-border-radius: 5px; -moz-border-radius: 5px;
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
@ -423,7 +419,6 @@ textarea {
.widget-header+.widget-content { .widget-header+.widget-content {
border-top: none; border-top: none;
-webkit-border-top-left-radius: 0; -webkit-border-top-left-radius: 0;
-webkit-border-top-right-radius: 0; -webkit-border-top-right-radius: 0;
-moz-border-radius-topleft: 0; -moz-border-radius-topleft: 0;

18
static/js/dashboard.js

@ -155,9 +155,12 @@ dashboard.getUsers = function() {
{ sTitle: "LOOGED IN FROM", { sTitle: "LOOGED IN FROM",
sDefaultContent: "unavailable" } sDefaultContent: "unavailable" }
], ],
bPaginate: false,
bFilter: true,
sDom: "lrtip",
aaSorting: [
[0, "desc"]
],
bPaginate: true,
sPaginationType: "two_button",
bFilter: false,
bAutoWidth: false, bAutoWidth: false,
bInfo: false bInfo: false
}).fadeIn(); }).fadeIn();
@ -247,3 +250,12 @@ dashboard.getIps = function() {
}); });
} }
//Expand-Contract div/table
$(document).ready(function() {
$(".widget-content").show();
$(".widget-header").click(function()
{
$(this).next(".widget-content").slideToggle(500);
$("i",this).toggleClass("icon-minus icon-plus");
});
});

39
templates/main.html

@ -61,12 +61,10 @@
<div class="span3"> <div class="span3">
<div class="widget widget-table action-table"> <div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-info-sign"></i>
<h3>General Info</h3>
<div class="widget-header"> <i class="icon-dashboard"></i>
<h3>General Info</h3><i class="icon-minus"></i>
<div id="refresh-os"> <div id="refresh-os">
</div> </div>
</div> </div>
<!-- /widget-header --> <!-- /widget-header -->
<div class="widget-content"> <div class="widget-content">
@ -87,8 +85,8 @@
<div class="span3"> <div class="span3">
<div class="widget widget-table action-table"> <div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-info-sign"></i>
<h3>CPU Usage %</h3>
<div class="widget-header"> <i class="icon-check"></i>
<h3>CPU Usage %</h3><i class="icon-minus"></i>
<div id="refresh-cpu"> <div id="refresh-cpu">
</div> </div>
</div> </div>
@ -108,9 +106,8 @@
<div class="span6"> <div class="span6">
<div class="widget widget-nopad"> <div class="widget widget-nopad">
<div class="widget-header">
<i class="icon-list-alt"></i>
<h3>Memory Usage</h3>
<div class="widget-header"> <i class="icon-list-alt"></i>
<h3>Memory Usage</h3><i class="icon-minus"></i>
<div id="refresh-ram"> <div id="refresh-ram">
</div> </div>
</div> </div>
@ -130,7 +127,7 @@
<div class="span6"> <div class="span6">
<div class="widget widget-table action-table"> <div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-hdd"></i> <div class="widget-header"> <i class="icon-hdd"></i>
<h3>Disk Usage</h3>
<h3>Disk Usage</h3><i class="icon-minus"></i>
<div id="refresh-df"> <div id="refresh-df">
</div> </div>
</div> </div>
@ -146,7 +143,7 @@
<div class="span6"> <div class="span6">
<div class="widget widget-table action-table"> <div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-bolt"></i> <div class="widget-header"> <i class="icon-bolt"></i>
<h3>Load Average</h3>
<h3>Load Average</h3><i class="icon-minus"></i>
<div id="refresh-load"> <div id="refresh-load">
</div> </div>
</div> </div>
@ -167,8 +164,8 @@
<div class="row"> <div class="row">
<div class="span6"> <div class="span6">
<div class="widget widget-table action-table"> <div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-monitor"></i>
<h3>IP Adresses</h3>
<div class="widget-header"> <i class="icon-level-up"></i>
<h3>IP Adresses</h3><i class="icon-minus"></i>
<div id="refresh-ip"> <div id="refresh-ip">
</div> </div>
</div> </div>
@ -185,8 +182,8 @@
<div class="span3"> <div class="span3">
<div class="widget"> <div class="widget">
<div class="widget-header"> <i class="icon-monitor"></i>
<h3>Internet Traffic</h3>
<div class="widget-header"> <i class="icon-exchange"></i>
<h3>Internet Traffic</h3><i class="icon-minus"></i>
<div id="refresh-ispeed"> <div id="refresh-ispeed">
</div> </div>
</div> </div>
@ -207,8 +204,8 @@
<div class="span3"> <div class="span3">
<div class="widget"> <div class="widget">
<div class="widget-header"> <i class="icon-monitor"></i>
<h3>Disk Reads/Writes</h3>
<div class="widget-header"> <i class="icon-angle-up"></i>
<h3>Disk Reads/Writes</h3><i class="icon-minus"></i>
<div id="refresh-diskio"> <div id="refresh-diskio">
</div> </div>
</div> </div>
@ -233,7 +230,7 @@
<div class="span6"> <div class="span6">
<div class="widget widget-table action-table"> <div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-group"></i> <div class="widget-header"> <i class="icon-group"></i>
<h3>Online</h3>
<h3>Online</h3><i class="icon-minus"></i>
<div id="refresh-online"> <div id="refresh-online">
</div> </div>
</div> </div>
@ -250,7 +247,7 @@
<div class="span6"> <div class="span6">
<div class="widget widget-table action-table"> <div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-angle-down"></i> <div class="widget-header"> <i class="icon-angle-down"></i>
<h3>Netstat</h3>
<h3>Netstat</h3><i class="icon-minus"></i>
<div id="refresh-netstat"> <div id="refresh-netstat">
</div> </div>
</div> </div>
@ -270,8 +267,8 @@
<div class="row"> <div class="row">
<div class="span12"> <div class="span12">
<div class="widget"> <div class="widget">
<div class="widget-header"> <i class="icon-dashboard"></i>
<h3> Processes </h3>
<div class="widget-header"> <i class="icon-list-alt"></i>
<h3> Processes </h3><i class="icon-minus"></i>
<div id="refresh-ps"> <div id="refresh-ps">
</div> </div>
</div> </div>

8
usage/views.py

@ -244,7 +244,7 @@ def memusage(request):
if not cookies: if not cookies:
datasets.append(0) datasets.append(0)
else: else:
datasets = eval(cookies)
datasets = json.loads(cookies)
if len(datasets) > 10: if len(datasets) > 10:
while datasets: while datasets:
del datasets[0] del datasets[0]
@ -303,7 +303,7 @@ def loadaverage(request):
if not cookies: if not cookies:
datasets.append(0) datasets.append(0)
else: else:
datasets = eval(cookies)
datasets = json.loads(cookies)
if len(datasets) > 10: if len(datasets) > 10:
while datasets: while datasets:
del datasets[0] del datasets[0]
@ -375,7 +375,7 @@ def gettraffic(request):
datasets_out.append(0) datasets_out.append(0)
datasets_out_o.append(0) datasets_out_o.append(0)
else: else:
datasets = eval(cookies)
datasets = json.loads(cookies)
datasets_in = datasets[0] datasets_in = datasets[0]
datasets_out = datasets[1] datasets_out = datasets[1]
datasets_in_i = datasets[2] datasets_in_i = datasets[2]
@ -498,7 +498,7 @@ def getdiskio(request):
datasets_out.append(0) datasets_out.append(0)
datasets_out_o.append(0) datasets_out_o.append(0)
else: else:
datasets = eval(cookies)
datasets = json.loads(cookies)
datasets_in = datasets[0] datasets_in = datasets[0]
datasets_out = datasets[1] datasets_out = datasets[1]
datasets_in_i = datasets[2] datasets_in_i = datasets[2]

Loading…
Cancel
Save