Repository: metron
Updated Branches:
refs/heads/master f34affdb2 -> 174964832
METRON-1131: The Stellar REPL rejects valid hostnames for zookeeper in its CLI
options this closes apache/incubator-metron#715
Project: http://git-wip-us.apache.org/repos/asf/metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/metron/commit/17496483
Tree: http://git-wip-us.apache.org/repos/asf/metron/tree/17496483
Diff: http://git-wip-us.apache.org/repos/asf/metron/diff/17496483
Branch: refs/heads/master
Commit: 174964832eafba927ae4e7aa407d2a1100a8b776
Parents: f34affd
Author: cstella
Authored: Fri Aug 25 09:17:48 2017 -0400
Committer: cstella
Committed: Fri Aug 25 09:17:48 2017 -0400
--
.../shell/StellarShellOptionsValidator.java | 24 ++--
.../shell/StellarShellOptionsValidatorTest.java | 9
2 files changed, 22 insertions(+), 11 deletions(-)
--
http://git-wip-us.apache.org/repos/asf/metron/blob/17496483/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidator.java
--
diff --git
a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidator.java
b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidator.java
index 411c288..97f5b70 100644
---
a/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidator.java
+++
b/metron-stellar/stellar-common/src/main/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidator.java
@@ -21,21 +21,31 @@
package org.apache.metron.stellar.common.shell;
import java.io.File;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.function.Predicate;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.cli.CommandLine;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.validator.routines.InetAddressValidator;
public class StellarShellOptionsValidator {
private static final Pattern validPortPattern =
Pattern.compile("(^.*)[:](\\d+)$");
- private static final Pattern validHostNamePattern;
+ private static final Predicate hostnameValidator = hostname -> {
+if(StringUtils.isEmpty(hostname)) {
+ return false;
+}
+try {
+ InetAddress add = InetAddress.getByName(hostname);
+ return true;
+} catch (UnknownHostException e) {
+ return false;
+}
+ };
+
- static {
-validHostNamePattern = Pattern.compile(
-"^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)"
-+ "*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$");
- }
private static final InetAddressValidator inetAddressValidator =
InetAddressValidator
.getInstance();
@@ -79,7 +89,7 @@ public class StellarShellOptionsValidator {
String name = matcher.group(1);
Integer port = Integer.parseInt(matcher.group(2));
-if (!validHostNamePattern.matcher(name).matches() &&
!inetAddressValidator.isValid(name)) {
+if (!hostnameValidator.test(name) && !inetAddressValidator.isValid(name)) {
throw new IllegalArgumentException(
String.format("Zookeeper Option %s is not a valid host name or ip
address %s", name, z));
}
http://git-wip-us.apache.org/repos/asf/metron/blob/17496483/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidatorTest.java
--
diff --git
a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidatorTest.java
b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidatorTest.java
index 4f74308..52fef96 100644
---
a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidatorTest.java
+++
b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarShellOptionsValidatorTest.java
@@ -28,6 +28,7 @@ import org.junit.Assert;
import org.junit.Test;
import java.io.File;
+import java.util.regex.Pattern;
import static org.junit.Assert.*;
@@ -35,15 +36,15 @@ public class StellarShellOptionsValidatorTest {
@Test
public void validateOptions() throws Exception {
-String[] validZHostArg = new String[]{"-z", "host1:"};
+String[] validZHostArg = new String[]{"-z", "localhost:"};
String[] validZIPArg = new String[]{"-z", "10.10.10.3:"};
-String[] invalidZNoPortArg = new String[]{"-z", "host1"};
+String[] invalidZNoPortArg = new String[]{"-z", "youtube.com"};