1 /*******************************************************************************
2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 * ============LICENSE_END=========================================================
19 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21 *******************************************************************************/
22 package org.onap.dmaap.dmf.mr.utils;
24 import com.att.eelf.configuration.EELFLogger;
25 import com.att.eelf.configuration.EELFManager;
26 import com.att.nsa.configs.ConfigDbException;
27 import com.att.nsa.configs.confimpl.MemConfigDb;
28 import com.att.nsa.drumlin.till.nv.rrNvReadable;
29 import com.att.nsa.drumlin.till.nv.rrNvReadable.invalidSettingValue;
30 import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting;
31 import com.att.nsa.limits.Blacklist;
32 import com.att.nsa.security.NsaAuthenticatorService;
33 import com.att.nsa.security.db.BaseNsaApiDbImpl;
34 import com.att.nsa.security.db.NsaApiDb;
35 import com.att.nsa.security.db.NsaApiDb.KeyExistsException;
36 import com.att.nsa.security.db.simple.NsaSimpleApiKey;
37 import com.att.nsa.security.db.simple.NsaSimpleApiKeyFactory;
38 import org.I0Itec.zkclient.ZkClient;
39 import org.apache.curator.framework.CuratorFramework;
40 import org.onap.dmaap.dmf.mr.backends.ConsumerFactory;
41 import org.onap.dmaap.dmf.mr.backends.MetricsSet;
42 import org.onap.dmaap.dmf.mr.backends.Publisher;
43 import org.onap.dmaap.dmf.mr.backends.kafka.KafkaConsumerCache.KafkaConsumerCacheException;
44 import org.onap.dmaap.dmf.mr.backends.memory.MemoryConsumerFactory;
45 import org.onap.dmaap.dmf.mr.backends.memory.MemoryMetaBroker;
46 import org.onap.dmaap.dmf.mr.backends.memory.MemoryQueue;
47 import org.onap.dmaap.dmf.mr.backends.memory.MemoryQueuePublisher;
48 import org.onap.dmaap.dmf.mr.beans.DMaaPCambriaLimiter;
49 import org.onap.dmaap.dmf.mr.beans.DMaaPZkConfigDb;
50 import org.onap.dmaap.dmf.mr.constants.CambriaConstants;
51 import org.onap.dmaap.dmf.mr.metabroker.Broker1;
52 import org.onap.dmaap.dmf.mr.security.DMaaPAuthenticator;
53 import org.onap.dmaap.dmf.mr.security.impl.DMaaPOriginalUebAuthenticator;
54 import org.springframework.beans.factory.annotation.Autowired;
55 import org.springframework.beans.factory.annotation.Qualifier;
56 import org.springframework.stereotype.Component;
58 import javax.servlet.ServletException;
61 * Class is created for all the configuration for rest and service layer
66 public class ConfigurationReader {
69 private Broker1 fMetaBroker;
70 private ConsumerFactory fConsumerFactory;
71 private Publisher fPublisher;
72 private MetricsSet fMetrics;
74 private DMaaPCambriaLimiter fRateLimiter;
75 private NsaApiDb<NsaSimpleApiKey> fApiKeyDb;
77 private DMaaPAuthenticator<NsaSimpleApiKey> fSecurityManager;
78 private NsaAuthenticatorService<NsaSimpleApiKey> nsaSecurityManager;
79 private static CuratorFramework curator;
81 private DMaaPZkConfigDb fConfigDb;
82 private MemoryQueue q;
83 private MemoryMetaBroker mmb;
84 private Blacklist fIpBlackList;
85 private Emailer fEmailer;
87 private static final EELFLogger log = EELFManager.getInstance().getLogger(ConfigurationReader.class);
91 * constructor to initialize all the values
99 * @param fConsumerFactory
104 * @param fSecurityManager
105 * @throws missingReqdSetting
106 * @throws invalidSettingValue
107 * @throws ServletException
108 * @throws KafkaConsumerCacheException
109 * @throws ConfigDbException
110 * @throws KeyExistsException
113 public ConfigurationReader(@Qualifier("propertyReader") rrNvReadable settings,
114 @Qualifier("dMaaPMetricsSet") MetricsSet fMetrics, @Qualifier("dMaaPZkClient") ZkClient zk,
115 @Qualifier("dMaaPZkConfigDb") DMaaPZkConfigDb fConfigDb, @Qualifier("kafkaPublisher") Publisher fPublisher,
116 @Qualifier("curator") CuratorFramework curator,
117 @Qualifier("dMaaPKafkaConsumerFactory") ConsumerFactory fConsumerFactory,
118 @Qualifier("dMaaPKafkaMetaBroker") Broker1 fMetaBroker,
119 @Qualifier("q") MemoryQueue q,
120 @Qualifier("mmb") MemoryMetaBroker mmb, @Qualifier("dMaaPNsaApiDb") NsaApiDb<NsaSimpleApiKey> fApiKeyDb,
122 * @Qualifier("dMaaPTranDb")
123 * DMaaPTransactionObjDB<DMaaPTransactionObj> fTranDb,
125 @Qualifier("dMaaPAuthenticatorImpl") DMaaPAuthenticator<NsaSimpleApiKey> fSecurityManager
127 throws missingReqdSetting, invalidSettingValue, ServletException, KafkaConsumerCacheException, ConfigDbException, KeyExistsException {
129 this.fMetrics = fMetrics;
131 this.fConfigDb = fConfigDb;
132 this.fPublisher = fPublisher;
133 ConfigurationReader.curator = curator;
134 this.fConsumerFactory = fConsumerFactory;
135 this.fMetaBroker = fMetaBroker;
139 this.fApiKeyDb = fApiKeyDb;
141 this.fSecurityManager = fSecurityManager;
143 long allowedtimeSkewMs=600000L;
144 String strallowedTimeSkewM= com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,"authentication.allowedTimeSkewMs");
145 if(null!=strallowedTimeSkewM)
147 allowedtimeSkewMs= Long.parseLong(strallowedTimeSkewM);
150 //String strrequireSecureChannel= com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,"aauthentication.requireSecureChannel");
151 //if(strrequireSecureChannel!=null)requireSecureChannel=Boolean.parseBoolean(strrequireSecureChannel);
152 //this.nsaSecurityManager = new NsaAuthenticatorService<NsaSimpleApiKey>(this.fApiKeyDb, settings.getLong("authentication.allowedTimeSkewMs", 600000L), settings.getBoolean("authentication.requireSecureChannel", true));
153 //this.nsaSecurityManager = new NsaAuthenticatorService<NsaSimpleApiKey>(this.fApiKeyDb, allowedtimeSkewMs, requireSecureChannel);
158 protected void servletSetup()
159 throws missingReqdSetting, invalidSettingValue, ServletException, ConfigDbException, KeyExistsException {
163 fMetrics.setupCambriaSender();
164 // add the admin authenticator
166 final String adminSecret = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,CambriaConstants.kSetting_AdminSecret);
168 if ( adminSecret != null && adminSecret.length () > 0 )
171 final NsaApiDb<NsaSimpleApiKey> adminDb = new BaseNsaApiDbImpl<NsaSimpleApiKey> ( new MemConfigDb(), new NsaSimpleApiKeyFactory() );
172 adminDb.createApiKey ( "admin", adminSecret );
174 fSecurityManager.addAuthenticator ( new DMaaPOriginalUebAuthenticator<NsaSimpleApiKey> ( adminDb, 10*60*1000 ) );
180 String type = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,CambriaConstants.kBrokerType);
182 type = CambriaConstants.kBrokerType_Kafka;
184 if (CambriaConstants.kBrokerType_Kafka.equalsIgnoreCase(type)) {
185 log.info("Broker Type is:" + CambriaConstants.kBrokerType_Kafka);
186 } else if (CambriaConstants.kBrokerType_Memory.equalsIgnoreCase(type)) {
187 log.info("Broker Type is:" + CambriaConstants.kBrokerType_Memory);
188 fPublisher = new MemoryQueuePublisher(q, mmb);
189 //Ramkumar remove below
191 fConsumerFactory = new MemoryConsumerFactory(q);
193 throw new IllegalArgumentException(
194 "Unrecognized type for " + CambriaConstants.kBrokerType + ": " + type + ".");
196 fIpBlackList = new Blacklist ( getfConfigDb(), getfConfigDb().parse ( "/ipBlacklist" ) );
197 this.fEmailer = new Emailer();
198 log.info("Broker Type is:" + type);
200 } catch (SecurityException e) {
201 throw new ServletException(e);
206 * method returns metaBroker
210 public Broker1 getfMetaBroker() {
215 * method to set the metaBroker
219 public void setfMetaBroker(Broker1 fMetaBroker) {
220 this.fMetaBroker = fMetaBroker;
224 * method to get ConsumerFactory Object
228 public ConsumerFactory getfConsumerFactory() {
229 return fConsumerFactory;
233 * method to set the consumerfactory object
235 * @param fConsumerFactory
237 public void setfConsumerFactory(ConsumerFactory fConsumerFactory) {
238 this.fConsumerFactory = fConsumerFactory;
242 * method to get Publisher object
246 public Publisher getfPublisher() {
251 * method to set Publisher object
255 public void setfPublisher(Publisher fPublisher) {
256 this.fPublisher = fPublisher;
260 * method to get MetricsSet Object
264 public MetricsSet getfMetrics() {
269 * method to set MetricsSet Object
273 public void setfMetrics(MetricsSet fMetrics) {
274 this.fMetrics = fMetrics;
278 * method to get DMaaPCambriaLimiter object
282 public DMaaPCambriaLimiter getfRateLimiter() {
287 * method to set DMaaPCambriaLimiter object
289 * @param fRateLimiter
291 public void setfRateLimiter(DMaaPCambriaLimiter fRateLimiter) {
292 this.fRateLimiter = fRateLimiter;
296 * Method to get DMaaPAuthenticator object
300 public DMaaPAuthenticator<NsaSimpleApiKey> getfSecurityManager() {
301 return fSecurityManager;
305 * method to set DMaaPAuthenticator object
307 * @param fSecurityManager
309 public void setfSecurityManager(DMaaPAuthenticator<NsaSimpleApiKey> fSecurityManager) {
310 this.fSecurityManager = fSecurityManager;
314 * method to get rrNvReadable object
323 * method to set rrNvReadable object
332 * method to get CuratorFramework object
336 public static CuratorFramework getCurator() {
341 * method to set CuratorFramework object
345 public static void setCurator(CuratorFramework curator) {
346 ConfigurationReader.curator = curator;
350 * method to get ZkClient object
354 public ZkClient getZk() {
359 * method to set ZkClient object
363 public void setZk(ZkClient zk) {
368 * method to get DMaaPZkConfigDb object
372 public DMaaPZkConfigDb getfConfigDb() {
377 * method to set DMaaPZkConfigDb object
381 public void setfConfigDb(DMaaPZkConfigDb fConfigDb) {
382 this.fConfigDb = fConfigDb;
386 * method to get MemoryQueue object
390 public MemoryQueue getQ() {
395 * method to set MemoryQueue object
399 public void setQ(MemoryQueue q) {
404 * method to get MemoryMetaBroker object
408 public MemoryMetaBroker getMmb() {
413 * method to set MemoryMetaBroker object
417 public void setMmb(MemoryMetaBroker mmb) {
422 * method to get NsaApiDb object
426 public NsaApiDb<NsaSimpleApiKey> getfApiKeyDb() {
431 * method to set NsaApiDb object
435 public void setfApiKeyDb(NsaApiDb<NsaSimpleApiKey> fApiKeyDb) {
436 this.fApiKeyDb = fApiKeyDb;
440 * public DMaaPTransactionObjDB<DMaaPTransactionObj> getfTranDb() { return
443 * public void setfTranDb(DMaaPTransactionObjDB<DMaaPTransactionObj>
444 * fTranDb) { this.fTranDb = fTranDb; }
447 * method to get the zookeeper connection String
452 public static String getMainZookeeperConnectionString() {
455 String zkServername = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,CambriaConstants.kSetting_ZkConfigDbServers);
456 if (zkServername==null){
457 zkServername=CambriaConstants.kDefault_ZkConfigDbServers;
462 public static String getMainZookeeperConnectionSRoot(){
463 String strVal=com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,CambriaConstants.kSetting_ZkConfigDbRoot);
466 strVal=CambriaConstants.kDefault_ZkConfigDbRoot;
471 public Blacklist getfIpBlackList() {
475 public void setfIpBlackList(Blacklist fIpBlackList) {
476 this.fIpBlackList = fIpBlackList;
479 public NsaAuthenticatorService<NsaSimpleApiKey> getNsaSecurityManager() {
480 return nsaSecurityManager;
483 public void setNsaSecurityManager(NsaAuthenticatorService<NsaSimpleApiKey> nsaSecurityManager) {
484 this.nsaSecurityManager = nsaSecurityManager;
487 public Emailer getSystemEmailer()
489 return this.fEmailer;