/** * 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.camel.component.splunk; import com.splunk.SSLSecurityProtocol; import com.splunk.Service; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; import org.apache.camel.spi.UriPath; import org.apache.camel.util.ObjectHelper; @UriParams public class SplunkConfiguration { private SplunkConnectionFactory connectionFactory; @UriPath(description = "Name has no purpose") @Metadata(required = "true") private String name; @UriParam(defaultValue = "https") private String scheme = Service.DEFAULT_SCHEME; @UriParam(defaultValue = "localhost") private String host = Service.DEFAULT_HOST; @UriParam(defaultValue = "8089") private int port = Service.DEFAULT_PORT; @UriParam(enums = "TLSv1.2,TLSv1.1,TLSv1,SSLv3", defaultValue = "TLSv1.2", label = "security") private SSLSecurityProtocol sslProtocol = SSLSecurityProtocol.TLSv1_2; @UriParam private String app; @UriParam private String owner; @UriParam(label = "security", secret = true) private String username; @UriParam(label = "security", secret = true) private String password; @UriParam(defaultValue = "5000") private int connectionTimeout = 5000; @UriParam(label = "security") private boolean useSunHttpsHandler; @UriParam(label = "producer") private String index; @UriParam(label = "producer") private String sourceType; @UriParam(label = "producer") private String source; @UriParam(label = "producer") private String eventHost; @UriParam(label = "producer") private int tcpReceiverPort; @UriParam(label = "producer", defaultValue = "false") private boolean raw; @UriParam(label = "consumer") private int count; @UriParam(label = "consumer") private String search; @UriParam(label = "consumer") private String savedSearch; @UriParam(label = "consumer") private String earliestTime; @UriParam(label = "consumer") private String latestTime; @UriParam(label = "consumer") private String initEarliestTime; @UriParam(label = "consumer") private Boolean streaming; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInitEarliestTime() { return initEarliestTime; } /** * Initial start offset of the first search */ public void setInitEarliestTime(String initEarliestTime) { this.initEarliestTime = initEarliestTime; } public int getCount() { return count; } /** * A number that indicates the maximum number of entities to return. */ public void setCount(int count) { this.count = count; } public String getSearch() { return search; } /** * The Splunk query to run */ public void setSearch(String search) { this.search = search; } public String getEarliestTime() { return earliestTime; } /** * Earliest time of the search time window. */ public void setEarliestTime(String earliestTime) { this.earliestTime = earliestTime; } public String getLatestTime() { return latestTime; } /** * Latest time of the search time window. */ public void setLatestTime(String latestTime) { this.latestTime = latestTime; } public int getTcpReceiverPort() { return tcpReceiverPort; } /** * Splunk tcp receiver port */ public void setTcpReceiverPort(int tcpReceiverPort) { this.tcpReceiverPort = tcpReceiverPort; } public boolean isRaw() { return raw; } /** * Should the payload be inserted raw */ public void setRaw(boolean raw) { this.raw = raw; } public String getSourceType() { return sourceType; } /** * Splunk sourcetype argument */ public void setSourceType(String sourceType) { this.sourceType = sourceType; } public String getSource() { return source; } /** * Splunk source argument */ public void setSource(String source) { this.source = source; } public String getEventHost() { return eventHost; } /** * Override the default Splunk event host field */ public void setEventHost(String eventHost) { this.eventHost = eventHost; } /** * Splunk index to write to */ public void setIndex(String index) { this.index = index; } public String getIndex() { return index; } public String getHost() { return host; } /** * Splunk host. */ public void setHost(String host) { this.host = host; } public int getPort() { return port; } /** * Splunk port */ public void setPort(int port) { this.port = port; } public SSLSecurityProtocol getSslProtocol() { return sslProtocol; } /** * Set the ssl protocol to use * * @param sslProtocol */ public void setSslProtocol(SSLSecurityProtocol sslProtocol) { this.sslProtocol = sslProtocol; } public String getScheme() { return scheme; } /** * Splunk scheme */ public void setScheme(String scheme) { this.scheme = scheme; } public String getApp() { return app; } /** * Splunk app */ public void setApp(String app) { this.app = app; } public String getOwner() { return owner; } /** * Splunk owner */ public void setOwner(String owner) { this.owner = owner; } public String getUsername() { return username; } /** * Username for Splunk */ public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } /** * Password for Splunk */ public void setPassword(String password) { this.password = password; } public boolean isStreaming() { return streaming != null ? streaming : false; } /** * Sets streaming mode. * <p> * Streaming mode sends exchanges as they are received, rather than in a batch. */ public void setStreaming(boolean streaming) { this.streaming = streaming; } public int getConnectionTimeout() { return connectionTimeout; } /** * Timeout in MS when connecting to Splunk server */ public void setConnectionTimeout(int timeout) { this.connectionTimeout = timeout; } public boolean isUseSunHttpsHandler() { return useSunHttpsHandler; } /** * Use sun.net.www.protocol.https.Handler Https handler to establish the Splunk Connection. * Can be useful when running in application servers to avoid app. server https handling. */ public void setUseSunHttpsHandler(boolean useSunHttpsHandler) { this.useSunHttpsHandler = useSunHttpsHandler; } public String getSavedSearch() { return this.savedSearch; } /** * The name of the query saved in Splunk to run */ public void setSavedSearch(String savedSearch) { this.savedSearch = savedSearch; } public SplunkConnectionFactory getConnectionFactory() { return connectionFactory != null ? connectionFactory : createDefaultConnectionFactory(); } /** * Splunk connection factory. */ public void setConnectionFactory(SplunkConnectionFactory connectionFactory) { this.connectionFactory = connectionFactory; } private SplunkConnectionFactory createDefaultConnectionFactory() { SplunkConnectionFactory splunkConnectionFactory; if (ObjectHelper.isNotEmpty(getHost()) && getPort() > 0) { splunkConnectionFactory = new SplunkConnectionFactory(getHost(), getPort(), getUsername(), getPassword()); } else { splunkConnectionFactory = new SplunkConnectionFactory(getUsername(), getPassword()); } splunkConnectionFactory.setApp(getApp()); splunkConnectionFactory.setConnectionTimeout(getConnectionTimeout()); splunkConnectionFactory.setScheme(getScheme()); splunkConnectionFactory.setUseSunHttpsHandler(isUseSunHttpsHandler()); splunkConnectionFactory.setSslProtocol(getSslProtocol()); return splunkConnectionFactory; } }