Fix customers display (#9048)

Was trying to inject sql
This commit is contained in:
Tony Murray 2018-08-21 15:45:37 -05:00 committed by GitHub
parent 4158615f85
commit 73b8dae345
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 22 deletions

View File

@ -1,22 +1,25 @@
<?php
use LibreNMS\Config;
// Generate a list of ports and then call the multi_bits grapher to generate from the list
$i = 0;
if (!is_array($config['customers_descr'])) {
$config['customers_descr'] = array($config['customers_descr']);
}
$cust_descrs = (array)Config::get('customers_descr', ['cust']);
$descr_type = "'".implode("', '", $config['customers_descr'])."'";
$sql = 'SELECT * FROM `ports` AS I, `devices` AS D WHERE `port_descr_descr` = ? AND D.device_id = I.device_id AND `port_descr_type` IN ' . dbGenPlaceholders(count($cust_descrs));
$param = $cust_descrs;
array_unshift($param, $vars['id']);
foreach (dbFetchRows('SELECT * FROM `ports` AS I, `devices` AS D WHERE `port_descr_type` IN (?) AND `port_descr_descr` = ? AND D.device_id = I.device_id', array(array($descr_type), $vars['id'])) as $port) {
$rrd_list = [];
foreach (dbFetchRows($sql, $param) as $port) {
$rrd_filename = get_port_rrdfile_path($port['hostname'], $port['port_id']); // FIXME: Unification OK?
if (rrdtool_check_rrd_exists($rrd_filename)) {
$rrd_list[$i]['filename'] = $rrd_filename;
$rrd_list[$i]['descr'] = $port['hostname'].'-'.$port['ifDescr'];
$rrd_list[$i]['descr_in'] = shorthost($port['hostname']);
$rrd_list[$i]['descr_out'] = makeshortif($port['ifDescr']);
$i++;
$rrd_list[] = [
'filename' => $rrd_filename,
'descr' => $port['hostname'] . '-' . $port['ifDescr'],
'descr_in' => shorthost($port['hostname']),
'descr_out' => makeshortif($port['ifDescr']),
];
}
}

View File

@ -1,17 +1,15 @@
<?php
if (!is_array($config['customers_descr'])) {
$config['customers_descr'] = array($config['customers_descr']);
}
use LibreNMS\Config;
$descr_type = "'".implode("', '", $config['customers_descr'])."'";
$cust_descrs = (array)Config::get('customers_descr', ['cust']);
$i = 0;
$sql = ' FROM `ports` LEFT JOIN `devices` AS `D` ON `ports`.`device_id` = `D`.`device_id` WHERE `port_descr_type` IN ' . dbGenPlaceholders(count($cust_descrs));
$param = $cust_descrs;
$sql = ' FROM `ports` LEFT JOIN `devices` AS `D` ON `ports`.`device_id` = `D`.`device_id` WHERE `port_descr_type` IN (?)';
$param[] = array($descr_type);
if (isset($searchPhrase) && !empty($searchPhrase)) {
$sql .= " AND (`port_descr_descr` LIKE '%$searchPhrase%' OR `ifName` LIKE '%$searchPhrase%' OR `ifDescr` LIKE '%$searchPhrase%' OR `ifAlias` LIKE '%$searchPhrase%' OR `D`.`hostname` LIKE '%$searchPhrase%' OR `port_descr_speed` LIKE '%$searchPhrase%' OR `port_descr_notes` LIKE '%$searchPhrase%')";
$sql .= " AND (`port_descr_descr` LIKE ? OR `ifName` LIKE ? OR `ifDescr` LIKE ? OR `ifAlias` LIKE ? OR `D`.`hostname` LIKE ? OR `port_descr_speed` LIKE ? OR `port_descr_notes` LIKE ?)";
array_push($param, "%$searchPhrase%", "%$searchPhrase%", "%$searchPhrase%", "%$searchPhrase%", "%$searchPhrase%", "%$searchPhrase%", "%$searchPhrase%");
}
$count_sql = "SELECT COUNT(DISTINCT(`port_descr_descr`)) $sql";
@ -41,11 +39,13 @@ if ($rowCount != -1) {
$sql = "SELECT `port_descr_descr` $sql";
foreach (dbFetchRows($sql, $param) as $customer) {
$i++;
$customer_name = $customer['port_descr_descr'];
foreach (dbFetchRows('SELECT * FROM `ports` WHERE `port_descr_type` IN (?) AND `port_descr_descr` = ?', array(array($descr_type), $customer['port_descr_descr'])) as $port) {
$port_query = 'SELECT * FROM `ports` WHERE `port_descr_type` IN ' . dbGenPlaceholders(count($cust_descrs)) . ' AND `port_descr_descr` = ?';
$port_params = $cust_descrs;
$port_params[] = $customer_name;
foreach (dbFetchRows($port_query, $port_params) as $port) {
$device = device_by_id_cache($port['device_id']);
$ifname = fixifname($device['ifDescr']);