From: Mathieu Date: Sat, 3 Dec 2022 09:46:36 +0000 (+0100) Subject: Make IPA auto-configuration more robust X-Git-Tag: v2.3.14~2 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=ac54bae7278d8653a0ae85749a9da8e3886991c7 Make IPA auto-configuration more robust --- 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) {