From ac54bae7278d8653a0ae85749a9da8e3886991c7 Mon Sep 17 00:00:00 2001 From: Mathieu Date: Sat, 3 Dec 2022 10:46:36 +0100 Subject: [PATCH] Make IPA auto-configuration more robust --- .../src/org/argeo/cms/directory/ldap/IpaUtils.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/org.argeo.cms/src/org/argeo/cms/directory/ldap/IpaUtils.java b/org.argeo.cms/src/org/argeo/cms/directory/ldap/IpaUtils.java index cf6ad9390..b14c090ab 100644 --- a/org.argeo.cms/src/org/argeo/cms/directory/ldap/IpaUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/directory/ldap/IpaUtils.java @@ -79,9 +79,18 @@ public class IpaUtils { public static String kerberosDomainFromDns() { String kerberosDomain; try (DnsBrowser dnsBrowser = new DnsBrowser()) { + // TODO retrieve hostname from CMS config InetAddress localhost = InetAddress.getLocalHost(); String hostname = localhost.getHostName(); - String dnsZone = hostname.substring(hostname.indexOf('.') + 1); + int dotIndex = hostname.indexOf('.'); + if (dotIndex <= 0) { + hostname = localhost.getCanonicalHostName(); + dotIndex = hostname.indexOf('.'); + if (dotIndex <= 0) + throw new IllegalArgumentException( + "Cannot extract DNS zone from hostname " + hostname + " (" + localhost + ")"); + } + String dnsZone = hostname.substring(dotIndex + 1); kerberosDomain = dnsBrowser.getRecord("_kerberos." + dnsZone, "TXT"); return kerberosDomain; } catch (IOException e) { -- 2.30.2