Make IPA auto-configuration more robust
authorMathieu <mbaudier@argeo.org>
Sat, 3 Dec 2022 09:46:36 +0000 (10:46 +0100)
committerMathieu <mbaudier@argeo.org>
Sat, 3 Dec 2022 09:46:36 +0000 (10:46 +0100)
org.argeo.cms/src/org/argeo/cms/directory/ldap/IpaUtils.java

index cf6ad93907cd1995546b1ece7ac01a0ebb4cfa40..b14c090abbf65dd4de8d5af0a92e2214af090d1e 100644 (file)
@@ -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) {