Repository: incubator-slider
Updated Branches:
  refs/heads/develop 68b96b708 -> 7ee66cd7c


SLIDER-1261 CSR creation fails for long hostnames greater than 64 chars


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/7ee66cd7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/7ee66cd7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/7ee66cd7

Branch: refs/heads/develop
Commit: 7ee66cd7cc049fecc2d553f5541147702e81a5b0
Parents: 68b96b7
Author: Gour Saha <gourks...@apache.org>
Authored: Wed Feb 21 22:52:47 2018 -0800
Committer: Gour Saha <gourks...@apache.org>
Committed: Wed Feb 21 22:52:47 2018 -0800

----------------------------------------------------------------------
 .../apache/slider/common/tools/SliderUtils.java | 10 ++++++++++
 .../services/security/CertificateManager.java   |  5 ++---
 .../slider/common/tools/TestSliderUtils.java    | 21 ++++++++++++++++++++
 3 files changed, 33 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7ee66cd7/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java 
b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
index 8fdf77f..d834c2e 100644
--- a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
+++ b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
@@ -2650,4 +2650,14 @@ public final class SliderUtils {
     }
     return prefix;
   }
+
+  public static String extractDomainNameFromFQDN(String fqdn) {
+    if (fqdn != null) {
+      fqdn = fqdn.trim();
+      if (fqdn.matches("[^\\.]+\\..+")) {
+        fqdn = fqdn.replaceFirst("[^\\.]+\\.", "");
+      }
+    }
+    return fqdn;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7ee66cd7/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
 
b/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
index a642369..187b470 100644
--- 
a/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
+++ 
b/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
@@ -20,6 +20,7 @@ package org.apache.slider.server.services.security;
 import com.google.inject.Singleton;
 import org.apache.commons.io.FileUtils;
 import org.apache.slider.common.SliderKeys;
+import org.apache.slider.common.tools.SliderUtils;
 import org.apache.slider.core.conf.MapOperations;
 import org.apache.slider.core.exceptions.SliderException;
 import org.slf4j.Logger;
@@ -473,10 +474,8 @@ public class CertificateManager {
   private String getSubjectDN(String hostname, String containerId,
                               String appName) {
     return String.format("/CN=%s%s%s",
-                         hostname,
+                         SliderUtils.extractDomainNameFromFQDN(hostname),
                          containerId != null ? "/OU=" + containerId : "",
                          appName != null ? "/OU=" + appName : "");
-
-
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/7ee66cd7/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java
----------------------------------------------------------------------
diff --git 
a/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java 
b/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java
index deca7a8..7bf1906 100644
--- 
a/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java
+++ 
b/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java
@@ -173,4 +173,25 @@ public class TestSliderUtils {
     Assert.assertEquals("Should be null", msg,
         SliderUtils.extractFirstLine(msg));
   }
+
+  @Test
+  public void testExtractDomainNameFromFQDN() {
+    String fqdn = 
"azure-cluster-c0.k4kldeirxsoutbyybgqoiqdsgg.fx.cloudapp.net";
+    Assert.assertEquals("Returned domainname is incorrect",
+        "k4kldeirxsoutbyybgqoiqdsgg.fx.cloudapp.net",
+        SliderUtils.extractDomainNameFromFQDN(fqdn));
+    fqdn = "";
+    Assert.assertEquals("Returned domainname should be empty string", "",
+        SliderUtils.extractDomainNameFromFQDN(fqdn));
+    fqdn = null;
+    Assert.assertEquals("Returned domainname should be null", null,
+        SliderUtils.extractDomainNameFromFQDN(fqdn));
+    fqdn = "azure-cluster-c0";
+    Assert.assertEquals("Returned domainname should be same as fqdn",
+        "azure-cluster-c0", SliderUtils.extractDomainNameFromFQDN(fqdn));
+    // should handle whitespaces as well
+    fqdn = " www.example.com";
+    Assert.assertEquals("Returned domainname is incorrect", "example.com",
+        SliderUtils.extractDomainNameFromFQDN(fqdn));
+  }
 }

Reply via email to