icinga-powershell-framework/lib/core/icingaagent/getters/Get-IcingaHostname.psm1
2022-03-17 12:26:39 +01:00

58 lines
1.8 KiB
PowerShell

function Get-IcingaHostname()
{
param(
[string]$Hostname,
[bool]$AutoUseFQDN = $FALSE,
[bool]$AutoUseHostname = $FALSE,
[bool]$UpperCase = $FALSE,
[bool]$LowerCase = $FALSE,
[switch]$ReadConstants = $FALSE
);
[string]$UseHostname = '';
if ($ReadConstants) {
if (Test-Path -Path (Join-Path -Path $Env:ProgramData -ChildPath 'icinga2\etc\icinga2\constants.conf')) {
# Read the constants conf
$FileContent = Get-Content -Path (Join-Path -Path $Env:ProgramData -ChildPath 'icinga2\etc\icinga2\constants.conf') -Encoding 'UTF8';
foreach ($line in $FileContent) {
if ($line.Contains('NodeName') -eq $FALSE) {
continue;
}
if ($line.Contains('const') -eq $FALSE -Or $line.Contains('=') -eq $FALSE -Or $line.Contains('"') -eq $FALSE) {
continue;
}
[int]$ValueIndex = $line.IndexOf('"') + 1;
$UseHostname = $line.SubString($ValueIndex, $line.Length - $ValueIndex);
if ($UseHostname[-1] -eq '"') {
$UseHostname = $UseHostname.Substring(0, $UseHostname.Length - 1);
}
break;
}
return $UseHostname
}
}
if ([string]::IsNullOrEmpty($Hostname) -eq $FALSE) {
$UseHostname = $Hostname;
} elseif ($AutoUseFQDN) {
$UseHostname = [System.Net.Dns]::GetHostEntry("localhost").HostName;
} else {
$UseHostname = [System.Net.Dns]::GetHostName();
}
if ($UpperCase) {
$UseHostname = $UseHostname.ToUpper();
} elseif ($LowerCase) {
$UseHostname = $UseHostname.ToLower();
}
return $UseHostname;
}