/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.tsdr.syslogs.filters; import java.util.HashMap; import java.util.Map; import org.opendaylight.tsdr.syslogs.server.decoder.Message; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.tsdr.collector.spi.rev150915.inserttsdrlogrecord.input.TSDRLogRecord; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Sharon Aicler(saichler@gmail.com) **/ public class SyslogFilterManager { private final static Logger LOGGER = LoggerFactory.getLogger(SyslogFilterManager.class); private Map<String,SyslogFilter[]> filters = new HashMap<String,SyslogFilter[]>(); public SyslogFilterManager(){ filters.put("*",new SyslogFilter[]{new PersistAllSyslogFilter()}); } public TSDRLogRecord applyFilters(Message message){ if(message!=null){ String syslogString = message.getContent().trim(); String packetHostAddress = message.getHostname(); String syslogOriginator = null; int index1 = syslogString.indexOf("Original Address"); int index2 = syslogString.indexOf("=",index1); int index3 = syslogString.indexOf(" ",index2+2); if(index1!=-1 && index2!=-1 && index3!=-1 && index2>index1 && index3>index2){ syslogOriginator = syslogString.substring(index2+1,index3).trim(); }else{ syslogOriginator = packetHostAddress; } SyslogFilter[] flt = filters.get(syslogOriginator); if(flt==null){ flt = filters.get("*"); } if(flt.length==1 && flt[0].match(syslogString)){ return flt[0].filterAndParseSyslog(syslogString, packetHostAddress, syslogOriginator); } } return null; } }