fixes for sonar vulnerabilities 08/70208/1
authorsunil unnava <sunil.unnava@att.com>
Wed, 10 Oct 2018 22:35:03 +0000 (18:35 -0400)
committersunil unnava <sunil.unnava@att.com>
Wed, 10 Oct 2018 22:37:20 +0000 (18:37 -0400)
Issue-ID: DMAAP-824
Change-Id: I15a693f443370f5fd03cf3ede2946afa6b7f1a3b
Signed-off-by: sunil unnava <sunil.unnava@att.com>
15 files changed:
src/main/java/com/att/dmf/mr/backends/kafka/Kafka011Consumer.java
src/main/java/com/att/dmf/mr/backends/kafka/Kafka011ConsumerUtil.java
src/main/java/com/att/dmf/mr/backends/kafka/KafkaPublisher.java
src/main/java/com/att/dmf/mr/beans/DMaaPKafkaConsumerFactory.java
src/main/java/com/att/dmf/mr/beans/DMaaPKafkaMetaBroker.java
src/main/java/com/att/dmf/mr/metrics/publisher/DMaaPCambriaClientFactory.java
src/main/java/com/att/dmf/mr/metrics/publisher/impl/DMaaPCambriaSimplerBatchPublisher.java
src/main/java/com/att/dmf/mr/service/UIService.java
src/main/java/com/att/dmf/mr/service/impl/MMServiceImpl.java
src/main/java/com/att/dmf/mr/service/impl/TopicServiceImpl.java
src/main/java/com/att/dmf/mr/service/impl/UIServiceImpl.java
src/main/java/com/att/dmf/mr/utils/ConfigurationReader.java
src/main/java/com/att/dmf/mr/utils/Emailer.java
src/main/java/com/att/dmf/mr/utils/Utils.java
src/main/resources/kafka.properties [new file with mode: 0644]

index 6cd0230..9be9073 100644 (file)
@@ -156,7 +156,7 @@ public class Kafka011Consumer implements Consumer {
                                apiNodeId = InetAddress.getLocalHost().getCanonicalHostName() + ":" + CambriaConstants.kDefault_Port;
                        } catch (UnknownHostException e1) {
                                // TODO Auto-generated catch block
-                               e1.printStackTrace();
+                               log.error("unable to get the localhost address");
                        }
 
                        try {
index 271b155..e066df5 100644 (file)
@@ -73,7 +73,6 @@ public class Kafka011ConsumerUtil {
 
                                } catch (Exception e) {
                                        log.error("Failed and go to Exception block for " + fGroup + " " + e.getMessage());
-                                       e.printStackTrace();
                                }
                        }
                });
@@ -112,7 +111,6 @@ public class Kafka011ConsumerUtil {
                                        log.error("Error occurs for " + e);
                                } catch (Exception e) {
                                        log.error("Failed and go to Exception block for " + group + " " + e.getMessage());
-                                       e.printStackTrace();
                                }
                        }
                });
index c08d909..f5751f0 100644 (file)
@@ -35,6 +35,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
 
 import com.att.dmf.mr.backends.Publisher;
 import com.att.dmf.mr.constants.CambriaConstants;
+import com.att.dmf.mr.utils.Utils;
 //import org.slf4j.Logger;
 //import org.slf4j.LoggerFactory;
 import com.att.eelf.configuration.EELFLogger;
