diff --git a/html/includes/graphs/device/smokeping_all_common.inc.php b/html/includes/graphs/device/smokeping_all_common.inc.php
index edff0d7e5e..3549633bf3 100644
--- a/html/includes/graphs/device/smokeping_all_common.inc.php
+++ b/html/includes/graphs/device/smokeping_all_common.inc.php
@@ -38,7 +38,11 @@ foreach ($smokeping_files[$direction][$device['hostname']] as $source => $filena
$descr = rrdtool_escape($source, $descr_len);
- $filename = $config['smokeping']['dir'] . $filename;
+ if ($config['smokeping']['integration'] === true) {
+ $filename = $config['smokeping']['dir'] .'/'. $device['type'] .'/'. $filename;
+ } else {
+ $filename = $config['smokeping']['dir'] . $filename;
+ }
$rrd_options .= " DEF:median$i=".$filename.":median:AVERAGE ";
$rrd_options .= " DEF:loss$i=".$filename.":loss:AVERAGE";
$rrd_options .= " CDEF:ploss$i=loss$i,$pings,/,100,*";
diff --git a/html/includes/graphs/device/smokeping_all_common_avg.inc.php b/html/includes/graphs/device/smokeping_all_common_avg.inc.php
index 12681140ac..3178e613c6 100644
--- a/html/includes/graphs/device/smokeping_all_common_avg.inc.php
+++ b/html/includes/graphs/device/smokeping_all_common_avg.inc.php
@@ -39,7 +39,11 @@ foreach ($smokeping_files[$direction][$device['hostname']] as $source => $filena
$descr = rrdtool_escape($source, $descr_len);
- $filename = $config['smokeping']['dir'] . $filename;
+ if ($config['smokeping']['integration'] === true) {
+ $filename = $config['smokeping']['dir'] .'/'. $device['type'] .'/'. $filename;
+ } else {
+ $filename = $config['smokeping']['dir'] . $filename;
+ }
$rrd_options .= " DEF:median$i=".$filename.":median:AVERAGE ";
$rrd_options .= " CDEF:dm$i=median$i,UN,0,median$i,IF";
$rrd_options .= " DEF:loss$i=".$filename.":loss:AVERAGE";
diff --git a/html/includes/graphs/device/smokeping_common.inc.php b/html/includes/graphs/device/smokeping_common.inc.php
index c158e8267e..ce9df8a4e4 100644
--- a/html/includes/graphs/device/smokeping_common.inc.php
+++ b/html/includes/graphs/device/smokeping_common.inc.php
@@ -1,26 +1,3 @@
+$smokeping_files = get_smokeping_files($device);
diff --git a/html/includes/graphs/smokeping/auth.inc.php b/html/includes/graphs/smokeping/auth.inc.php
index 55e9f80eed..ff2d92795e 100644
--- a/html/includes/graphs/smokeping/auth.inc.php
+++ b/html/includes/graphs/smokeping/auth.inc.php
@@ -1,8 +1,8 @@
"500")
if($src['hostname'] == $config['own_hostname'])
{
- $filename = $config['smokeping']['dir'] . $device['hostname'].'.rrd';
- if (!file_exists($filename))
+ if ($config['smokeping']['integration'] === true) {
+ $filename_dir = $config['smokeping']['dir'] .'/'. $device['type'] .'/';
+ } else {
+ $filename_dir = $config['smokeping']['dir'];
+ }
+ if (!file_exists($filename_dir.$device['hostname'].'.rrd'))
{
// Try with dots in hostname replaced by underscores
- $filename = $config['smokeping']['dir'] . str_replace(".", "_", $device['hostname']).'.rrd';
+ $filename = $filename_dir . str_replace(".", "_", $device['hostname']).'.rrd';
}
} else {
- $filename = $config['smokeping']['dir'] . $device['hostname'] .'~'.$src['hostname'].'.rrd';
+ $filename = $filename_dir . $device['hostname'] .'~'.$src['hostname'].'.rrd';
if (!file_exists($filename))
{
// Try with dots in hostname replaced by underscores
- $filename = $config['smokeping']['dir'] . str_replace(".", "-", $device['hostname']) .'~'.$src['hostname'].'.rrd';
+ $filename = $filename_dir . str_replace(".", "-", $device['hostname']) .'~'.$src['hostname'].'.rrd';
}
}
diff --git a/html/pages/device.inc.php b/html/pages/device.inc.php
index c72daf9bfe..93149f601b 100644
--- a/html/pages/device.inc.php
+++ b/html/pages/device.inc.php
@@ -138,34 +138,7 @@ if (device_permitted($vars['device']) || $check_device == $vars['device'])
');
}
- if (isset($config['smokeping']['dir']))
- {
- $smokeping_files = array();
- if ($handle = opendir($config['smokeping']['dir']))
- {
- while (false !== ($file = readdir($handle)))
- {
- if ($file != "." && $file != "..")
- {
- if (eregi(".rrd", $file))
- {
- if (eregi("~", $file))
- {
- list($target,$slave) = explode("~", str_replace(".rrd", "", $file));
- $target = str_replace("_", ".", $target);
- $smokeping_files['in'][$target][$slave] = $file;
- $smokeping_files['out'][$slave][$target] = $file;
- } else {
- $target = str_replace(".rrd", "", $file);
- $target = str_replace("_", ".", $target);
- $smokeping_files['in'][$target][$config['own_hostname']] = $file;
- $smokeping_files['out'][$config['own_hostname']][$target] = $file;
- }
- }
- }
- }
- }
- }
+ $smokeping_files = get_smokeping_files($device);
if (count($smokeping_files['in'][$device['hostname']]) || count($smokeping_files['out'][$device['hostname']]))
{
diff --git a/includes/common.php b/includes/common.php
index 8e7499841d..514d42e180 100644
--- a/includes/common.php
+++ b/includes/common.php
@@ -747,4 +747,34 @@ function get_graph_subtypes($type)
return $types;
}
-?>
+function get_smokeping_files($device) {
+ global $config;
+ if (isset($config['smokeping']['dir'])) {
+ $smokeping_files = array();
+ if ($config['smokeping']['integration'] === true) {
+ $smokeping_dir = $config['smokeping']['dir'] . "/" . $device['type'];
+ } else {
+ $smokeping_dir = $config['smokeping']['dir'];
+ }
+ if ($handle = opendir($smokeping_dir)) {
+ while (false !== ($file = readdir($handle))) {
+ if ($file != "." && $file != "..") {
+ if (eregi(".rrd", $file)) {
+ if (eregi("~", $file)) {
+ list($target,$slave) = explode("~", str_replace(".rrd", "", $file));
+ $target = str_replace("_", ".", $target);
+ $smokeping_files['in'][$target][$slave] = $file;
+ $smokeping_files['out'][$slave][$target] = $file;
+ } else {
+ $target = str_replace(".rrd", "", $file);
+ $target = str_replace("_", ".", $target);
+ $smokeping_files['in'][$target][$config['own_hostname']] = $file;
+ $smokeping_files['out'][$config['own_hostname']][$target] = $file;
+ }
+ }
+ }
+ }
+ }
+ }
+ return $smokeping_files;
+}