Observium_CE/html/data-pick.php

485 lines
16 KiB
PHP
Executable File

<?php
// ******************************************
// sensible defaults
$mapdir = 'configs';
$observium_base = '../../';
$observium_url = '/';
$ignore_observium = FALSE;
$config['base_url'] = $observium_url;
include_once("../includes/observium.inc.php");
include($config['html_dir'] . "/includes/authenticate.inc.php");
// Don't run if weathermap isn't enabled
if (!$config['weathermap']['enable'] || $_SESSION['userlevel'] < 7) {
die();
}
$config['base_url'] = $config['url_path'] ?? $observium_url;
$observium_found = TRUE;
// ******************************************
function js_escape($str) {
$str = str_replace([ '\\', "'" ], [ '\\\\', "\\\'" ], $str);
return ("'" . $str . "'");
}
if (isset($_REQUEST['command']) && $_REQUEST["command"] == 'link_step2') {
$dataid = (int)$_REQUEST['dataid'];
?>
<html>
<head>
<script type="text/javascript">
function update_source_step2(graphid) {
var graph_url, hover_url;
var base_url = '<?php echo isset($config['base_url']) ? $config['base_url'] : ''; ?>';
if (typeof window.opener == "object") {
graph_url = base_url + 'graph.php?height=100&width=512&device=' + graphid + '&type=device_bits&legend=no';
info_url = base_url + 'device/device=' + graphid + '/';
opener.document.forms["frmMain"].node_new_name.value = 'test';
opener.document.forms["frmMain"].node_label.value = 'testing';
opener.document.forms["frmMain"].link_infourl.value = info_url;
opener.document.forms["frmMain"].link_hover.value = graph_url;
}
self.close();
}
window.onload = update_source_step2(<?php echo $graphid; ?>);
</script>
</head>
<body>
This window should disappear in a moment.
</body>
</html>
<?php
// end of link step 2
}
if (isset($_REQUEST['command']) && $_REQUEST["command"] == 'link_step1') {
?>
<html>
<head>
<script type="text/javascript" src="editor-resources/jquery-latest.min.js"></script>
<script type="text/javascript">
function filterlist(previous) {
var filterstring = $('input#filterstring').val();
if (filterstring == '') {
$('ul#dslist > li').show();
if ($('#ignore_desc').is(':checked')) {
$("ul#dslist > li:contains('Desc::')").hide();
}
} else if (filterstring != previous) {
$('ul#dslist > li').hide();
$("ul#dslist > li:contains('" + filterstring + "')").show();
if ($('#ignore_desc').is(':checked')) {
$("ul#dslist > li:contains('Desc::')").hide();
}
} else if (filterstring == previous) {
if ($('#ignore_desc').is(':checked')) {
$("ul#dslist > li:contains('Desc::')").hide();
} else {
$('ul#dslist > li').hide();
$("ul#dslist > li:contains('" + filterstring + "')").show();
}
}
}
function filterignore() {
if ($('#ignore_desc').is(':checked')) {
$("ul#dslist > li:contains('Desc::')").hide();
} else {
//$('ul#dslist > li').hide();
$("ul#dslist > li:contains('" + previous + "')").show();
}
}
$(document).ready(function () {
$('span.filter').keyup(function () {
var previous = $('input#filterstring').val();
setTimeout(function () {
filterlist(previous)
}, 500);
}).show();
$('span.ignore').click(function () {
var previous = $('input#filterstring').val();
setTimeout(function () {
filterlist(previous)
}, 500);
});
});
function update_source_step2(graphid, name, portid, ifAlias, ifDesc, ifIndex) {
var graph_url, hover_url;
var base_url = '<?php echo isset($config['base_url']) ? $config['base_url'] : ''; ?>';
if (typeof window.opener == "object") {
graph_url = base_url + 'graph.php?height=100&width=512&id=' + portid + '&type=port_bits&legend=no';
info_url = base_url + 'graphs/type=port_bits/id=' + portid + '/';
opener.document.forms["frmMain"].node_new_name.value = 'test';
opener.document.forms["frmMain"].node_label.value = 'testing';
opener.document.forms["frmMain"].link_infourl.value = info_url;
opener.document.forms["frmMain"].link_hover.value = graph_url;
}
self.close();
}
function update_source_step1(dataid, name, portid, ifAlias, ifDesc, ifIndex) {
// This must be the section that looks after link properties
var newlocation;
var fullpath;
var rra_path = <?php echo js_escape($config['install_dir'] . '/rrd/'); ?>+name + '/port-';
if (typeof window.opener == "object") {
//fullpath = rra_path + ifIndex + '.rrd:INOCTETS:OUTOCTETS';
fullpath = 'obs_port:'+portid;
//if (document.forms['mini'].aggregate.checked) {
// opener.document.forms["frmMain"].link_target.value = opener.document.forms["frmMain"].link_target.value + " " + fullpath;
//} else {
opener.document.forms["frmMain"].link_target.value = fullpath;
//}
}
if (document.forms['mini'].overlib.checked) {
window.onload = update_source_step2(dataid, name, portid, ifAlias, ifDesc, ifIndex);
} else {
self.close();
}
}
function applyDSFilterChange(objForm) {
strURL = '?host_id=' + objForm.host_id.value;
strURL = strURL + '&command=link_step1';
if (objForm.overlib.checked) {
strURL = strURL + "&overlib=1";
} else {
strURL = strURL + "&overlib=0";
}
// document.frmMain.link_bandwidth_out_cb.checked
if (objForm.aggregate.checked) {
strURL = strURL + "&aggregate=1";
} else {
strURL = strURL + "&aggregate=0";
}
document.location = strURL;
}
</script>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 10pt;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
ul {
border: 1px solid black;
}
ul li.row0 {
background: #ddd;
}
ul li.row1 {
background: #ccc;
}
ul li {
border-bottom: 1px solid #aaa;
border-top: 1px solid #eee;
padding: 2px;
}
ul li a {
text-decoration: none;
color: black;
}
</style>
<title>Pick a data source</title>
</head>
<body>
<?php
$host_id = -1;
$overlib = TRUE;
$aggregate = FALSE;
if (isset($_REQUEST['aggregate'])) {
$aggregate = ($_REQUEST['aggregate'] == 0 ? FALSE : TRUE);
}
if (isset($_REQUEST['overlib'])) {
$overlib = ($_REQUEST['overlib'] == 0 ? FALSE : TRUE);
}
if (isset($_REQUEST['host_id'])) {
$host_id = (int)$_REQUEST['host_id'];
}
$hosts = dbFetchRows("SELECT `device_id`,`hostname` FROM `devices` ORDER BY `hostname`");
?>
<h3>Pick an Observium port:</h3>
<form name="mini">
<?php
if (!safe_empty($hosts)) {
print 'Host: <select name="host_id" onChange="applyDSFilterChange(document.mini)">';
print '<option ' . ($host_id == -1 ? 'SELECTED' : '') . ' value="-1">Any</option>';
print '<option ' . ($host_id == 0 ? 'SELECTED' : '') . ' value="0">None</option>';
foreach ($hosts as $host) {
print '<option ';
if ($host_id == $host['device_id']) {
print " SELECTED ";
}
print 'value="' . $host['device_id'] . '">' . $host['hostname'] . '</option>';
}
print '</select><br />';
}
print '<span class="filter" style="display: none;">Filter: <input id="filterstring" name="filterstring" size="20"> (case-sensitive)<br /></span>';
print '<input id="overlib" name="overlib" type="checkbox" value="yes" ' . ($overlib ? 'CHECKED' : '') . '> <label for="overlib">Also set OVERLIBGRAPH and INFOURL.</label><br />';
print '<input id="aggregate" name="aggregate" type="checkbox" value="yes" ' . ($aggregate ? 'CHECKED' : '') . '> <label for="aggregate">Append TARGET to existing one (Aggregate)</label><br />';
print '<span class="ignore"><input id="ignore_desc" name="ignore_desc" type="checkbox" value="yes"> <label for="ignore_desc">Ignore blank interface descriptions</label></span>';
print '</form><div class="listcontainer"><ul id="dslist">';
$query = "SELECT devices.device_id,hostname,ports.port_id,ports.ifAlias,ports.ifIndex,ports.ifDescr FROM devices LEFT JOIN ports ON devices.device_id=ports.device_id WHERE ports.disabled=0";
if ($host_id > 0) {
$query .= " AND devices.device_id='$host_id'";
}
$query .= " ORDER BY hostname,ports.ifAlias";
$ports = dbFetchRows($query);
$i = 0;
if (count($ports) > 0) {
foreach ($ports as $port) {
echo "<li class=\"row" . ($i % 2) . "\">";
$key = $port['device_id'] . "','" . $port['hostname'] . "','" . $port['port_id'] . "','" . addslashes($port['ifAlias']) . "','" . addslashes($port['ifDescr']) . "','" . $port['ifIndex'];
echo "<a href=\"#\" onclick=\"update_source_step1('$key')\">
<span style='color:darkred'>" . $port['hostname'] . "</span> <b>|</b>
<span style='color:darkblue'>" . $port['ifDescr'] . "</span> <b>|</b> " .
$port['ifAlias'] . "</a>";
echo "</li>\n";
$i++;
}
} else {
print "<li>No results...</li>";
}
?>
</ul>
</div>
</body>
</html>
<?php
} // end of link step 1
if (isset($_REQUEST['command']) && $_REQUEST["command"] == 'node_step1') {
$host_id = -1;
$overlib = TRUE;
$aggregate = FALSE;
if (isset($_REQUEST['aggregate'])) {
$aggregate = ($_REQUEST['aggregate'] == 0 ? FALSE : TRUE);
}
if (isset($_REQUEST['overlib'])) {
$overlib = ($_REQUEST['overlib'] == 0 ? FALSE : TRUE);
}
if (isset($_REQUEST['host_id'])) {
$host_id = (int)$_REQUEST['host_id'];
}
$hosts = dbFetchRows("SELECT `device_id` AS `id`,`hostname` as `name` FROM `devices` ORDER BY `hostname`");
?>
<html>
<head>
<script type="text/javascript" src="editor-resources/jquery-latest.min.js"></script>
<script type="text/javascript">
function filterlist(previous) {
var filterstring = $('input#filterstring').val();
if (filterstring == '') {
$('ul#dslist > li').show();
return;
}
if (filterstring != previous) {
$('ul#dslist > li').hide();
$("ul#dslist > li:contains('" + filterstring + "')").show();
//$('ul#dslist > li').contains(filterstring).show();
}
}
$(document).ready(function () {
$('span.filter').keyup(function () {
var previous = $('input#filterstring').val();
setTimeout(function () {
filterlist(previous)
}, 500);
}).show();
});
function applyDSFilterChange(objForm) {
strURL = '?host_id=' + objForm.host_id.value;
strURL = strURL + '&command=node_step1';
if (objForm.overlib.checked) {
strURL = strURL + "&overlib=1";
} else {
strURL = strURL + "&overlib=0";
}
document.location = strURL;
}
</script>
<script type="text/javascript">
function update_source_step1(graphid, name) {
// This is the section that sets the Node Properties
var graph_url, hover_url;
var base_url = '<?php echo($config['base_url'] ?? ''); ?>';
if (typeof window.opener == "object") {
graph_url = base_url + 'graph.php?height=100&width=512&device=' + graphid + '&type=device_bits&legend=no';
info_url = base_url + 'device/device=' + graphid + '/';
// only set the overlib URL unless the box is checked
if (document.forms['mini'].overlib.checked) {
opener.document.forms["frmMain"].node_infourl.value = info_url;
}
opener.document.forms["frmMain"].node_hover.value = graph_url;
opener.document.forms["frmMain"].node_new_name.value = name;
opener.document.forms["frmMain"].node_label.value = name;
}
self.close();
}
</script>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 10pt;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
ul {
border: 1px solid black;
}
ul li.row0 {
background: #ddd;
}
ul li.row1 {
background: #ccc;
}
ul li {
border-bottom: 1px solid #aaa;
border-top: 1px solid #eee;
padding: 2px;
}
ul li a {
text-decoration: none;
color: black;
}
</style>
<title>Pick a graph</title>
</head>
<body>
<h3>Pick a graph:</h3>
<form name="mini">
<?php
if (!safe_empty($hosts)) {
print 'Host: <select name="host_id" onChange="applyDSFilterChange(document.mini)">';
print '<option ' . ($host_id == -1 ? 'SELECTED' : '') . ' value="-1">Any</option>';
print '<option ' . ($host_id == 0 ? 'SELECTED' : '') . ' value="0">None</option>';
foreach ($hosts as $host) {
print '<option ';
if ($host_id == $host['id']) {
print " SELECTED ";
}
print 'value="' . $host['id'] . '">' . $host['name'] . '</option>';
}
print '</select><br />';
}
print '<span class="filter" style="display: none;">Filter: <input id="filterstring" name="filterstring" size="20"> (case-sensitive)<br /></span>';
print '<input id="overlib" name="overlib" type="checkbox" value="yes" ' . ($overlib ? 'CHECKED' : '') . '> <label for="overlib">Set both OVERLIBGRAPH and INFOURL.</label><br />';
print '</form><div class="listcontainer"><ul id="dslist">';
if (!empty($SQL_picklist)) {
foreach (dbFetchRows($SQL_picklist) as $queryrows) {
echo "<li>";
$key = $queryrows['id'];
$name = $queryrows['name'];
echo "<a href=\"#\" onclick=\"update_source_step1('$key','$name')\">" . $queryrows['name'] . "</a>";
echo "</li>\n";
$i++;
}
}
//..} else {
// print "No results...";
// }
?>
</ul>
</body>
</html>
<?php
} // end of node step 1
// EOF