@@ -75,7 +76,7 @@ public class KafkaPublisher implements Publisher {
                
        
            
-               transferSetting( props, "sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='admin_secret';");
+               transferSetting( props, "sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='"+Utils.getKafkaproperty()+"';");
                transferSetting( props, "security.protocol", "SASL_PLAINTEXT");
                transferSetting( props, "sasl.mechanism", "PLAIN");             
                transferSetting( props, "bootstrap.servers",kafkaConnUrl);
index 74f4ef6..2f13be8 100644 (file)
@@ -46,8 +46,7 @@ import com.att.dmf.mr.backends.kafka.KafkaLiveLockAvoider2;
 import com.att.dmf.mr.backends.kafka.LiveLockAvoidance;
 import com.att.dmf.mr.constants.CambriaConstants;
 import com.att.dmf.mr.utils.ConfigurationReader;
-
-
+import com.att.dmf.mr.utils.Utils;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.att.nsa.drumlin.till.nv.rrNvReadable.missingReqdSetting;
@@ -290,8 +289,7 @@ public class DMaaPKafkaConsumerFactory implements ConsumerFactory {
                props.put("group.id", fakeGroupName);
                props.put("enable.auto.commit", "false"); // 0.11
                props.put("bootstrap.servers", fkafkaBrokers);
-               props.put("sasl.jaas.config",
-                               "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='admin_secret';");
+               props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='"+Utils.getKafkaproperty()+"';");
                props.put("security.protocol", "SASL_PLAINTEXT");
                props.put("sasl.mechanism", "PLAIN");
                
index c89a3b2..cbb58e4 100644 (file)
@@ -47,6 +47,7 @@ import com.att.dmf.mr.metabroker.Broker;
 import com.att.dmf.mr.metabroker.Broker1;
 import com.att.dmf.mr.metabroker.Topic;
 import com.att.dmf.mr.utils.ConfigurationReader;
+import com.att.dmf.mr.utils.Utils;
 //import org.apache.log4-j.Logger;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
@@ -83,7 +84,7 @@ public class DMaaPKafkaMetaBroker implements Broker1 {
                }
                
             props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, fkafkaBrokers );
-            props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='admin_secret';");
+            props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='"+Utils.getKafkaproperty()+"';");
                 props.put(AdminClientConfig.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT");            
             props.put("sasl.mechanism", "PLAIN");
           
@@ -119,7 +120,7 @@ public class DMaaPKafkaMetaBroker implements Broker1 {
                }
                
                
-                props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='admin_secret';");
+                props.put("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='"+Utils.getKafkaproperty()+"';");
                 props.put(AdminClientConfig.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT");            
             props.put("sasl.mechanism", "PLAIN");
             props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, fkafkaBrokers );
index 9158c96..d7818de 100644 (file)
@@ -22,6 +22,7 @@
 package com.att.dmf.mr.metrics.publisher;
 
 import java.net.MalformedURLException;
+import java.nio.channels.NotYetConnectedException;
 import java.util.Collection;
 import java.util.TreeSet;
 import java.util.UUID;
@@ -244,7 +245,11 @@ public class DMaaPCambriaClientFactory {
                return new DMaaPCambriaConsumerImpl(hostSet, topic, consumerGroup,
                                consumerId, timeoutMs, limit, filter, apiKey, apiSecret);
        } catch (MalformedURLException e) {
-               throw new RuntimeException(e);
+               
+               NotYetConnectedException exception=new NotYetConnectedException();
+               exception.setStackTrace(e.getStackTrace());
+               
+               throw exception ;
        }
        }
 
index dee9e57..e9b1cdb 100644 (file)
@@ -25,6 +25,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.net.MalformedURLException;
+import java.nio.channels.NotYetConnectedException;
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
@@ -123,7 +124,12 @@ public class DMaaPCambriaSimplerBatchPublisher extends CambriaBaseClient
                        try {
                        return new DMaaPCambriaSimplerBatchPublisher(fUrls, fTopic, fMaxBatchSize, fMaxBatchAgeMs, fCompress);
                } catch (MalformedURLException e) {
-                       throw new RuntimeException(e);
+                       
+                       NotYetConnectedException exception=new NotYetConnectedException();
+                       exception.setStackTrace(e.getStackTrace());
+                       
+                       throw exception ;
+               
                }
                }
 
index c62b3ff..1155a2a 100644 (file)
@@ -27,7 +27,9 @@ package com.att.dmf.mr.service;
 import java.io.IOException;
 
 import org.apache.kafka.common.errors.TopicExistsException;
+import org.json.JSONException;
 
+import com.att.dmf.mr.CambriaApiException;
 import com.att.dmf.mr.beans.DMaaPContext;
 import com.att.nsa.configs.ConfigDbException;
 /**
@@ -62,7 +64,7 @@ public interface UIService {
         * @throws Exception
         */
        void getApiKey(DMaaPContext dmaapContext, final String apiKey)
