Implement active lease search
This commit is contained in:
parent
7029c5e2e7
commit
32b4808048
1
app.js
1
app.js
|
@ -33,6 +33,7 @@ app.use('/users', require('./routes/users'));
|
||||||
app.use('/get_stats', require('./routes/get_stats'));
|
app.use('/get_stats', require('./routes/get_stats'));
|
||||||
app.use('/dhcp_statistics', require('./routes/dhcp_statistics_page'));
|
app.use('/dhcp_statistics', require('./routes/dhcp_statistics_page'));
|
||||||
app.use('/dhcp_leases', require('./routes/dhcp_leases'));
|
app.use('/dhcp_leases', require('./routes/dhcp_leases'));
|
||||||
|
app.use('/dhcp_lease_search', require('./routes/dhcp_lease_search'));
|
||||||
app.use('/dhcp_log', require('./routes/dhcp_log'));
|
app.use('/dhcp_log', require('./routes/dhcp_log'));
|
||||||
app.use('/dhcp_config', require('./routes/dhcp_config'));
|
app.use('/dhcp_config', require('./routes/dhcp_config'));
|
||||||
app.use('/dhcp_config_snapshots', require('./routes/dhcp_config_snapshots'));
|
app.use('/dhcp_config_snapshots', require('./routes/dhcp_config_snapshots'));
|
||||||
|
|
|
@ -2,6 +2,17 @@
|
||||||
* Created by cmiles on 8/9/2017.
|
* Created by cmiles on 8/9/2017.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
var loader_html = '<div class="preloader"> \
|
||||||
|
<div class="spinner-layer pl-light-blue"> \
|
||||||
|
<div class="circle-clipper left"> \
|
||||||
|
<div class="circle"></div> \
|
||||||
|
</div> \
|
||||||
|
<div class="circle-clipper right"> \
|
||||||
|
<div class="circle"></div> \
|
||||||
|
</div> \
|
||||||
|
</div> \
|
||||||
|
</div>';
|
||||||
|
|
||||||
$( document ).ajaxComplete(function( event, request, settings ) {
|
$( document ).ajaxComplete(function( event, request, settings ) {
|
||||||
/*
|
/*
|
||||||
* Form input focus event
|
* Form input focus event
|
||||||
|
@ -143,3 +154,22 @@ $(document).on("click",".option_data",function() {
|
||||||
$(this).text('Hide');
|
$(this).text('Hide');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).on("keypress","#lease_search_criteria", function(e) {
|
||||||
|
if (e.which == 13) {
|
||||||
|
$('#search_result').html(loader_html);
|
||||||
|
$.post("/dhcp_lease_search", { search: $("#lease_search_criteria").val() }, function(result) {
|
||||||
|
$("#search_result").html(result);
|
||||||
|
|
||||||
|
if(typeof display_leases !== "undefined")
|
||||||
|
display_leases.destroy();
|
||||||
|
|
||||||
|
display_leases = $('#display-leases').DataTable({
|
||||||
|
dom: 'tip',
|
||||||
|
responsive: true,
|
||||||
|
"pageLength": 100,
|
||||||
|
"aaSorting": []
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
<table id="display-leases" class="table table-bordered table-striped table-hover js-basic-example dataTable dashboard-task-infos">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>IP</th>
|
||||||
|
<th>MAC</th>
|
||||||
|
<th>Vendor</th>
|
||||||
|
<th>Hostname</th>
|
||||||
|
<th>Start</th>
|
||||||
|
<th>End</th>
|
||||||
|
<th>Option Data</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
[table_data]
|
||||||
|
</tbody>
|
||||||
|
</table>
|
|
@ -3,36 +3,28 @@
|
||||||
<h2>Active Leases</h2>
|
<h2>Active Leases</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
|
|
||||||
|
<div id="glass-alerts-form"><label>Search Active Leases</label>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="form-line">
|
||||||
|
<input type="input" class="form-control" id="lease_search_criteria" placeholder="Enter Search Criteria...">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
|
<div id="search_result"></div>
|
||||||
|
|
||||||
<table id="display-leases" class="table table-bordered table-striped table-hover js-basic-example dataTable dashboard-task-infos">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>IP</th>
|
|
||||||
<th>MAC</th>
|
|
||||||
<th>Vendor</th>
|
|
||||||
<th>Hostname</th>
|
|
||||||
<th>Start</th>
|
|
||||||
<th>End</th>
|
|
||||||
<th>Option Data</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
[table_data]
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
/*
|
||||||
$('#display-leases').DataTable({
|
$('#display-leases').DataTable({
|
||||||
dom: 'tip',
|
dom: 'tip',
|
||||||
responsive: true,
|
responsive: true,
|
||||||
"pageLength": 100,
|
"pageLength": 100,
|
||||||
"aaSorting": []
|
"aaSorting": []
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="row clearfix">
|
<div class="row clearfix">
|
||||||
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||||
<div class="card">
|
<div class="card hide_me">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<h2>Vendor List Count</h2>
|
<h2>Vendor List Count</h2>
|
||||||
<ul class="header-dropdown m-r--5">
|
<ul class="header-dropdown m-r--5">
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<div class="card hide_me">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<h2>MAC Address OUI Count by Vendor</h2>
|
<h2>MAC Address OUI Count by Vendor</h2>
|
||||||
</div>
|
</div>
|
||||||
|
@ -57,6 +57,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
$('.hide_me').hide();
|
||||||
|
|
||||||
var chart_data = [];
|
var chart_data = [];
|
||||||
$.getJSON( "/api/get_vendor_count", function( data ) {
|
$.getJSON( "/api/get_vendor_count", function( data ) {
|
||||||
$.each(data, function(k, v) {
|
$.each(data, function(k, v) {
|
||||||
|
@ -105,6 +107,9 @@
|
||||||
"aaSorting": [],
|
"aaSorting": [],
|
||||||
"order": [[ 2, "desc" ]]
|
"order": [[ 2, "desc" ]]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// $('table').fadeIn(100);
|
||||||
|
$('.hide_me').show();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
var express = require('express');
|
||||||
|
var router = express.Router();
|
||||||
|
var fs = require('fs');
|
||||||
|
var template_render = require('../lib/render_template.js');
|
||||||
|
|
||||||
|
function human_time (time){
|
||||||
|
var time = new Date(time);
|
||||||
|
var year = time.getFullYear();
|
||||||
|
var month = time.getMonth()+1;
|
||||||
|
var date1 = time.getDate();
|
||||||
|
var hour = time.getHours();
|
||||||
|
var minutes = time.getMinutes();
|
||||||
|
var seconds = time.getSeconds();
|
||||||
|
|
||||||
|
return year + "-" + month+"-"+date1+" "+hour+":"+minutes+":"+seconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
router.post('/', function(req, res, next) {
|
||||||
|
var request = req.body;
|
||||||
|
var search = request.search;
|
||||||
|
|
||||||
|
dhcp_leases = template_render.get_template("dhcp_lease_search");
|
||||||
|
|
||||||
|
table_data = '';
|
||||||
|
|
||||||
|
var count = 0;
|
||||||
|
for (var key in dhcp_lease_data) {
|
||||||
|
|
||||||
|
var matcher = new RegExp(search, "i");
|
||||||
|
|
||||||
|
if(
|
||||||
|
!matcher.test(dhcp_lease_data[key].mac_oui_vendor)
|
||||||
|
&& !matcher.test(dhcp_lease_data[key].host)
|
||||||
|
&& !matcher.test(key)
|
||||||
|
&& !matcher.test(dhcp_lease_data[key].mac)
|
||||||
|
&& !matcher.test(JSON.stringify(dhcp_lease_data[key].options, null, 2))
|
||||||
|
)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
table_row = '';
|
||||||
|
table_row = table_row + '<td>' + key + '</td>';
|
||||||
|
table_row = table_row + '<td>' + dhcp_lease_data[key].mac + '</td>';
|
||||||
|
table_row = table_row + '<td>' + dhcp_lease_data[key].mac_oui_vendor + '</td>';
|
||||||
|
table_row = table_row + '<td>' + (dhcp_lease_data[key].host ? dhcp_lease_data[key].host : '') + '</td>';
|
||||||
|
table_row = table_row + '<td>' + human_time(dhcp_lease_data[key].start * 1000) + '</td>';
|
||||||
|
table_row = table_row + '<td>' + human_time(dhcp_lease_data[key].end * 1000) + '</td>';
|
||||||
|
table_row = table_row + '<td>' +
|
||||||
|
'<button class="btn btn-default waves-effect option_data" lease="' + dhcp_lease_data[key].mac.split(":").join("") + '">Show</button>' +
|
||||||
|
'<pre style="display:none;margin-top:10px" id="' + dhcp_lease_data[key].mac.split(":").join("") + '">' + JSON.stringify(dhcp_lease_data[key].options, null, 2) + '</pre>' +
|
||||||
|
'</td>';
|
||||||
|
|
||||||
|
table_data = table_data + '<tr>' + table_row + '</tr>';
|
||||||
|
|
||||||
|
count++;
|
||||||
|
|
||||||
|
if(count >= 10000){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
table_data = template_render.set_template_variable(dhcp_leases, "table_data", table_data);
|
||||||
|
|
||||||
|
res.send(table_data);
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = router;
|
|
@ -18,36 +18,7 @@ function human_time (time){
|
||||||
router.get('/', function(req, res, next) {
|
router.get('/', function(req, res, next) {
|
||||||
dhcp_leases = template_render.get_template("dhcp_leases");
|
dhcp_leases = template_render.get_template("dhcp_leases");
|
||||||
|
|
||||||
table_data = '';
|
res.send(template_render.get_index_template(dhcp_leases, req.url));
|
||||||
|
|
||||||
var count = 0;
|
|
||||||
for (var key in dhcp_lease_data) {
|
|
||||||
|
|
||||||
table_row = '';
|
|
||||||
table_row = table_row + '<td>' + key + '</td>';
|
|
||||||
table_row = table_row + '<td>' + dhcp_lease_data[key].mac + '</td>';
|
|
||||||
table_row = table_row + '<td>' + dhcp_lease_data[key].mac_oui_vendor + '</td>';
|
|
||||||
table_row = table_row + '<td>' + (dhcp_lease_data[key].host ? dhcp_lease_data[key].host : '') + '</td>';
|
|
||||||
table_row = table_row + '<td>' + human_time(dhcp_lease_data[key].start * 1000) + '</td>';
|
|
||||||
table_row = table_row + '<td>' + human_time(dhcp_lease_data[key].end * 1000) + '</td>';
|
|
||||||
table_row = table_row + '<td>' +
|
|
||||||
'<button class="btn btn-default waves-effect option_data" lease="' + dhcp_lease_data[key].mac.split(":").join("") + '">Show</button>' +
|
|
||||||
'<pre style="display:none;margin-top:10px" id="' + dhcp_lease_data[key].mac.split(":").join("") + '">' + JSON.stringify(dhcp_lease_data[key].options, null, 2) + '</pre>' +
|
|
||||||
'</td>';
|
|
||||||
|
|
||||||
table_data = table_data + '<tr>' + table_row + '</tr>';
|
|
||||||
|
|
||||||
count++;
|
|
||||||
|
|
||||||
if(count >= 1000){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
table_data = template_render.set_template_variable(dhcp_leases, "table_data", table_data);
|
|
||||||
|
|
||||||
res.send(template_render.get_index_template(table_data, req.url));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
Loading…
Reference in New Issue