Configurable device display name (#13528)

* Configurable device display name
You can just set the display name in device settings.

It also accepts simple template format with  the variables: hostname, sysName, sysName_fallback, ip

Default controlled by device_display_default, (set from old force_hostname_to_sysname and force_ip_to_sysname settings

* remove second argument to format_hostname()

* Style fixes

* Update schema

* update phpstan baseline

* Improved settings strings (and add for translation)
This commit is contained in:
Tony Murray
2021-11-18 15:46:22 -06:00
committed by GitHub
parent 69d0753ec4
commit 790c4b3402
24 changed files with 196 additions and 159 deletions
+10 -18
View File
@@ -652,28 +652,20 @@ function inet6_ntop($ip)
* If hostname is an ip, use return sysName
*
* @param array $device (uses hostname and sysName fields)
* @param string $hostname
* @return string
*/
function format_hostname($device, $hostname = null)
function format_hostname($device): string
{
if (empty($hostname)) {
$hostname = $device['hostname'];
}
$hostname = $device['hostname'] ?? 'invalid hostname';
$hostname_is_ip = IP::isValid($hostname);
$sysName = empty($device['sysName']) ? $hostname : $device['sysName'];
if (Config::get('force_hostname_to_sysname') && ! empty($device['sysName'])) {
if (\LibreNMS\Util\Validate::hostname($hostname) && ! IP::isValid($hostname)) {
return $device['sysName'];
}
}
if (Config::get('force_ip_to_sysname') && ! empty($device['sysName'])) {
if (IP::isValid($hostname)) {
return $device['sysName'];
}
}
return $hostname;
return \App\View\SimpleTemplate::parse(empty($device['display']) ? Config::get('device_display_default', '{{ $hostname }}') : $device['display'], [
'hostname' => $hostname,
'sysName' => $sysName,
'sysName_fallback' => $hostname_is_ip ? $sysName : $hostname,
'ip' => empty($device['overwrite_ip']) ? ($hostname_is_ip ? $device['hostname'] : $device['ip'] ?? '') : $device['overwrite_ip'],
]);
}
/**