-                       throws Exception;
+                       throws CambriaApiException, ConfigDbException, JSONException, IOException;
 
        /**
         * Fetching list of all the topics and returning in a templated form for
index e55f510..387d8b1 100644 (file)
@@ -404,7 +404,7 @@ public class MMServiceImpl implements MMService {
 
                        int status = HttpStatus.SC_NOT_FOUND;
                        String errorMsg = null;
-                       if (excp instanceof CambriaApiException) {
+                       if (excp.getClass().toString().contains("CambriaApiException")) {
                                status = ((CambriaApiException) excp).getStatus();
                                JSONTokener jsonTokener = new JSONTokener(((CambriaApiException) excp).getBody());
                                JSONObject errObject = new JSONObject(jsonTokener);
@@ -496,7 +496,7 @@ public class MMServiceImpl implements MMService {
 
                                                int status = HttpStatus.SC_NOT_FOUND;
                                                String errorMsg = null;
-                                               if (excp instanceof CambriaApiException) {
+                                               if (excp.getClass().toString().contains("CambriaApiException")) {
                                                        status = ((CambriaApiException) excp).getStatus();
                                                        JSONTokener jsonTokener = new JSONTokener(((CambriaApiException) excp).getBody());
                                                        JSONObject errObject = new JSONObject(jsonTokener);
@@ -541,7 +541,7 @@ public class MMServiceImpl implements MMService {
                                } catch (Exception excp) {
                                        int status = HttpStatus.SC_NOT_FOUND;
                                        String errorMsg = null;
-                                       if (excp instanceof CambriaApiException) {
+                                       if (excp.getClass().toString().contains("CambriaApiException")) {
                                                status = ((CambriaApiException) excp).getStatus();
                                                JSONTokener jsonTokener = new JSONTokener(((CambriaApiException) excp).getBody());
                                                JSONObject errObject = new JSONObject(jsonTokener);
@@ -581,7 +581,7 @@ public class MMServiceImpl implements MMService {
                } catch (Exception excp) {
                        int status = HttpStatus.SC_NOT_FOUND;
                        String errorMsg = null;
-                       if (excp instanceof CambriaApiException) {
+                       if (excp.getClass().toString().contains("CambriaApiException")) {
                                status = ((CambriaApiException) excp).getStatus();
                                JSONTokener jsonTokener = new JSONTokener(((CambriaApiException) excp).getBody());
                                JSONObject errObject = new JSONObject(jsonTokener);
index 4c872ad..f6d7b21 100644 (file)
@@ -314,7 +314,7 @@ public class TopicServiceImpl implements TopicService {
                        throw new CambriaApiException(errRes);
                } catch (com.att.dmf.mr.metabroker.Broker1.TopicExistsException e) {
                        // TODO Auto-generated catch block
-                       e.printStackTrace();
+                       LOGGER.error( e.getMessage());
                }
        }
 
index b624a39..73ad83b 100644 (file)
@@ -30,9 +30,11 @@ import java.util.Map.Entry;
 
 import org.apache.kafka.common.errors.TopicExistsException;
 import org.json.JSONArray;
+import org.json.JSONException;
 import org.json.JSONObject;
 import org.springframework.stereotype.Service;
 
+import com.att.dmf.mr.CambriaApiException;
 import com.att.dmf.mr.beans.DMaaPContext;
 import com.att.dmf.mr.beans.DMaaPKafkaMetaBroker;
 import com.att.dmf.mr.metabroker.Topic;
@@ -100,10 +102,13 @@ public class UIServiceImpl implements UIService {
        /**
         * @param dmaapContext
         * @param apiKey
+        * @throws ConfigDbException 
+        * @throws IOException 
+        * @throws JSONException 
         * @throws Exception
         */
        @Override
