blob: 2a168a579b7d666aacfbb7b0d0de7097398b21fc [file] [log] [blame]
/**
* 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.parsers;
import org.apache.metron.parsers.interfaces.MessageParser;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
public abstract class BasicParser implements
MessageParser<JSONObject>,
Serializable {
protected static final Logger LOG = LoggerFactory
.getLogger(BasicParser.class);
@Override
public boolean validate(JSONObject message) {
JSONObject value = message;
if (!(value.containsKey("original_string"))) {
LOG.trace("[Metron] Message does not have original_string: " + message);
return false;
} else if (!(value.containsKey("timestamp"))) {
LOG.trace("[Metron] Message does not have timestamp: " + message);
return false;
} else {
LOG.trace("[Metron] Message conforms to schema: "
+ message);
return true;
}
}
public String getKey(JSONObject value) {
try {
String ipSrcAddr = null;
String ipDstAddr = null;
if (value.containsKey("ip_src_addr"))
ipSrcAddr = value.get("ip_src_addr").toString();
if (value.containsKey("ip_dst_addr"))
ipDstAddr = value.get("ip_dst_addr").toString();
if (ipSrcAddr == null && ipDstAddr == null)
return "0";
if (ipSrcAddr == null || ipSrcAddr.length() == 0)
return ipDstAddr;
if (ipDstAddr == null || ipDstAddr.length() == 0)
return ipSrcAddr;
double ip1 = Double.parseDouble(ipSrcAddr.replace(".", ""));
double ip2 = Double.parseDouble(ipDstAddr.replace(".", ""));
return String.valueOf(ip1 + ip2);
} catch (Exception e) {
return "0";
}
}
}