You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by ce...@apache.org on 2016/10/14 13:33:12 UTC
incubator-metron git commit: METRON-489: RemoveSubdomains Stellar
Function behaves incorrectly for some domains closes
apache/incubator-metron#300
Repository: incubator-metron
Updated Branches:
refs/heads/master 3a4023382 -> 7972a9093
METRON-489: RemoveSubdomains Stellar Function behaves incorrectly for some domains closes apache/incubator-metron#300
Project: http://git-wip-us.apache.org/repos/asf/incubator-metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metron/commit/7972a909
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metron/tree/7972a909
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metron/diff/7972a909
Branch: refs/heads/master
Commit: 7972a9093530ed85dad4c5e236ec023ec6f05bcd
Parents: 3a40233
Author: cstella <ce...@gmail.com>
Authored: Fri Oct 14 09:33:03 2016 -0400
Committer: cstella <ce...@gmail.com>
Committed: Fri Oct 14 09:33:03 2016 -0400
----------------------------------------------------------------------
.../common/dsl/functions/NetworkFunctions.java | 23 +++++------
.../stellar/network/RemoveSubdomainsTest.java | 42 ++++++++++++++++++++
2 files changed, 53 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/7972a909/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/functions/NetworkFunctions.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/functions/NetworkFunctions.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/functions/NetworkFunctions.java
index b481782..982986d 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/functions/NetworkFunctions.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/functions/NetworkFunctions.java
@@ -18,6 +18,7 @@
package org.apache.metron.common.dsl.functions;
+import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
import com.google.common.net.InternetDomainName;
@@ -78,24 +79,22 @@ public class NetworkFunctions {
@Override
public Object apply(List<Object> objects) {
+ if(objects.isEmpty()) {
+ return null;
+ }
Object dnObj = objects.get(0);
InternetDomainName idn = toDomainName(dnObj);
if(idn != null) {
String dn = dnObj.toString();
- String tld = idn.publicSuffix().toString();
- String suffix = Iterables.getFirst(Splitter.on(tld).split(dn), null);
- if(suffix != null)
- {
- String hostnameWithoutTLD = suffix.substring(0, suffix.length() - 1);
- String hostnameWithoutSubsAndTLD = Iterables.getLast(Splitter.on(".").split(hostnameWithoutTLD), null);
- if(hostnameWithoutSubsAndTLD == null) {
- return null;
- }
- return hostnameWithoutSubsAndTLD + "." + tld;
- }
- else {
+ String tld = Joiner.on(".").join(idn.publicSuffix().parts());
+ String suffix = dn.substring(0, dn.length() - tld.length());
+ String hostnameWithoutTLD = suffix.substring(0, suffix.length() - 1);
+ String hostnameWithoutSubsAndTLD = Iterables.getLast(Splitter.on(".").split(hostnameWithoutTLD), null);
+ if(hostnameWithoutSubsAndTLD == null) {
return null;
}
+ return hostnameWithoutSubsAndTLD + "." + tld;
+
}
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/7972a909/metron-platform/metron-common/src/test/java/org/apache/metron/common/stellar/network/RemoveSubdomainsTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/stellar/network/RemoveSubdomainsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/stellar/network/RemoveSubdomainsTest.java
new file mode 100644
index 0000000..db54859
--- /dev/null
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/stellar/network/RemoveSubdomainsTest.java
@@ -0,0 +1,42 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.metron.common.stellar.network;
+
+import com.google.common.collect.ImmutableList;
+import org.apache.metron.common.dsl.functions.NetworkFunctions;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class RemoveSubdomainsTest {
+
+ @Test
+ public void testEdgeCasesTldSquared() {
+ NetworkFunctions.RemoveSubdomains removeSubdomains = new NetworkFunctions.RemoveSubdomains();
+ Assert.assertEquals("com.com", removeSubdomains.apply(ImmutableList.of("com.com")));
+ Assert.assertEquals("net.net", removeSubdomains.apply(ImmutableList.of("net.net")));
+ Assert.assertEquals("uk.co.uk", removeSubdomains.apply(ImmutableList.of("co.uk.co.uk")));
+ Assert.assertEquals("com.com", removeSubdomains.apply(ImmutableList.of("www.subdomain.com.com")));
+ }
+
+ @Test
+ public void testHappyPath() {
+ NetworkFunctions.RemoveSubdomains removeSubdomains = new NetworkFunctions.RemoveSubdomains();
+ Assert.assertEquals("example.com", removeSubdomains.apply(ImmutableList.of("my.example.com")));
+ Assert.assertEquals("example.co.uk", removeSubdomains.apply(ImmutableList.of("my.example.co.uk")));
+ }
+}