-       public void getApiKey(DMaaPContext dmaapContext, String apiKey) throws Exception {
+       public void getApiKey(DMaaPContext dmaapContext, String apiKey) throws CambriaApiException, ConfigDbException, JSONException, IOException {
                // TODO - We need to work on the templates and how data will be set in
                // the template
                LOGGER.info("Fetching detials of apikey: " + apiKey);
@@ -114,7 +119,7 @@ public class UIServiceImpl implements UIService {
                        DMaaPResponseBuilder.respondOk(dmaapContext, key.asJsonObject());
                } else {
                        LOGGER.info("Details of apikey [" + apiKey + "] not found. Returning response");
-                       throw new Exception("Key [" + apiKey + "] not found.");
+                       throw new CambriaApiException(400,"Key [" + apiKey + "] not found.");
                }
 
        }
index 17de391..aebca34 100644 (file)
@@ -112,6 +112,7 @@ public class ConfigurationReader {
         * @throws ServletException
         * @throws KafkaConsumerCacheException
         * @throws ConfigDbException 
+        * @throws KeyExistsException 
         */
        @Autowired
        public ConfigurationReader(@Qualifier("propertyReader") rrNvReadable settings,
@@ -128,7 +129,7 @@ public class ConfigurationReader {
                         */
                        @Qualifier("dMaaPAuthenticatorImpl") DMaaPAuthenticator<NsaSimpleApiKey> fSecurityManager
                        )
-                                       throws missingReqdSetting, invalidSettingValue, ServletException, KafkaConsumerCacheException, ConfigDbException {
+                                       throws missingReqdSetting, invalidSettingValue, ServletException, KafkaConsumerCacheException, ConfigDbException, KeyExistsException {
                
                this.fMetrics = fMetrics;
                this.zk = zk;
@@ -158,7 +159,7 @@ public class ConfigurationReader {
        }
 
        protected void servletSetup()
-                       throws rrNvReadable.missingReqdSetting, rrNvReadable.invalidSettingValue, ServletException, ConfigDbException {
+                       throws rrNvReadable.missingReqdSetting, rrNvReadable.invalidSettingValue, ServletException, ConfigDbException, KeyExistsException {
                try {
 
                        fMetrics.toJson();
@@ -169,19 +170,12 @@ public class ConfigurationReader {
                                                
                                                if ( adminSecret != null && adminSecret.length () > 0 )
                                                {
-                                                       try
-                                                       {
                                                                
                                                                final NsaApiDb<NsaSimpleApiKey> adminDb = new BaseNsaApiDbImpl<NsaSimpleApiKey> ( new MemConfigDb(), new NsaSimpleApiKeyFactory() );
                                                                adminDb.createApiKey ( "admin", adminSecret );
                                                        
                                                        fSecurityManager.addAuthenticator ( new DMaaPOriginalUebAuthenticator<NsaSimpleApiKey> ( adminDb, 10*60*1000 ) );
-                                                       }
                                                
-                                                       catch ( KeyExistsException e )
-                                                       {
-                                                               throw new RuntimeException ( "This key can't exist in a fresh in-memory DB!", e );
-                                                       }
                                                }
                                        
                        // setup a backend
index a940abf..1b68216 100644 (file)
@@ -89,7 +89,6 @@ public class Emailer
        private static final EELFLogger log = EELFManager.getInstance().getLogger(Emailer.class);
        
        public static final String kSetting_MailAuthUser = "mailLogin";
-       public static final String kSetting_MailAuthPwd = "mailPassword";
        public static final String kSetting_MailFromEmail = "mailFromEmail";
        public static final String kSetting_MailFromName = "mailFromName";
        public static final String kSetting_SmtpServer = "mailSmtpServer";
@@ -162,14 +161,14 @@ public class Emailer
                                makeSetting ( prop, "mail.smtp.starttls.enable", kSetting_SmtpServerSsl, true );
 
                                final String un = getSetting ( kSetting_MailAuthUser, "" );
-                               final String pw = getSetting ( kSetting_MailAuthPwd, "" );
+                               final String value=(AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,"mailPassword")!=null)?AJSCPropertiesMap.getProperty(CambriaConstants.msgRtr_prop,"mailPassword"):"";
                                final Session session = Session.getInstance ( prop,
                                        new javax.mail.Authenticator()
                                        {
                                                @Override
                                                protected PasswordAuthentication getPasswordAuthentication()
                                                {
-                                                       return new PasswordAuthentication ( un, pw );
+                                                       return new PasswordAuthentication ( un, value );
                                                }
                                        }
                                );
index 70691cf..c2b8b88 100644 (file)
  *******************************************************************************/
 package com.att.dmf.mr.utils;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Properties;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.att.dmf.mr.backends.kafka.KafkaPublisher;
 import com.att.dmf.mr.beans.DMaaPContext;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
 /**
  * This is an utility class for various operations for formatting
  * @author nilanjana.maity
@@ -41,6 +47,7 @@ public class Utils {
        private static final String DATE_FORMAT = "dd-MM-yyyy::hh:mm:ss:SSS";
        public static final String CAMBRIA_AUTH_HEADER = "X-CambriaAuth";
        private static final String BATCH_ID_FORMAT = "000000";
+       private static final EELFLogger log = EELFManager.getInstance().getLogger(Utils.class);
 
        private Utils() {
                super();
@@ -142,4 +149,17 @@ public class Utils {
            }
            return list;
          }
+         
+         public static String getKafkaproperty(){
+                 InputStream input = new Utils().getClass().getResourceAsStream("/kafka.properties");
+                       Properties props = new Properties();
+                       try {
+                               props.load(input);
+                       } catch (IOException e) {
+                               log.error("failed to read kafka.properties");
+                       }
+                       return props.getProperty("key");
+                       
+                 
+         }
 }
diff --git a/src/main/resources/kafka.properties b/src/main/resources/kafka.properties
new file mode 100644 (file)
index 0000000..4a0eddb
--- /dev/null
@@ -0,0 +1 @@
+key=admin_secret;
\ No newline at end of file