* fix anomalous name * add gather worker * fix encoding of binary storage * store results back to job * now parsing mbis report to translate * fix the broken report parser * rename gather to snapshot * implement walk code copied from SNMP::Info * can now bulkwalk and parse mibs report and store resolved walk in cache * add func/glob aliasing broken * better aliasing * implement aliasing from globals and funcs * fix regexp for matching netdisco-mibs report * fake cache entry for all ND2 methods called, add comments * also save to logs/snapshots/IP * add doc for netdisco-do * add is_pseudo column to device table * support for loading cache for pseudo devices * check for hrSystemUptime as well as sysUpTime for snmp connect * display pseudo devices with yellow pill for name * color all cells for layers for pseudo * no need to b64 encode binary data in scalars as we b64 whole thing after * tweaked uptime check * store snapshot to database instead of Job * expose snapshots in device details tab * small ux improvements on snap download * fixes for errors in subnet mask searching * hide snapshot management for pseudo devices * update to use new netdisco-mibs object cache * update for new format oids file * start of work on loading walk into db for browsing * store values and meta * add auto increment col and oid index to browser * start web plugin for browser * add virtual search for oid children * have all oid in separte table (60 seconds load on my laptop) * rename table and add relation * store oid as int array * fix sql for children * make jstree start working * working very slow tree expand * fix to work when first displaying tree * store both oid and oid_parts * simplify SQL to speed up (more complicated perl) * fix sql bug, add better index, prettify tree * render the snmp node detail * add node template, make scrollable, pretty print data values (insecure) * store munge hint * some dubious code to munge the data * make sure to filter by IP on device_browser * make safer the rendering of value data (but need to come back to key ordering) * fix sorting on object values * limit the opening of child nodes to keep response good and unclutter * factor out the munge and make safer * reject unknown mungers * show the munger and option (not working) to change * additional js for munge select * complete custom munge * change so that saving to database is only at CLI and on request * hide snmp tab if no browser rows in the db * add helpful message when no browser rows for the device * stub handler for search and add recurse control * working search * minor ui fixes * implement typeahead for leaf search * limit rows in typeahead * make sure device_browser is visited in delete and renumber * add requirements for this branch * update manifest * make sure node search and typeahead are restricted to current device only
96 lines
5.1 KiB
Plaintext
96 lines
5.1 KiB
Plaintext
<table id="data-table" class="table table-striped table-bordered" width="100%" cellspacing="0">
|
|
<thead>
|
|
<tr>
|
|
<th class="nd_center-cell">Device Name</th>
|
|
<th class="nd_center-cell">Device IP</th>
|
|
<th class="nd_center-cell">Number of Ports</th>
|
|
<th class="nd_center-cell">Services</th>
|
|
<th class="nd_center-cell">Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="nd_center-cell"><input data-form="add" name="name" type="text"></td>
|
|
<td class="nd_center-cell"><input data-form="add" name="ip" type="text"></td>
|
|
<td class="nd_center-cell"><input data-form="add" name="ports" type="number" value="1"></td>
|
|
<td class="nd_center-cell">
|
|
<span class="badge"> </span><span class="badge"> </span>
|
|
<a class="nd_layer-three-link" href="#" rel="tooltip" data-placement="bottom" data-offset="3" data-title="Enable Arpnip"><span class="badge">3</span></a><span class="badge"> </span><span class="badge"> </span><span class="badge"> </span><span class="badge"> </span>
|
|
<input data-form="add" name="layers" type="hidden" value="00000000">
|
|
</td>
|
|
<td class="nd_center-cell">
|
|
<button class="btn btn-small nd_adminbutton" name="add" type="submit"><i class="icon-plus-sign"></i> Add</button>
|
|
</td>
|
|
</tr>
|
|
[% SET count = 0 %]
|
|
[% WHILE (row = results.next) %]
|
|
[% SET count = count + 1 %]
|
|
<tr>
|
|
<td class="nd_center-cell"><a class="nd_linkcell"
|
|
href="[% uri_for('/device') | none %]?q=[% row.ip | uri %]">[% row.name | html_entity %]</a></td>
|
|
<td class="nd_center-cell">[% row.ip | html_entity %]</td>
|
|
<td class="nd_center-cell">
|
|
<input data-form="update" name="ports" type="number" value="[% row.port_count | html_entity %]">
|
|
</td>
|
|
<td class="nd_center-cell">
|
|
<span class="badge[% ' badge-success' IF row.layers.substr(7,1) %]">[% row.layers.substr(7,1) ? '1' : ' ' | none %]</span><span class="badge[% ' badge-success' IF row.layers.substr(6,1) %]">[% row.layers.substr(6,1) ? '2' : ' ' | none %]</span>
|
|
<a class="nd_layer-three-link" href="#" rel="tooltip" data-placement="bottom" data-offset="3" data-title="Enable Arpnip"><span class="badge[% ' badge-success' IF row.layers.substr(5,1) %]">3</span></a><span class="badge[% ' badge-success' IF row.layers.substr(4,1) %]">[% row.layers.substr(4,1) ? '4' : ' ' | none %]</span><span class="badge[% ' badge-success' IF row.layers.substr(3,1) %]">[% row.layers.substr(3,1) ? '5' : ' ' | none %]</span><span class="badge[% ' badge-success' IF row.layers.substr(2,1) %]">[% row.layers.substr(2,1) ? '6' : ' ' | none %]</span><span class="badge[% ' badge-success' IF row.layers.substr(1,1) %]">[% row.layers.substr(1,1) ? '7' : ' ' | none %]</span>
|
|
<input data-form="update" name="layers" type="hidden" value="[% row.layers | html_entity %]">
|
|
</td>
|
|
<td class="nd_center-cell">
|
|
<input data-form="update" name="name" type="hidden" value="[% row.name | html_entity %]">
|
|
<input data-form="update" name="ip" type="hidden" value="[% row.ip | html_entity %]">
|
|
<button class="btn nd_adminbutton" name="update" type="submit"><i class="icon-save text-warning"></i></button>
|
|
|
|
<button class="btn" data-toggle="modal"
|
|
data-target="#nd_devdel-[% count | html_entity %]" type="button"><i class="icon-trash text-error"></i></button>
|
|
|
|
<div id="nd_devdel-[% count | html_entity %]" class="nd_modal nd_deep-horizon modal hide fade" tabindex="-1"
|
|
role="dialog" aria-labelledby="nd_devdel-label-[% count | html_entity %]" aria-hidden="true">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
|
|
<h3 id="nd_devdel-label-[% count | html_entity %]">Are you sure?</h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<blockquote>
|
|
<p class="text-info">
|
|
Pseudo-device "[% row.name | html_entity %] / [% row.ip | html_entity %]" will be deleted.</p>
|
|
</blockquote>
|
|
<input data-form="delete" name="device" type="hidden" value="[% row.ip | html_entity %]">
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button class="btn btn-success" data-dismiss="modal" aria-hidden="true">Cancel</button>
|
|
<button class="btn btn-danger nd_adminbutton" name="delete" data-dismiss="modal">Confirm</button>
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('#data-table').dataTable({
|
|
"columnDefs": [ {
|
|
"targets": [ 2, 3 ],
|
|
"orderable": false,
|
|
"searchable": false
|
|
} ],
|
|
[% INCLUDE 'ajax/datatabledefaults.tt' -%]
|
|
} );
|
|
$('.nd_layer-three-link').click(function() {
|
|
var badge = $(this).children('span').first();
|
|
var layers = $(this).parent().children('input').first();
|
|
$(badge).toggleClass('badge-success');
|
|
if ($(badge).hasClass('badge-success')) {
|
|
$(layers).attr('value', '00000100');
|
|
}
|
|
else {
|
|
$(layers).attr('value', '00000000');
|
|
}
|
|
});
|
|
} );
|
|
</script>
|
|
|