diff --git a/html/pages/device/showconfig.inc.php b/html/pages/device/showconfig.inc.php
index 917e85f1bb..da57752357 100644
--- a/html/pages/device/showconfig.inc.php
+++ b/html/pages/device/showconfig.inc.php
@@ -103,10 +103,29 @@ if (is_admin()) {
}
}
else if ($config['oxidized']['enabled'] === true && isset($config['oxidized']['url'])) {
+ // Try with hostname as set in librenms first
+ $oxidized_hostname = $device['hostname'];
// fetch info about the node and then a list of versions for that node
- $node_info = json_decode(file_get_contents($config['oxidized']['url'].'/node/show/'.$device['hostname'].'?format=json'), true);
+ $node_info = json_decode(file_get_contents($config['oxidized']['url'].'/node/show/'.$oxidized_hostname.'?format=json'), true);
+
+ // Try other hostname format if Oxidized request failed
+ if (! $node_info) {
+ // Adjust hostname based on whether domain was already in it or not
+ if (strpos($oxidized_hostname, '.') !== false) {
+ // Use short name
+ $oxidized_hostname = strtok($device['hostname'], '.');
+ } else {
+ // Add domain if $config['mydomain'] is set
+ $oxidized_hostname = $config['mydomain'] ? $device['hostname'].'.'.$config['mydomain'] : $oxidized_hostname;
+ }
+ // Try Oxidized again with new hostname, if it has changed
+ if ($oxidized_hostname != $device['hostname']) {
+ $node_info = json_decode(file_get_contents($config['oxidized']['url'].'/node/show/'.$oxidized_hostname.'?format=json'), true);
+ }
+ }
+
if ($config['oxidized']['features']['versioning'] === true) { // fetch a list of versions
- $config_versions = json_decode(file_get_contents($config['oxidized']['url'].'/node/version?node_full='.(isset($node_info['full_name']) ? $node_info['full_name'] : $device['hostname']).'&format=json'), true);
+ $config_versions = json_decode(file_get_contents($config['oxidized']['url'].'/node/version?node_full='.(isset($node_info['full_name']) ? $node_info['full_name'] : $oxidized_hostname).'&format=json'), true);
}
$config_total = 1;
@@ -147,7 +166,7 @@ if (is_admin()) {
}
if (isset($previous_config)) {
- $url = $config['oxidized']['url'].'/node/version/diffs?node='.$device['hostname'].'&group=';
+ $url = $config['oxidized']['url'].'/node/version/diffs?node='.$oxidized_hostname.'&group=';
if (!empty($node_info['group'])) {
$url .= $node_info['group'];
}
@@ -156,11 +175,11 @@ if (is_admin()) {
$text = file_get_contents($url); // fetch diff
} else {
// fetch current_version
- $text = file_get_contents($config['oxidized']['url'].'/node/version/view?node='.$device['hostname'].'&group='.(!empty($node_info['group']) ? $node_info['group'] : '').'&oid='.$current_config['oid'].'&date='.urlencode($current_config['date']).'&num='.$current_config['version'].'&format=text');
+ $text = file_get_contents($config['oxidized']['url'].'/node/version/view?node='.$oxidized_hostname.'&group='.(!empty($node_info['group']) ? $node_info['group'] : '').'&oid='.$current_config['oid'].'&date='.urlencode($current_config['date']).'&num='.$current_config['version'].'&format=text');
}
}
else { // just fetch the only version
- $text = file_get_contents($config['oxidized']['url'].'/node/fetch/'.(!empty($node_info['group']) ? $node_info['group'].'/' : '').$device['hostname']);
+ $text = file_get_contents($config['oxidized']['url'].'/node/fetch/'.(!empty($node_info['group']) ? $node_info['group'].'/' : '').$oxidized_hostname);
}