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 com.att.dmf.mr.utils;
24 import javax.servlet.ServletException;
26 import org.I0Itec.zkclient.ZkClient;
27 import org.apache.curator.framework.CuratorFramework;
28 import org.springframework.beans.factory.annotation.Autowired;
29 import org.springframework.beans.factory.annotation.Qualifier;
30 import org.springframework.stereotype.Component;
32 import com.att.dmf.mr.backends.ConsumerFactory;
33 import com.att.dmf.mr.backends.MetricsSet;
34 import com.att.dmf.mr.backends.Publisher;
35 import com.att.dmf.mr.backends.kafka.KafkaConsumerCache.KafkaConsumerCacheException;
36 import com.att.dmf.mr.backends.memory.MemoryConsumerFactory;
37 import com.att.dmf.mr.backends.memory.MemoryMetaBroker;
38 import com.att.dmf.mr.backends.memory.MemoryQueue;
39 import com.att.dmf.mr.backends.memory.MemoryQueuePublisher;
40 import com.att.dmf.mr.beans.DMaaPCambriaLimiter;
41 import com.att.dmf.mr.beans.DMaaPKafkaMetaBroker;
42 import com.att.dmf.mr.beans.DMaaPZkConfigDb;
43 import com.att.dmf.mr.constants.CambriaConstants;
44 import com.att.dmf.mr.metabroker.Broker;
46 import com.att.dmf.mr.metabroker.Broker1;
47 import com.att.dmf.mr.security.DMaaPAuthenticator;
48 import com.att.dmf.mr.security.impl.DMaaPOriginalUebAuthenticator;
49 import com.att.eelf.configuration.EELFLogger;
50 import com.att.eelf.configuration.EELFManager;
51 import com.att.nsa.configs.ConfigDbException;
52 import com.att.nsa.configs.confimpl.MemConfigDb;
53 import com.att.nsa.drumlin.till.nv.rrNvReadable;
54 import com.att.nsa.drumlin.till.nv.rrNvReadable.invalidSettingValue;
55 import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting;
56 import com.att.nsa.limits.Blacklist;
57 import com.att.nsa.security.NsaAuthenticatorService;
59 import com.att.nsa.security.db.BaseNsaApiDbImpl;
60 import com.att.nsa.security.db.NsaApiDb;
61 import com.att.nsa.security.db.NsaApiDb.KeyExistsException;
62 import com.att.nsa.security.db.simple.NsaSimpleApiKey;
63 import com.att.nsa.security.db.simple.NsaSimpleApiKeyFactory;
66 * Class is created for all the configuration for rest and service layer
71 public class ConfigurationReader {
74 private Broker1 fMetaBroker;
75 private ConsumerFactory fConsumerFactory;
76 private Publisher fPublisher;
77 private MetricsSet fMetrics;
79 private DMaaPCambriaLimiter fRateLimiter;
80 private NsaApiDb<NsaSimpleApiKey> fApiKeyDb;
82 private DMaaPAuthenticator<NsaSimpleApiKey> fSecurityManager;
83 private NsaAuthenticatorService<NsaSimpleApiKey> nsaSecurityManager;
84 private static CuratorFramework curator;
86 private DMaaPZkConfigDb fConfigDb;
87 private MemoryQueue q;
88 private MemoryMetaBroker mmb;
89 private Blacklist fIpBlackList;
90 private Emailer fEmailer;
92 private static final EELFLogger log = EELFManager.getInstance().getLogger(ConfigurationReader.class);
96 * constructor to initialize all the values
104 * @param fConsumerFactory
109 * @param fSecurityManager
110 * @throws missingReqdSetting
111 * @throws invalidSettingValue
112 * @throws ServletException
113 * @throws KafkaConsumerCacheException
114 * @throws ConfigDbException
117 public ConfigurationReader(@Qualifier("propertyReader") rrNvReadable settings,
118 @Qualifier("dMaaPMetricsSet") MetricsSet fMetrics, @Qualifier("dMaaPZkClient") ZkClient zk,
119 @Qualifier("dMaaPZkConfigDb") DMaaPZkConfigDb fConfigDb, @Qualifier("kafkaPublisher") Publisher fPublisher,
120 @Qualifier("curator") CuratorFramework curator,
121 @Qualifier("dMaaPKafkaConsumerFactory") ConsumerFactory fConsumerFactory,
122 @Qualifier("dMaaPKafkaMetaBroker") Broker1 fMetaBroker,
123 @Qualifier("q") MemoryQueue q,
124 @Qualifier("mmb") MemoryMetaBroker mmb, @Qualifier("dMaaPNsaApiDb") NsaApiDb<NsaSimpleApiKey> fApiKeyDb,
126 * @Qualifier("dMaaPTranDb")
127 * DMaaPTransactionObjDB<DMaaPTransactionObj> fTranDb,
129 @Qualifier("dMaaPAuthenticatorImpl") DMaaPAuthenticator<NsaSimpleApiKey> fSecurityManager
131 throws missingReqdSetting, invalidSettingValue, ServletException, KafkaConsumerCacheException, ConfigDbException {
133 this.fMetrics = fMetrics;
135 this.fConfigDb = fConfigDb;
136 this.fPublisher = fPublisher;
137 ConfigurationReader.curator = curator;
138 this.fConsumerFactory = fConsumerFactory;
139 this.fMetaBroker = fMetaBroker;
143 this.fApiKeyDb = fApiKeyDb;
145 this.fSecurityManager = fSecurityManager;
147 long allowedtimeSkewMs=600000L;
148 String strallowedTimeSkewM= com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,"authentication.allowedTimeSkewMs");
149 if(null!=strallowedTimeSkewM)allowedtimeSkewMs= Long.parseLong(strallowedTimeSkewM);
152 //String strrequireSecureChannel= com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,"aauthentication.requireSecureChannel");
153 //if(strrequireSecureChannel!=null)requireSecureChannel=Boolean.parseBoolean(strrequireSecureChannel);
154 //this.nsaSecurityManager = new NsaAuthenticatorService<NsaSimpleApiKey>(this.fApiKeyDb, settings.getLong("authentication.allowedTimeSkewMs", 600000L), settings.getBoolean("authentication.requireSecureChannel", true));
155 //this.nsaSecurityManager = new NsaAuthenticatorService<NsaSimpleApiKey>(this.fApiKeyDb, allowedtimeSkewMs, requireSecureChannel);
160 protected void servletSetup()
161 throws rrNvReadable.missingReqdSetting, rrNvReadable.invalidSettingValue, ServletException, ConfigDbException {
165 fMetrics.setupCambriaSender();
166 // add the admin authenticator
167 // final String adminSecret = settings.getString ( CambriaConstants.kSetting_AdminSecret, null );
168 final String adminSecret = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,CambriaConstants.kSetting_AdminSecret);
169 //adminSecret = "fe3cCompound";
170 if ( adminSecret != null && adminSecret.length () > 0 )
175 final NsaApiDb<NsaSimpleApiKey> adminDb = new BaseNsaApiDbImpl<NsaSimpleApiKey> ( new MemConfigDb(), new NsaSimpleApiKeyFactory() );
176 adminDb.createApiKey ( "admin", adminSecret );
177 //nsaSecurityManager.addAuthenticator ( new OriginalUebAuthenticator<NsaSimpleApiKey> ( adminDb, 10*60*1000 ) );
178 fSecurityManager.addAuthenticator ( new DMaaPOriginalUebAuthenticator<NsaSimpleApiKey> ( adminDb, 10*60*1000 ) );
181 catch ( KeyExistsException e )
183 throw new RuntimeException ( "This key can't exist in a fresh in-memory DB!", e );
188 //final String type = settings.getString(CambriaConstants.kBrokerType, CambriaConstants.kBrokerType_Kafka);
189 String type = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,CambriaConstants.kBrokerType);
190 if (type==null) type = CambriaConstants.kBrokerType_Kafka;
191 if (CambriaConstants.kBrokerType_Kafka.equalsIgnoreCase(type)) {
192 log.info("Broker Type is:" + CambriaConstants.kBrokerType_Kafka);
193 } else if (CambriaConstants.kBrokerType_Memory.equalsIgnoreCase(type)) {
194 log.info("Broker Type is:" + CambriaConstants.kBrokerType_Memory);
195 fPublisher = new MemoryQueuePublisher(q, mmb);
196 //Ramkumar remove below
197 // fMetaBroker = mmb;
198 fConsumerFactory = new MemoryConsumerFactory(q);
200 throw new IllegalArgumentException(
201 "Unrecognized type for " + CambriaConstants.kBrokerType + ": " + type + ".");
203 fIpBlackList = new Blacklist ( getfConfigDb(), getfConfigDb().parse ( "/ipBlacklist" ) );
204 this.fEmailer = new Emailer();
205 log.info("Broker Type is:" + type);
207 } catch (SecurityException e) {
208 throw new ServletException(e);
213 * method returns metaBroker
217 public Broker1 getfMetaBroker() {
222 * method to set the metaBroker
226 public void setfMetaBroker(Broker1 fMetaBroker) {
227 this.fMetaBroker = fMetaBroker;
231 * method to get ConsumerFactory Object
235 public ConsumerFactory getfConsumerFactory() {
236 return fConsumerFactory;
240 * method to set the consumerfactory object
242 * @param fConsumerFactory
244 public void setfConsumerFactory(ConsumerFactory fConsumerFactory) {
245 this.fConsumerFactory = fConsumerFactory;
249 * method to get Publisher object
253 public Publisher getfPublisher() {
258 * method to set Publisher object
262 public void setfPublisher(Publisher fPublisher) {
263 this.fPublisher = fPublisher;
267 * method to get MetricsSet Object
271 public MetricsSet getfMetrics() {
276 * method to set MetricsSet Object
280 public void setfMetrics(MetricsSet fMetrics) {
281 this.fMetrics = fMetrics;
285 * method to get DMaaPCambriaLimiter object
289 public DMaaPCambriaLimiter getfRateLimiter() {
294 * method to set DMaaPCambriaLimiter object
296 * @param fRateLimiter
298 public void setfRateLimiter(DMaaPCambriaLimiter fRateLimiter) {
299 this.fRateLimiter = fRateLimiter;
303 * Method to get DMaaPAuthenticator object
307 public DMaaPAuthenticator<NsaSimpleApiKey> getfSecurityManager() {
308 return fSecurityManager;
312 * method to set DMaaPAuthenticator object
314 * @param fSecurityManager
316 public void setfSecurityManager(DMaaPAuthenticator<NsaSimpleApiKey> fSecurityManager) {
317 this.fSecurityManager = fSecurityManager;
321 * method to get rrNvReadable object
325 /*public rrNvReadable getSettings() {
330 * method to set rrNvReadable object
334 /*public void setSettings(rrNvReadable settings) {
335 this.settings = settings;
339 * method to get CuratorFramework object
343 public static CuratorFramework getCurator() {
348 * method to set CuratorFramework object
352 public static void setCurator(CuratorFramework curator) {
353 ConfigurationReader.curator = curator;
357 * method to get ZkClient object
361 public ZkClient getZk() {
366 * method to set ZkClient object
370 public void setZk(ZkClient zk) {
375 * method to get DMaaPZkConfigDb object
379 public DMaaPZkConfigDb getfConfigDb() {
384 * method to set DMaaPZkConfigDb object
388 public void setfConfigDb(DMaaPZkConfigDb fConfigDb) {
389 this.fConfigDb = fConfigDb;
393 * method to get MemoryQueue object
397 public MemoryQueue getQ() {
402 * method to set MemoryQueue object
406 public void setQ(MemoryQueue q) {
411 * method to get MemoryMetaBroker object
415 public MemoryMetaBroker getMmb() {
420 * method to set MemoryMetaBroker object
424 public void setMmb(MemoryMetaBroker mmb) {
429 * method to get NsaApiDb object
433 public NsaApiDb<NsaSimpleApiKey> getfApiKeyDb() {
438 * method to set NsaApiDb object
442 public void setfApiKeyDb(NsaApiDb<NsaSimpleApiKey> fApiKeyDb) {
443 this.fApiKeyDb = fApiKeyDb;
447 * public DMaaPTransactionObjDB<DMaaPTransactionObj> getfTranDb() { return
450 * public void setfTranDb(DMaaPTransactionObjDB<DMaaPTransactionObj>
451 * fTranDb) { this.fTranDb = fTranDb; }
454 * method to get the zookeeper connection String
459 public static String getMainZookeeperConnectionString() {
460 //return settings.getString(CambriaConstants.kSetting_ZkConfigDbServers, CambriaConstants.kDefault_ZkConfigDbServers);
462 String zkServername = com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,CambriaConstants.kSetting_ZkConfigDbServers);
463 if (zkServername==null) zkServername=CambriaConstants.kDefault_ZkConfigDbServers;
467 public static String getMainZookeeperConnectionSRoot(){
468 String strVal=com.att.ajsc.filemonitor.AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,CambriaConstants.kSetting_ZkConfigDbRoot);
471 strVal=CambriaConstants.kDefault_ZkConfigDbRoot;
476 public Blacklist getfIpBlackList() {
480 public void setfIpBlackList(Blacklist fIpBlackList) {
481 this.fIpBlackList = fIpBlackList;
484 public NsaAuthenticatorService<NsaSimpleApiKey> getNsaSecurityManager() {
485 return nsaSecurityManager;
488 public void setNsaSecurityManager(NsaAuthenticatorService<NsaSimpleApiKey> nsaSecurityManager) {
489 this.nsaSecurityManager = nsaSecurityManager;
492 public Emailer getSystemEmailer()
494 return this.fEmailer;