summaryrefslogtreecommitdiffstats
path: root/datarouter-prov
diff options
context:
space:
mode:
authorefiacor <fiachra.corcoran@est.tech>2019-10-08 16:24:28 +0100
committerefiacor <fiachra.corcoran@est.tech>2019-10-11 09:22:47 +0100
commit1ccd9c36ba12849148f9eb73e8ff2ffe4ade5870 (patch)
treeb138596f05a8cdda774d5b447253ac6c673ceceb /datarouter-prov
parent029b5296b1bc070be3f1718190c50a1d58a2ecfa (diff)
Update AAF loading procedure2.1.3
Signed-off-by: efiacor <fiachra.corcoran@est.tech> Issue-ID: DMAAP-1318 Change-Id: I8dc75bdbcd05e5316b5c05cbc258010068fb63e8
Diffstat (limited to 'datarouter-prov')
-rw-r--r--datarouter-prov/aaf_certs/org.onap.dmaap-dr.jksbin3647 -> 0 bytes
-rw-r--r--datarouter-prov/aaf_certs/org.onap.dmaap-dr.keyfile27
-rwxr-xr-xdatarouter-prov/pom.xml101
-rw-r--r--datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Main.java91
-rwxr-xr-xdatarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java19
-rw-r--r--datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SynchronizerTask.java26
-rw-r--r--datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/AafPropsUtils.java102
-rw-r--r--datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DB.java3
-rw-r--r--datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRRouteCLI.java34
-rw-r--r--datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.cred.props17
-rw-r--r--datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.keyfile27
-rw-r--r--datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.location.props8
-rw-r--r--datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.p12bin0 -> 4233 bytes
-rw-r--r--datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.props21
-rw-r--r--datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.trust.jks (renamed from datarouter-prov/aaf_certs/org.onap.dmaap-dr.trust.jks)bin1413 -> 1413 bytes
-rw-r--r--datarouter-prov/src/main/resources/docker/Dockerfile6
-rw-r--r--datarouter-prov/src/main/resources/docker/startup.sh3
-rw-r--r--datarouter-prov/src/main/resources/drProvCadi.properties23
-rwxr-xr-xdatarouter-prov/src/main/resources/provserver.properties12
-rw-r--r--datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/AafPropsUtilsTest.java64
-rw-r--r--datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.cred.props17
-rw-r--r--datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.keyfile27
-rw-r--r--datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.props21
-rwxr-xr-xdatarouter-prov/src/test/resources/h2Database.properties9
24 files changed, 429 insertions, 229 deletions
diff --git a/datarouter-prov/aaf_certs/org.onap.dmaap-dr.jks b/datarouter-prov/aaf_certs/org.onap.dmaap-dr.jks
deleted file mode 100644
index 17027970..00000000
--- a/datarouter-prov/aaf_certs/org.onap.dmaap-dr.jks
+++ /dev/null
Binary files differ
diff --git a/datarouter-prov/aaf_certs/org.onap.dmaap-dr.keyfile b/datarouter-prov/aaf_certs/org.onap.dmaap-dr.keyfile
deleted file mode 100644
index 59f161f9..00000000
--- a/datarouter-prov/aaf_certs/org.onap.dmaap-dr.keyfile
+++ /dev/null
@@ -1,27 +0,0 @@
-XzAbZ4lSt3j0vgqonk1lGgt_2IvBzet-MDbt7nlxdj5vrQbUBET9eqIfjRBMlen0E815nYm6nRBi
-RR2fUKzqO8JIn2s19e3fmYrp9wTbIkY9GXOzsnuSeyRxVxxW-82VrAD-gSBmqUEJvPjqjVWinadL
-LVy1h9lE35EErQkBpK_GmqVp2RajjXv8N_5LcKkkc4vYJQ8WclOHwN_BnQpNS1NLBWJVXSPeVwjM
-zIkQ10Q6GGEGCurBPLef9UiXD73oVnQsVyZY3E87X7RbDfCiVbfmHN1hyVkR3DX6gDfrfjTnqkqE
-Hv7kw43qXx9-aRCHrqnmaGYBTscU5JgxTNpqe5hvxLJHnDwLTtHDx-vES0PljekcofQVT5pWJvRK
-ltZtPQwuGlapONa_rDuMq3sSDx8gXKE01rjK0bNDurIPvFzyef0RoDYIc3m4M-KdsBMlnE7oyBAz
-OXCPt42HLJX55F9boRIWwSy-8o3AsPXwQTwEKoD7ZUL4pZ2Zf45npfQLlhhs5x_ERcPTrOXrF7Uu
-40HxQnMbwO_Ofz7CrlKe78UImSJbsQp0heyBbr6irHrMq6_E1DqbjWafs_a4kKNbtfN4fHHvxkA0
-9J_plrqVOoBqFaeUc9MJt_6WBYq2vDFbHSvBf9QZKnaVZ3aKU2MzV2Y5xjw7V6rgDQHwmXXeAmfV
--Z3JT5ocQhyG4SqyKhSrzh4nGOMt51yy68hPPHMrYnpW8VF99qTLqSmQfLAeNqog413Efj75oQDW
-JLw1BR56ABvCPdcR5wZruo2Egwak1UyiRL0Mjd8txrjc4uojiiqddqalEQrORvn4BgP0OKQOOdUx
-dArQ4HqjBGwvurQUM0XjBvyqki1h1pxhSNeuyOY3mofVB2NNi-ZvSHHUpwqIgQ4kVLombpsKw2W9
-AW-3h4cLYl3LgP_LRH5mS8Mo_BEKZqivM9v9YYVZCgB2Djqyn3MQXpcFSxaB1AK9wG4TmMneFP7W
-_dHqJnx26njAtff1y2ud8cmW_UGgzMb33QGIjIrYo3AVX8_G8iEQ-838fDpGE7BdqLSam-BMoeo3
-WPht7-O8gx7utuYx1ceCetunKRmh3Tfga_0srBNDWMyzuiPvbLX3oUJO_F5p5734Qwm5CeqCAaJv
-sU_yfzTgUPqS6jC9cuKi54h3HrzV-k7DcSdGrpsAgzYZdHwi7XFfAzFOhkpBeNUNzDCX8B7yTHjU
-dKdGDezdgs7lMWbJwnSNFDyTwbZdk4XTnSrtdhmOZp4oVizEQgha0Un0ISKQ519kajTFj1rZV6ue
-h8SzN4QXOw6BHYB5rsy8YEvWbkfyneQ74HeyeWRRq3p4UdBTTUn2JbGM0neErRrxnYvmKIdFlSsU
-NlEgNf7dh_kqdWUBkXfud32ftazttjmiO4zkqBupsJTlxj9Tjam9aZqNhunPNI9znf4luKAiRa3v
-26giSwRUX8mjlK5FvBNUbLeFM-G3Pk2jQej13q1lZ3PZMesLjUwvvMIdlu9qmDx_TCYSy72-6O2A
-qmPlUeYCKgI8eVaZV79aM6YtomaopHiPCcyJGWl114Ke4j8H3-Lg3EkjfVROwQw_fKn2z4Eci7io
-LetFQnibRw2ow-Z0F-Db3kuEuRTgmb6U0pMUO3njou6Sq7oa_gaND0XYHy6MKGu1uJ9aKVLZ9uy4
-m9KRxZvq71LRJkD84y9bMv14lxzUsosuzbXV7Q_uz8kceWSq_1BLXQXam9j5rxN6SKEk_Rn0jgnX
-h4A4e7q6loMXUq4nPSVII9K6pHAqfi1sDLhVZ239XcLBwKY9R5f0jgYy76AI1dN-_oEMdXJf_L6w
-KuRJ4jy0XSfyV_QvS6at77san2UIOkdY_tuI03Ps3fTzSaztsy5yX22t-6TnkFSoYxGkuMw9R-Rn
-ZwJIanS3v_wQbgNdUB6JIlE_9kkHYCokheldHkKndV8eEc6Z6bgasNWKB3PreI1m6UrfZI3agd-n
-zhsQppGFk8j7Tkq4S_9SP1OFVCgCT3-mU0UhPhDhCFPM1bladfj8RptCbPKO66evW1c_ooU2 \ No newline at end of file
diff --git a/datarouter-prov/pom.xml b/datarouter-prov/pom.xml
index 92a1bf46..e141595e 100755
--- a/datarouter-prov/pom.xml
+++ b/datarouter-prov/pom.xml
@@ -45,6 +45,15 @@
</properties>
<dependencies>
<dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.mariadb.jdbc</groupId>
+ <artifactId>mariadb-java-client</artifactId>
+ <version>2.3.0</version>
+ </dependency>
+ <dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
</dependency>
@@ -125,46 +134,50 @@
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
+ <groupId>org.dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>2.1.1</version>
+ </dependency>
+ <dependency>
<groupId>org.sonatype.http-testing-harness</groupId>
<artifactId>junit-runner</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-support</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mariadb.jdbc</groupId>
- <artifactId>mariadb-java-client</artifactId>
- <version>2.3.0</version>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
@@ -176,22 +189,18 @@
<artifactId>dom4j</artifactId>
</exclusion>
</exclusions>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-core</artifactId>
- <version>1.3</version>
+ <artifactId>hamcrest-library</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.2.Final</version>
- </dependency>
- <dependency>
- <groupId>org.dom4j</groupId>
- <artifactId>dom4j</artifactId>
- <version>2.1.1</version>
+ <scope>test</scope>
</dependency>
</dependencies>
<profiles>
@@ -254,20 +263,7 @@
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
- </includes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- <includes>
- <include>**/provserver.properties</include>
- </includes>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- <includes>
- <include>**/EelfMessages.properties</include>
+ <include>**/logback.xml</include>
</includes>
</resource>
</resources>
@@ -349,7 +345,7 @@
</configuration>
</execution>
<execution>
- <id>copy-resources-2</id>
+ <id>copy-resources-etc</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
@@ -363,61 +359,32 @@
<include>misc/**</include>
<include>**/**</include>
</includes>
+ <excludes>
+ <exclude>aaf/**</exclude>
+ <exclude>docker/**</exclude>
+ </excludes>
</resource>
</resources>
</configuration>
</execution>
<execution>
- <id>copy-resources-3</id>
+ <id>copy-aaf-props</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr</outputDirectory>
+ <outputDirectory>${basedir}/target/docker-stage/opt/app/osaaf/local</outputDirectory>
<resources>
<resource>
- <directory>${basedir}/data</directory>
+ <directory>${basedir}/src/main/resources/aaf</directory>
<includes>
- <include>misc/**</include>
<include>**/**</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
- <execution>
- <id>copy-resources-4</id>
- <phase>validate</phase>
- <goals>
- <goal>copy-resources</goal>
- </goals>
- <configuration>
- <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/aaf_certs</outputDirectory>
- <resources>
- <resource>
- <directory>${basedir}/aaf_certs</directory>
- <includes>
- <include>misc/**</include>
- <include>**/**</include>
- </includes>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- <phase>package</phase>
- <configuration>
- <outputDirectory>${project.build.directory}/docker-stage/opt/app/datartr/lib</outputDirectory>
- </configuration>
- </execution>
</executions>
</plugin>
<plugin>
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Main.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Main.java
index aefe8cdf..3269c843 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Main.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/Main.java
@@ -24,10 +24,12 @@
package org.onap.dmaap.datarouter.provisioning;
+import static java.lang.System.exit;
+
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
+import java.io.File;
import java.io.IOException;
-import java.io.InputStream;
import java.security.Security;
import java.util.EnumSet;
import java.util.Properties;
@@ -51,8 +53,7 @@ import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
-import org.onap.aaf.cadi.PropAccess;
-
+import org.onap.dmaap.datarouter.provisioning.utils.AafPropsUtils;
import org.onap.dmaap.datarouter.provisioning.utils.DB;
import org.onap.dmaap.datarouter.provisioning.utils.DRProvCadiFilter;
import org.onap.dmaap.datarouter.provisioning.utils.LogfileLoader;
@@ -90,15 +91,6 @@ import org.onap.dmaap.datarouter.provisioning.utils.ThrottleFilter;
*/
public class Main {
- /**
- * The truststore to use if none is specified.
- */
- static final String DEFAULT_TRUSTSTORE = "/opt/java/jdk/jdk180/jre/lib/security/cacerts";
- static final String KEYSTORE_TYPE_PROPERTY = "org.onap.dmaap.datarouter.provserver.keystore.type";
- static final String KEYSTORE_PATH_PROPERTY = "org.onap.dmaap.datarouter.provserver.keystore.path";
- static final String KEYSTORE_PASS_PROPERTY = "org.onap.dmaap.datarouter.provserver.keystore.password";
- static final String TRUSTSTORE_PATH_PROPERTY = "org.onap.dmaap.datarouter.provserver.truststore.path";
- static final String TRUSTSTORE_PASS_PROPERTY = "org.onap.dmaap.datarouter.provserver.truststore.password";
public static final EELFLogger intlogger = EELFManager.getInstance()
.getLogger("org.onap.dmaap.datarouter.provisioning.internal");
@@ -106,18 +98,7 @@ public class Main {
* The one and only {@link Server} instance in this JVM.
*/
private static Server server;
-
- class Inner {
- InputStream getCadiProps() {
- InputStream in = null;
- try {
- in = getClass().getClassLoader().getResourceAsStream("drProvCadi.properties");
- } catch (Exception e) {
- intlogger.error("Exception in Main.getCadiProps(): " + e.getMessage(), e);
- }
- return in;
- }
- }
+ static AafPropsUtils aafPropsUtils;
/**
* Starts the Data Router Provisioning server.
@@ -129,10 +110,11 @@ public class Main {
Security.setProperty("networkaddress.cache.ttl", "4");
// Check DB is accessible and contains the expected tables
if (!checkDatabase()) {
- System.exit(1);
+ intlogger.error("Data Router Provisioning database init failure. Exiting.");
+ exit(1);
}
- intlogger.info("PROV0000 **** AT&T Data Router Provisioning Server starting....");
+ intlogger.info("PROV0000 **** Data Router Provisioning Server starting....");
Security.setProperty("networkaddress.cache.ttl", "4");
Properties provProperties = (new DB()).getProperties();
@@ -180,6 +162,16 @@ public class Main {
httpConfiguration.setSendServerVersion(true);
httpConfiguration.setSendDateHeader(false);
+ try {
+ AafPropsUtils.init(new File(provProperties.getProperty(
+ "org.onap.dmaap.datarouter.provserver.aafprops.path",
+ "/opt/app/osaaf/local/org.onap.dmaap-dr.props")));
+ } catch (IOException e) {
+ intlogger.error("NODE0314 Failed to load AAF props. Exiting", e);
+ exit(1);
+ }
+ aafPropsUtils = AafPropsUtils.getInstance();
+
//HTTP Connector
HandlerCollection handlerCollection;
try (ServerConnector httpServerConnector =
@@ -190,19 +182,19 @@ public class Main {
// SSL Context
SslContextFactory sslContextFactory = new SslContextFactory();
- sslContextFactory.setKeyStoreType(provProperties.getProperty(KEYSTORE_TYPE_PROPERTY, "jks"));
- sslContextFactory.setKeyStorePath(provProperties.getProperty(KEYSTORE_PATH_PROPERTY));
- sslContextFactory.setKeyStorePassword(provProperties.getProperty(KEYSTORE_PASS_PROPERTY));
- sslContextFactory.setKeyManagerPassword(provProperties
- .getProperty("org.onap.dmaap.datarouter.provserver.keymanager.password"));
-
- String ts = provProperties.getProperty(TRUSTSTORE_PATH_PROPERTY);
- if (ts != null && ts.length() > 0) {
- intlogger.info("@@ TS -> " + ts);
- sslContextFactory.setTrustStorePath(ts);
- sslContextFactory.setTrustStorePassword(provProperties.getProperty(TRUSTSTORE_PASS_PROPERTY));
+ sslContextFactory.setKeyStoreType(AafPropsUtils.KEYSTORE_TYPE_PROPERTY);
+ sslContextFactory.setKeyStorePath(aafPropsUtils.getKeystorePathProperty());
+ sslContextFactory.setKeyStorePassword(aafPropsUtils.getKeystorePassProperty());
+ sslContextFactory.setKeyManagerPassword(aafPropsUtils.getKeystorePassProperty());
+
+ String truststorePathProperty = aafPropsUtils.getTruststorePathProperty();
+ if (truststorePathProperty != null && truststorePathProperty.length() > 0) {
+ intlogger.info("@@ TS -> " + truststorePathProperty);
+ sslContextFactory.setTrustStoreType(AafPropsUtils.TRUESTSTORE_TYPE_PROPERTY);
+ sslContextFactory.setTrustStorePath(truststorePathProperty);
+ sslContextFactory.setTrustStorePassword(aafPropsUtils.getTruststorePassProperty());
} else {
- sslContextFactory.setTrustStorePath(DEFAULT_TRUSTSTORE);
+ sslContextFactory.setTrustStorePath(AafPropsUtils.DEFAULT_TRUSTSTORE);
sslContextFactory.setTrustStorePassword("changeit");
}
@@ -263,23 +255,9 @@ public class Main {
//CADI Filter activation check
if (Boolean.parseBoolean(provProperties.getProperty(
"org.onap.dmaap.datarouter.provserver.cadi.enabled", "false"))) {
- //Get cadi properties
- Properties cadiProperties = null;
- try {
- intlogger.info("PROV0001 Prov - Loading CADI properties");
- cadiProperties = new Properties();
- Inner obj = new Main().new Inner();
- InputStream in = obj.getCadiProps();
- cadiProperties.load(in);
- } catch (IOException ioe) {
- intlogger.error("PROV0001 Exception loading CADI properties: " + ioe.getMessage(), ioe);
- }
- cadiProperties.setProperty("aaf_locate_url", provProperties.getProperty("org.onap.dmaap.datarouter.provserver.cadi.aaf.url", "https://aaf-onap-test.osaaf.org:8095"));
- intlogger.info("PROV0001 aaf_url set to - " + cadiProperties.getProperty("aaf_url"));
-
- PropAccess access = new PropAccess(cadiProperties);
- servletContextHandler.addFilter(new FilterHolder(new DRProvCadiFilter(true, access)),
+ servletContextHandler.addFilter(new FilterHolder(new DRProvCadiFilter(true, aafPropsUtils.getPropAccess())),
"/*", EnumSet.of(DispatcherType.REQUEST));
+ intlogger.info("PROV0001 AAF CADI Auth enabled for ");
}
ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
@@ -306,7 +284,8 @@ public class Main {
server.start();
intlogger.info("Prov Server started-" + server.getState());
} catch (Exception e) {
- intlogger.info("Jetty failed to start. Reporting will we unavailable: " + e.getMessage(), e);
+ intlogger.error("Jetty failed to start. Exiting: " + e.getMessage(), e);
+ exit(1);
}
server.join();
intlogger.info("PROV0001 **** AT&T Data Router Provisioning Server halted.");
@@ -325,7 +304,7 @@ public class Main {
try {
server.stop();
Thread.sleep(5000L);
- System.exit(0);
+ exit(0);
} catch (Exception e) {
intlogger.error("Exception in Main.shutdown(): " + e.getMessage(), e);
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java
index c9075b0c..72d55a4c 100755
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProxyServlet.java
@@ -53,6 +53,7 @@ import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.BasicHttpEntity;
import org.apache.http.impl.client.AbstractHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
+import org.onap.dmaap.datarouter.provisioning.utils.AafPropsUtils;
import org.onap.dmaap.datarouter.provisioning.utils.DB;
import org.onap.dmaap.datarouter.provisioning.utils.URLUtilities;
@@ -80,21 +81,23 @@ public class ProxyServlet extends BaseServlet {
super.init(config);
try {
// Set up keystore
- Properties props = (new DB()).getProperties();
- String store = props.getProperty(Main.TRUSTSTORE_PATH_PROPERTY);
- String pass = props.getProperty(Main.TRUSTSTORE_PASS_PROPERTY);
+ String type = AafPropsUtils.KEYSTORE_TYPE_PROPERTY;
+ String store = Main.aafPropsUtils.getKeystorePathProperty();
+ String pass = Main.aafPropsUtils.getKeystorePassProperty();
+ KeyStore keyStore = readStore(store, pass, type);
+ // Set up truststore
+ store = Main.aafPropsUtils.getTruststorePathProperty();
+ pass = Main.aafPropsUtils.getTruststorePassProperty();
if (store == null || store.length() == 0) {
- store = Main.DEFAULT_TRUSTSTORE;
+ store = AafPropsUtils.DEFAULT_TRUSTSTORE;
pass = "changeit";
}
- KeyStore trustStore = readStore(store, pass, KeyStore.getDefaultType());
+ KeyStore trustStore = readStore(store, pass, AafPropsUtils.TRUESTSTORE_TYPE_PROPERTY);
// We are connecting with the node name, but the certificate will have the CNAME
// So we need to accept a non-matching certificate name
- String type = props.getProperty(Main.KEYSTORE_TYPE_PROPERTY, "jks");
- KeyStore keyStore = readStore(store, pass, type);
SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore,
- props.getProperty(Main.KEYSTORE_PASS_PROPERTY), trustStore);
+ Main.aafPropsUtils.getKeystorePassProperty(), trustStore);
socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
sch = new Scheme("https", 443, socketFactory);
inited = true;
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SynchronizerTask.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SynchronizerTask.java
index 5d0592c3..2a907fb7 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SynchronizerTask.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/SynchronizerTask.java
@@ -77,6 +77,7 @@ import org.onap.dmaap.datarouter.provisioning.beans.NetworkRoute;
import org.onap.dmaap.datarouter.provisioning.beans.Parameters;
import org.onap.dmaap.datarouter.provisioning.beans.Subscription;
import org.onap.dmaap.datarouter.provisioning.beans.Syncable;
+import org.onap.dmaap.datarouter.provisioning.utils.AafPropsUtils;
import org.onap.dmaap.datarouter.provisioning.utils.DB;
import org.onap.dmaap.datarouter.provisioning.utils.LogfileLoader;
import org.onap.dmaap.datarouter.provisioning.utils.RLEBitSet;
@@ -144,20 +145,21 @@ public class SynchronizerTask extends TimerTask {
logger.info("PROV5000: Sync task starting, server podState is UNKNOWN_POD");
try {
- Properties props = (new DB()).getProperties();
- String type = props.getProperty(Main.KEYSTORE_TYPE_PROPERTY, "jks");
- String store = props.getProperty(Main.KEYSTORE_PATH_PROPERTY);
- String pass = props.getProperty(Main.KEYSTORE_PASS_PROPERTY);
+ // Set up keystore
+ String type = AafPropsUtils.KEYSTORE_TYPE_PROPERTY;
+ String store = Main.aafPropsUtils.getKeystorePathProperty();
+ String pass = Main.aafPropsUtils.getKeystorePassProperty();
KeyStore keyStore = KeyStore.getInstance(type);
try (FileInputStream instream = new FileInputStream(new File(store))) {
keyStore.load(instream, pass.toCharArray());
}
- store = props.getProperty(Main.TRUSTSTORE_PATH_PROPERTY);
- pass = props.getProperty(Main.TRUSTSTORE_PASS_PROPERTY);
+ // Set up truststore
+ store = Main.aafPropsUtils.getTruststorePathProperty();
+ pass = Main.aafPropsUtils.getTruststorePassProperty();
KeyStore trustStore = null;
if (store != null && store.length() > 0) {
- trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
+ trustStore = KeyStore.getInstance(AafPropsUtils.TRUESTSTORE_TYPE_PROPERTY);
try (FileInputStream instream = new FileInputStream(new File(store))) {
trustStore.load(instream, pass.toCharArray());
@@ -166,7 +168,7 @@ public class SynchronizerTask extends TimerTask {
// We are connecting with the node name, but the certificate will have the CNAME
// So we need to accept a non-matching certificate name
- String keystorepass = props.getProperty(Main.KEYSTORE_PASS_PROPERTY);
+ String keystorepass = Main.aafPropsUtils.getKeystorePassProperty();
try (AbstractHttpClient hc = new DefaultHttpClient()) {
SSLSocketFactory socketFactory =
(trustStore == null)
@@ -177,18 +179,18 @@ public class SynchronizerTask extends TimerTask {
hc.getConnectionManager().getSchemeRegistry().register(sch);
httpclient = hc;
}
- setSynchTimer(props);
+ setSynchTimer(new DB().getProperties().getProperty(
+ "org.onap.dmaap.datarouter.provserver.sync_interval", "5000"));
} catch (Exception e) {
logger.warn("PROV5005: Problem starting the synchronizer: " + e);
}
}
- private void setSynchTimer(Properties props) {
+ private void setSynchTimer(String strInterval) {
// Run once every 5 seconds to check DNS, etc.
long interval;
try {
- String str = props.getProperty("org.onap.dmaap.datarouter.provserver.sync_interval", "5000");
- interval = Long.parseLong(str);
+ interval = Long.parseLong(strInterval);
} catch (NumberFormatException e) {
interval = 5000L;
}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/AafPropsUtils.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/AafPropsUtils.java
new file mode 100644
index 00000000..68981599
--- /dev/null
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/AafPropsUtils.java
@@ -0,0 +1,102 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * Licensed 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dmaap.datarouter.provisioning.utils;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import org.onap.aaf.cadi.PropAccess;
+
+public class AafPropsUtils {
+
+ private static AafPropsUtils aafPropsUtilsInstance = null;
+ private static EELFLogger eelfLogger = EELFManager.getInstance().getLogger(AafPropsUtils.class);
+
+ public static final String DEFAULT_TRUSTSTORE = "/opt/app/osaaf/local/org.onap.dmaap-dr.trust.jks";
+ public static final String KEYSTORE_TYPE_PROPERTY = "PKCS12";
+ public static final String TRUESTSTORE_TYPE_PROPERTY = "jks";
+ private static final String KEYSTORE_PATH_PROPERTY = "cadi_keystore";
+ private static final String KEYSTORE_PASS_PROPERTY = "cadi_keystore_password_p12";
+ private static final String TRUSTSTORE_PATH_PROPERTY = "cadi_truststore";
+ private static final String TRUSTSTORE_PASS_PROPERTY = "cadi_truststore_password";
+
+ private PropAccess propAccess;
+
+ private AafPropsUtils(File propsFile) throws IOException {
+ propAccess = new PropAccess();
+ try {
+ propAccess.load(new FileInputStream(propsFile));
+ } catch (IOException e) {
+ eelfLogger.error("Failed to load props file: " + propsFile + "\n" + e.getMessage(), e);
+ throw e;
+ }
+ }
+
+ public static synchronized void init(File propsFile) throws IOException {
+ if (aafPropsUtilsInstance != null) {
+ throw new IllegalStateException("Already initialized");
+ }
+ aafPropsUtilsInstance = new AafPropsUtils(propsFile);
+ }
+
+ public static AafPropsUtils getInstance() {
+ if (aafPropsUtilsInstance == null) {
+ throw new IllegalStateException("Call AafPropsUtils.init(File propsFile) first");
+ }
+ return aafPropsUtilsInstance;
+ }
+
+ private String decryptedPass(String password) {
+ String decryptedPass = null;
+ try {
+ decryptedPass = propAccess.decrypt(password, false);
+ } catch (IOException e) {
+ eelfLogger.error("Failed to decrypt " + password + " : " + e.getMessage(), e);
+ }
+ return decryptedPass;
+ }
+
+ public PropAccess getPropAccess() {
+ if (propAccess == null) {
+ throw new IllegalStateException("Call AafPropsUtils.init(File propsFile) first");
+ }
+ return propAccess;
+ }
+
+ public String getKeystorePathProperty() {
+ return propAccess.getProperty(KEYSTORE_PATH_PROPERTY);
+ }
+
+ public String getKeystorePassProperty() {
+ return decryptedPass(propAccess.getProperty(KEYSTORE_PASS_PROPERTY));
+ }
+
+ public String getTruststorePathProperty() {
+ return propAccess.getProperty(TRUSTSTORE_PATH_PROPERTY);
+ }
+
+ public String getTruststorePassProperty() {
+ return decryptedPass(propAccess.getProperty(TRUSTSTORE_PASS_PROPERTY));
+ }
+
+}
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DB.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DB.java
index 340b4213..a83f81a5 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DB.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DB.java
@@ -114,8 +114,7 @@ public class DB {
synchronized (queue) {
try {
connection = queue.remove();
- } catch (NoSuchElementException nseEx) {
- intlogger.error("PROV9006 No connection on queue: " + nseEx.getMessage(), nseEx);
+ } catch (NoSuchElementException ignore) {
int num = 0;
do {
// Try up to 3 times to get a connection
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRRouteCLI.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRRouteCLI.java
index 867d1163..f078d80e 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRRouteCLI.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/DRRouteCLI.java
@@ -23,6 +23,8 @@
package org.onap.dmaap.datarouter.provisioning.utils;
+import static java.lang.System.exit;
+
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import java.io.File;
@@ -96,9 +98,9 @@ public class DRRouteCLI {
}
}
- public static final String ENV_VAR = "PROVSRVR";
- public static final String PROMPT = "dr-route> ";
- public static final String DEFAULT_TRUSTSTORE_PATH = /* $JAVA_HOME + */ "/jre/lib/security/cacerts";
+ private static final String ENV_VAR = "PROVSRVR";
+ private static final String PROMPT = "dr-route> ";
+ private static final String DEFAULT_TRUSTSTORE_PATH = /* $JAVA_HOME + */ "/jre/lib/security/cacerts";
private static final EELFLogger intlogger = EELFManager.getInstance().getLogger("InternalLog");
private final String server;
@@ -113,12 +115,20 @@ public class DRRouteCLI {
*/
public DRRouteCLI(String server) throws Exception {
this.server = server;
- this.width = 120;
this.httpclient = new DefaultHttpClient();
- Properties prop = (new DB()).getProperties();
- String truststoreFile = prop.getProperty("org.onap.dmaap.datarouter.provserver.truststore.path");
- String truststorePw = prop.getProperty("org.onap.dmaap.datarouter.provserver.truststore.password");
+ Properties provProperties = (new DB()).getProperties();
+ try {
+ AafPropsUtils.init(new File(provProperties.getProperty(
+ "org.onap.dmaap.datarouter.provserver.aafprops.path",
+ "/opt/app/osaaf/local/org.onap.dmaap-dr.props")));
+ } catch (IOException e) {
+ intlogger.error("NODE0314 Failed to load AAF props. Exiting", e);
+ exit(1);
+ }
+
+ String truststoreFile = AafPropsUtils.getInstance().getTruststorePathProperty();
+ String truststorePw = AafPropsUtils.getInstance().getTruststorePassProperty();
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
if (truststoreFile == null || truststoreFile.equals("")) {
@@ -139,8 +149,8 @@ public class DRRouteCLI {
} finally {
try {
instream.close();
- } catch (Exception ignore) {
- intlogger.error("Ignore error closing input stream: " + ignore.getMessage(), ignore);
+ } catch (Exception e) {
+ intlogger.error("Ignore error closing input stream: " + e.getMessage(), e);
}
}
}
@@ -178,7 +188,7 @@ public class DRRouteCLI {
* @param args The command line arguments.
* @return true if the command was valid and succeeded
*/
- public boolean runCommand(String[] args) {
+ boolean runCommand(String[] args) {
String cmd = args[0].trim().toLowerCase();
if (cmd.equals("add")) {
if (args.length > 2) {
@@ -471,12 +481,12 @@ public class DRRouteCLI {
return rv;
}
- private void printErrorText(HttpEntity entity) throws IllegalStateException, IOException {
+ private void printErrorText(HttpEntity entity) throws IOException {
// Look for and print only the part of the output between <pre>...</pre>
InputStream is = entity.getContent();
StringBuilder sb = new StringBuilder();
byte[] bite = new byte[512];
- int num = 0;
+ int num;
while ((num = is.read(bite)) > 0) {
sb.append(new String(bite, 0, num));
}
diff --git a/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.cred.props b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.cred.props
new file mode 100644
index 00000000..ddc3da56
--- /dev/null
+++ b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.cred.props
@@ -0,0 +1,17 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2019-10-02T14:52:33.828+0000
+# @copyright 2019, AT&T
+############################################################
+Challenge=enc:D1K4bZlKwIDTY6RYX4V1nCgj1mJruMZ4qDaO80iSwm20J8zpUa0qEzOwM-aFjKCe
+cadi_alias=dmaap-dr-prov@dmaap-dr.onap.org
+cadi_key_password=enc:d80GqeXpOhPOmZAn76t5xgKlq54yAPYQw-OoVqFwcXkCwd58zwHfzZQ3Rgitj30-
+cadi_keyfile=/opt/app/osaaf/local/org.onap.dmaap-dr.keyfile
+cadi_keystore=/opt/app/osaaf/local/org.onap.dmaap-dr.p12
+cadi_keystore_password=enc:xcPI_-oWnLvQ8SFDyafZG7ii7yZdcgaUwVQFp7x9mkHTnyODGDUaPHb5svAE2euP
+cadi_keystore_password_jks=enc:EO1-8pk7wWbiGMriX0aAOX0zxoQ9-ow7LRqOlKgMYVlYGs59yappGzKd0FxkcqM0
+cadi_keystore_password_p12=enc:xcPI_-oWnLvQ8SFDyafZG7ii7yZdcgaUwVQFp7x9mkHTnyODGDUaPHb5svAE2euP
+cadi_truststore=/opt/app/osaaf/local/org.onap.dmaap-dr.trust.jks
+cadi_truststore_password=enc:XawqMezvaPspcdG9J9tdYx-pEtIu4VaY_QG3ZyLtyWg_gsxvrfg2tInmj95fAkrj
+cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
diff --git a/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.keyfile b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.keyfile
new file mode 100644
index 00000000..c5d9d876
--- /dev/null
+++ b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.keyfile
@@ -0,0 +1,27 @@
+0wlntBQae2B_RCqlj0vFvThyNkGfB47eGQ-JDX2LvNaIWjhg6P114TZ1dVwoqIUO_GvGdZfXvTNe
+9W-86XLVDuaom2Ep0bWGpweiIfnRuXuMWwZy7vNRS_jj1GQ8Y30_SrXft3YVHR_r1AC3XTOk1LSS
+Yeo356B7juJuOnkRpZwyZflEZM_U72EymWOd5JKb5ugrtdRBCXzh_pmQ24kxepi8XMFoaViI2ccL
+KbL3fjSsberNKsSYqeGtXmcElEvDUfNam_ylxTStu-BbZRjelr5zY-rQnvXl01Tapkdl_ejIo8fT
+FcdZTSMH2eic32WGO5QJzIhaEXoJu3oNzK0x-rfyURtE15tJAn6FiFvtWFb8nSnWH8TBUYnTLXiJ
+6cBE2ER7MQwf5NMGBa1CaLYzrx4B0ZbrbtBr2ETt7k9r1RxjxAoBBxpiMz9ivRj_KzO1mg8Cc47R
+PXkjlspPGsx--568_TVSrrFA5nM8By33kDTZCpQbAboFophLRyQ8r6LPp6qEY5OD3YAzTL09nZsD
+brZPLowktube0wJLfsomvtPdol6eg44QuQgdZ4RyOaxbeQl5H9M2t6q9G6vRfyVGDkEwbF-rwllX
+XjSmltoUZwhjy7gtYZEnbPjwQcdCho0Pub2jj9xLNKf68oJFRQFB8orYNDoaqVdvRRLyeWOs6P86
+deRMIYPz3DzgzIINxZLyOivxlWXNX-fs5WOe3OUER_q5ONkvV2zXg9qnwQLiqbU_98GE6EA3w5X2
+BXTZsvPQTk9G9K3B-hCb9NIxmCPnlTTAHvmgwI7e4yrXOvHbbW4kAaLiT5CzBrcm7cUv-5ADecCM
+NUTHKYqu0HeRr1L5f56OQESp_G16NtStQ3j-9G_bFMrc6gkGMioWaFxdTfBvKYoP7Mbnkaw5L0Tt
+TK7PR_3VfET4fdMg33l7YnnRu-B114qGxCQCz7KvcoLfKRwYKi-F5Hf_t36IAAFJheflKkSqzLCF
+WjY6cO9DrVz2L60iybXwaNXROVzt2HMLnMLI9e7EQMX7censpQ-NW6vhN7udWiIJ9flerZe3ofK6
+EO70sIAhS0ZkZvTDxiFfc2vryZc3sgtJAW-65D3DRhZyFLW8PerD4NUMpdu-Np-Dt89z4WxElFX5
+ZFs5hkSUSht8-mp84RDLju4y_3jcha5rhptGQMJBOwx9mtnkEoD6U2282dpYsCl3xgXICF1QPCD-
+v0oLlded24Tjm9WWeooYo7Gb_tKj8wtNmJwPQ7E9o5gd8XVwrckWugTdXufMmbedKQPZ4bmuqlkx
+VI3k05VIYuriTB4t1OsU8OgzoFyTn-38X00dzjJrE40vbX6GdJ51BdcULFz2gJuHKVrLXWPrqEFE
+S0moPSU7DyfrgIuRidDwtawAA-JHtgiuf_wrmpShQri1CJ3JCQ6yPAPTBXUjVjzlTCaVkIpmgMoe
+tclMBS4AaWP2ac5OPwxP3ldnZcMuHLSVhhxyNLk9nhn8BB8_vtNEZUopU2tb7OKHKgdX47qsP5aa
+ueb1_T_0ojj9grruiWO_C0_DaKlpmTh7xKzhCOt3w4IOTezN4If9oJ0AB-3vL7XHb6qs3OZw9Iop
+MB1ztIrv1QAE87ZfdyZzZVuNgmosZtNJa2IOjRe83ipr5-DolUgR5OYFNVNg-fFO59SwILdM38U9
+Nq4B_rzR9R7dEdOMp-rs4YBJxqLlL6zZE1tdEP6yba09Dx1fqeh1oXHlWjGSX5JZMnjwrgai_z3q
+2h2SeLOUlbyi-i-rMlrqbzro4-kFONIqZdAAsocjGfkoXBtGNJgkmGhHq2TMI2SCXDYqCKtFYOQa
+2XSGyJ1QsvOGcHlJhGK-hwFj_JcbnxDx6b_24RrEzWSTXlW0R03JAl9fM24Nk9Y1v5iO6fPfWXU0
+J5BniYOohauEGbogRLwupN9-Deh5JzZlaFCFEDup32oxm4RC6tVk_Ik6jA7C3wVU5pfu8t2lgG6M
+PhH0efEjQWNbX5Uv1pbTY8W5bIJ3BSYI4o-cRabaA8UbuCViJ8uvHvFIXew6O3pWDB7vcGKA \ No newline at end of file
diff --git a/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.location.props b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.location.props
new file mode 100644
index 00000000..4f6befb8
--- /dev/null
+++ b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.location.props
@@ -0,0 +1,8 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2019-10-02T14:52:10.009+0000
+# @copyright 2019, AT&T
+############################################################
+cadi_latitude=0.00
+cadi_longitude=0.00
diff --git a/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.p12 b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.p12
new file mode 100644
index 00000000..bd60d26e
--- /dev/null
+++ b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.p12
Binary files differ
diff --git a/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.props b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.props
new file mode 100644
index 00000000..561a8782
--- /dev/null
+++ b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.props
@@ -0,0 +1,21 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2019-10-02T14:52:10.008+0000
+# @copyright 2019, AT&T
+############################################################
+aaf_env=DEV
+aaf_id=dmaap-dr-prov@dmaap-dr.onap.org
+aaf_locate_url=https://aaf-locate:8095
+aaf_locator_container=docker
+aaf_locator_container_ns=onap
+aaf_oauth2_introspect_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.introspect:2.1/introspect
+aaf_oauth2_token_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.token:2.1/token
+aaf_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.service:2.1
+aaf_url_cm=https://AAF_LOCATE_URL/%CNS.%AAF_NS.cm:2.1
+aaf_url_fs=https://AAF_LOCATE_URL/%CNS.%AAF_NS.fs:2.1
+aaf_url_gui=https://AAF_LOCATE_URL/%CNS.%AAF_NS.gui:2.1
+aaf_url_hello=https://aaf-locate:8095/locate/onap.org.osaaf.aaf.hello:2.1
+aaf_url_oauth=https://AAF_LOCATE_URL/%CNS.%AAF_NS.oauth:2.1
+cadi_prop_files=/opt/app/osaaf/local/org.onap.dmaap-dr.location.props:/opt/app/osaaf/local/org.onap.dmaap-dr.cred.props
+cadi_protocols=TLSv1.1,TLSv1.2
diff --git a/datarouter-prov/aaf_certs/org.onap.dmaap-dr.trust.jks b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.trust.jks
index 2fe06cd2..0c9da2e5 100644
--- a/datarouter-prov/aaf_certs/org.onap.dmaap-dr.trust.jks
+++ b/datarouter-prov/src/main/resources/aaf/org.onap.dmaap-dr.trust.jks
Binary files differ
diff --git a/datarouter-prov/src/main/resources/docker/Dockerfile b/datarouter-prov/src/main/resources/docker/Dockerfile
index 115dc7cb..61d32473 100644
--- a/datarouter-prov/src/main/resources/docker/Dockerfile
+++ b/datarouter-prov/src/main/resources/docker/Dockerfile
@@ -34,7 +34,7 @@ RUN chmod 0700 startup.sh
ENTRYPOINT ["sh", "startup.sh"]
RUN addgroup -S -g 1001 onap \
- && adduser -S -u 1000 datarouter -G onap \
- && chown -R datarouter:onap /opt/
+ && adduser -S -u 1000 dradmin -G onap \
+ && chown -R dradmin:onap /opt/ /var/
-USER datarouter
+USER dradmin
diff --git a/datarouter-prov/src/main/resources/docker/startup.sh b/datarouter-prov/src/main/resources/docker/startup.sh
index ba0f7351..aa2f69b6 100644
--- a/datarouter-prov/src/main/resources/docker/startup.sh
+++ b/datarouter-prov/src/main/resources/docker/startup.sh
@@ -13,4 +13,5 @@ java -classpath $CLASSPATH org.onap.dmaap.datarouter.provisioning.Main
runner_file="$LIB/datarouter-prov-jar-with-dependencies.jar"
echo "Starting using" $runner_file
-java -Dorg.onap.dmaap.datarouter.provserver.properties=/opt/app/datartr/etc/provserver.properties -Dcom.att.eelf.logging.file=/opt/app/datartr/etc/logback.xml -Dcom.att.eelf.logging.path=/root -jar $runner_file \ No newline at end of file
+java -Dorg.onap.dmaap.datarouter.provserver.properties=/opt/app/datartr/etc/provserver.properties \
+-Dcom.att.eelf.logging.file=/opt/app/datartr/etc/logback.xml -Dcom.att.eelf.logging.path=/root -jar $runner_file \ No newline at end of file
diff --git a/datarouter-prov/src/main/resources/drProvCadi.properties b/datarouter-prov/src/main/resources/drProvCadi.properties
deleted file mode 100644
index 56f2e5c0..00000000
--- a/datarouter-prov/src/main/resources/drProvCadi.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
-cadi_keyfile=/opt/app/datartr/aaf_certs/org.onap.dmaap-dr.keyfile
-cadi_keystore=/opt/app/datartr/aaf_certs/org.onap.dmaap-dr.jks
-cadi_keystore_password=AT{];bvaDiytVD&oWhMZj0N5
-cadi_key_password=AT{];bvaDiytVD&oWhMZj0N5
-cadi_alias=dmaap-dr-prov@dmaap-dr.onap.org
-cadi_truststore=/opt/app/datartr/aaf_certs/org.onap.dmaap-dr.trust.jks
-cadi_truststore_password=ljlS@Y}0]{UO(TnwvEWkgJ%]
-
-aaf_env=DEV
-aaf_locate_url=https://aaf-onap-test.osaaf.org:8095
-aaf_oauth2_introspect_url=https://AAF_LOCATE_URL/AAF_NS.introspect:2.1/introspect
-aaf_oauth2_token_url=https://AAF_LOCATE_URL/AAF_NS.token:2.1/token
-aaf_url=https://AAF_LOCATE_URL/AAF_NS.service:2.1
-cadi_protocols=TLSv1.1,TLSv1.2
-cm_url=https://AAF_LOCATE_URL/AAF_NS.cm:2.1
-fs_url=https://AAF_LOCATE_URL/AAF_NS.fs.2.1
-gui_url=https://AAF_LOCATE_URL/AAF_NS.gui.2.1
-
-cadi_latitude=53.423
-cadi_longitude=7.940
-
-cadi_loglevel=DEBUG \ No newline at end of file
diff --git a/datarouter-prov/src/main/resources/provserver.properties b/datarouter-prov/src/main/resources/provserver.properties
index 59b791dc..20b5cb92 100755
--- a/datarouter-prov/src/main/resources/provserver.properties
+++ b/datarouter-prov/src/main/resources/provserver.properties
@@ -26,12 +26,7 @@ org.onap.dmaap.datarouter.provserver.http.port = 8080
org.onap.dmaap.datarouter.provserver.https.port = 8443
org.onap.dmaap.datarouter.provserver.https.relaxation = true
-org.onap.dmaap.datarouter.provserver.keystore.type = jks
-org.onap.dmaap.datarouter.provserver.keymanager.password = FZNkU,B%NJzcT1v7;^v]M#ZX
-org.onap.dmaap.datarouter.provserver.keystore.path = /opt/app/datartr/aaf_certs/org.onap.dmaap-dr.jks
-org.onap.dmaap.datarouter.provserver.keystore.password = FZNkU,B%NJzcT1v7;^v]M#ZX
-org.onap.dmaap.datarouter.provserver.truststore.path = /opt/app/datartr/aaf_certs/org.onap.dmaap-dr.trust.jks
-org.onap.dmaap.datarouter.provserver.truststore.password = +mzf@J.D^;3!![*Xr.z$c#?b
+org.onap.dmaap.datarouter.provserver.aafprops.path = /opt/app/osaaf/local/org.onap.dmaap-dr.props
org.onap.dmaap.datarouter.provserver.accesslog.dir = /opt/app/datartr/logs
org.onap.dmaap.datarouter.provserver.spooldir = /opt/app/datartr/spool
@@ -62,7 +57,4 @@ org.onap.dmaap.datarouter.provserver.aaf.feed.type = org.onap.dmaap-dr.fe
org.onap.dmaap.datarouter.provserver.aaf.sub.type = org.onap.dmaap-dr.sub
org.onap.dmaap.datarouter.provserver.aaf.instance = legacy
org.onap.dmaap.datarouter.provserver.aaf.action.publish = publish
-org.onap.dmaap.datarouter.provserver.aaf.action.subscribe = subscribe
-
-# AAF URL to connect to AAF server
-org.onap.dmaap.datarouter.provserver.cadi.aaf.url = https://aaf-onap-test.osaaf.org:8095 \ No newline at end of file
+org.onap.dmaap.datarouter.provserver.aaf.action.subscribe = subscribe \ No newline at end of file
diff --git a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/AafPropsUtilsTest.java b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/AafPropsUtilsTest.java
new file mode 100644
index 00000000..09d4a819
--- /dev/null
+++ b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/AafPropsUtilsTest.java
@@ -0,0 +1,64 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * Licensed 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dmaap.datarouter.provisioning.utils;
+
+import java.io.File;
+import java.io.IOException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class AafPropsUtilsTest {
+
+ private static AafPropsUtils aafPropsUtils;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ AafPropsUtils.init(new File("src/test/resources/aaf/org.onap.dmaap-dr.props"));
+ aafPropsUtils = AafPropsUtils.getInstance();
+ }
+
+ @Test
+ public void Assert_AaafPropsUtils_Decrypt_KeyStorePass() {
+ Assert.assertEquals("m9l&3F+{7E&xE&v7xugWAAy0", aafPropsUtils.getKeystorePassProperty());
+ }
+
+ @Test
+ public void Assert_AaafPropsUtils_Decrypt_TruststorePass() {
+ Assert.assertEquals("@y,%VD).h8k1z+j1Nhar?.Af", aafPropsUtils.getTruststorePassProperty());
+ }
+
+ @Test
+ public void Assert_AaafPropsUtils_Get_KeyStorePathProp() {
+ Assert.assertEquals("src/test/resources/aaf/org.onap.dmaap-dr.p12", aafPropsUtils.getKeystorePathProperty());
+ }
+
+ @Test
+ public void Assert_AaafPropsUtils_Get_TrustStorePathProp() {
+ Assert.assertEquals("src/test/resources/aaf/org.onap.dmaap-dr.trust.jks", aafPropsUtils.getTruststorePathProperty());
+ }
+
+ @Test
+ public void Assert_AaafPropsUtils_Get_PropAccessObj() {
+ Assert.assertNotNull(aafPropsUtils.getPropAccess());
+ }
+
+}
diff --git a/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.cred.props b/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.cred.props
new file mode 100644
index 00000000..b06b283d
--- /dev/null
+++ b/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.cred.props
@@ -0,0 +1,17 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2019-10-02T14:52:33.828+0000
+# @copyright 2019, AT&T
+############################################################
+Challenge=enc:D1K4bZlKwIDTY6RYX4V1nCgj1mJruMZ4qDaO80iSwm20J8zpUa0qEzOwM-aFjKCe
+cadi_alias=dmaap-dr-prov@dmaap-dr.onap.org
+cadi_key_password=enc:d80GqeXpOhPOmZAn76t5xgKlq54yAPYQw-OoVqFwcXkCwd58zwHfzZQ3Rgitj30-
+cadi_keyfile=src/test/resources/aaf/org.onap.dmaap-dr.keyfile
+cadi_keystore=src/test/resources/aaf/org.onap.dmaap-dr.p12
+cadi_keystore_password=enc:xcPI_-oWnLvQ8SFDyafZG7ii7yZdcgaUwVQFp7x9mkHTnyODGDUaPHb5svAE2euP
+cadi_keystore_password_jks=enc:EO1-8pk7wWbiGMriX0aAOX0zxoQ9-ow7LRqOlKgMYVlYGs59yappGzKd0FxkcqM0
+cadi_keystore_password_p12=enc:xcPI_-oWnLvQ8SFDyafZG7ii7yZdcgaUwVQFp7x9mkHTnyODGDUaPHb5svAE2euP
+cadi_truststore=src/test/resources/aaf/org.onap.dmaap-dr.trust.jks
+cadi_truststore_password=enc:XawqMezvaPspcdG9J9tdYx-pEtIu4VaY_QG3ZyLtyWg_gsxvrfg2tInmj95fAkrj
+cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
diff --git a/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.keyfile b/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.keyfile
new file mode 100644
index 00000000..c5d9d876
--- /dev/null
+++ b/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.keyfile
@@ -0,0 +1,27 @@
+0wlntBQae2B_RCqlj0vFvThyNkGfB47eGQ-JDX2LvNaIWjhg6P114TZ1dVwoqIUO_GvGdZfXvTNe
+9W-86XLVDuaom2Ep0bWGpweiIfnRuXuMWwZy7vNRS_jj1GQ8Y30_SrXft3YVHR_r1AC3XTOk1LSS
+Yeo356B7juJuOnkRpZwyZflEZM_U72EymWOd5JKb5ugrtdRBCXzh_pmQ24kxepi8XMFoaViI2ccL
+KbL3fjSsberNKsSYqeGtXmcElEvDUfNam_ylxTStu-BbZRjelr5zY-rQnvXl01Tapkdl_ejIo8fT
+FcdZTSMH2eic32WGO5QJzIhaEXoJu3oNzK0x-rfyURtE15tJAn6FiFvtWFb8nSnWH8TBUYnTLXiJ
+6cBE2ER7MQwf5NMGBa1CaLYzrx4B0ZbrbtBr2ETt7k9r1RxjxAoBBxpiMz9ivRj_KzO1mg8Cc47R
+PXkjlspPGsx--568_TVSrrFA5nM8By33kDTZCpQbAboFophLRyQ8r6LPp6qEY5OD3YAzTL09nZsD
+brZPLowktube0wJLfsomvtPdol6eg44QuQgdZ4RyOaxbeQl5H9M2t6q9G6vRfyVGDkEwbF-rwllX
+XjSmltoUZwhjy7gtYZEnbPjwQcdCho0Pub2jj9xLNKf68oJFRQFB8orYNDoaqVdvRRLyeWOs6P86
+deRMIYPz3DzgzIINxZLyOivxlWXNX-fs5WOe3OUER_q5ONkvV2zXg9qnwQLiqbU_98GE6EA3w5X2
+BXTZsvPQTk9G9K3B-hCb9NIxmCPnlTTAHvmgwI7e4yrXOvHbbW4kAaLiT5CzBrcm7cUv-5ADecCM
+NUTHKYqu0HeRr1L5f56OQESp_G16NtStQ3j-9G_bFMrc6gkGMioWaFxdTfBvKYoP7Mbnkaw5L0Tt
+TK7PR_3VfET4fdMg33l7YnnRu-B114qGxCQCz7KvcoLfKRwYKi-F5Hf_t36IAAFJheflKkSqzLCF
+WjY6cO9DrVz2L60iybXwaNXROVzt2HMLnMLI9e7EQMX7censpQ-NW6vhN7udWiIJ9flerZe3ofK6
+EO70sIAhS0ZkZvTDxiFfc2vryZc3sgtJAW-65D3DRhZyFLW8PerD4NUMpdu-Np-Dt89z4WxElFX5
+ZFs5hkSUSht8-mp84RDLju4y_3jcha5rhptGQMJBOwx9mtnkEoD6U2282dpYsCl3xgXICF1QPCD-
+v0oLlded24Tjm9WWeooYo7Gb_tKj8wtNmJwPQ7E9o5gd8XVwrckWugTdXufMmbedKQPZ4bmuqlkx
+VI3k05VIYuriTB4t1OsU8OgzoFyTn-38X00dzjJrE40vbX6GdJ51BdcULFz2gJuHKVrLXWPrqEFE
+S0moPSU7DyfrgIuRidDwtawAA-JHtgiuf_wrmpShQri1CJ3JCQ6yPAPTBXUjVjzlTCaVkIpmgMoe
+tclMBS4AaWP2ac5OPwxP3ldnZcMuHLSVhhxyNLk9nhn8BB8_vtNEZUopU2tb7OKHKgdX47qsP5aa
+ueb1_T_0ojj9grruiWO_C0_DaKlpmTh7xKzhCOt3w4IOTezN4If9oJ0AB-3vL7XHb6qs3OZw9Iop
+MB1ztIrv1QAE87ZfdyZzZVuNgmosZtNJa2IOjRe83ipr5-DolUgR5OYFNVNg-fFO59SwILdM38U9
+Nq4B_rzR9R7dEdOMp-rs4YBJxqLlL6zZE1tdEP6yba09Dx1fqeh1oXHlWjGSX5JZMnjwrgai_z3q
+2h2SeLOUlbyi-i-rMlrqbzro4-kFONIqZdAAsocjGfkoXBtGNJgkmGhHq2TMI2SCXDYqCKtFYOQa
+2XSGyJ1QsvOGcHlJhGK-hwFj_JcbnxDx6b_24RrEzWSTXlW0R03JAl9fM24Nk9Y1v5iO6fPfWXU0
+J5BniYOohauEGbogRLwupN9-Deh5JzZlaFCFEDup32oxm4RC6tVk_Ik6jA7C3wVU5pfu8t2lgG6M
+PhH0efEjQWNbX5Uv1pbTY8W5bIJ3BSYI4o-cRabaA8UbuCViJ8uvHvFIXew6O3pWDB7vcGKA \ No newline at end of file
diff --git a/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.props b/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.props
new file mode 100644
index 00000000..4e15dc32
--- /dev/null
+++ b/datarouter-prov/src/test/resources/aaf/org.onap.dmaap-dr.props
@@ -0,0 +1,21 @@
+############################################################
+# Properties Generated by AT&T Certificate Manager
+# by root
+# on 2019-10-02T14:52:10.008+0000
+# @copyright 2019, AT&T
+############################################################
+aaf_env=DEV
+aaf_id=dmaap-dr-prov@dmaap-dr.onap.org
+aaf_locate_url=https://aaf-locate:8095
+aaf_locator_container=docker
+aaf_locator_container_ns=onap
+aaf_oauth2_introspect_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.introspect:2.1/introspect
+aaf_oauth2_token_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.token:2.1/token
+aaf_url=https://AAF_LOCATE_URL/%CNS.%AAF_NS.service:2.1
+aaf_url_cm=https://AAF_LOCATE_URL/%CNS.%AAF_NS.cm:2.1
+aaf_url_fs=https://AAF_LOCATE_URL/%CNS.%AAF_NS.fs:2.1
+aaf_url_gui=https://AAF_LOCATE_URL/%CNS.%AAF_NS.gui:2.1
+aaf_url_hello=https://aaf-locate:8095/locate/onap.org.osaaf.aaf.hello:2.1
+aaf_url_oauth=https://AAF_LOCATE_URL/%CNS.%AAF_NS.oauth:2.1
+cadi_prop_files=src/test/resources/aaf/org.onap.dmaap-dr.location.props:src/test/resources/aaf/org.onap.dmaap-dr.cred.props
+cadi_protocols=TLSv1.1,TLSv1.2
diff --git a/datarouter-prov/src/test/resources/h2Database.properties b/datarouter-prov/src/test/resources/h2Database.properties
index 991fadc5..a9c831a3 100755
--- a/datarouter-prov/src/test/resources/h2Database.properties
+++ b/datarouter-prov/src/test/resources/h2Database.properties
@@ -30,11 +30,4 @@ org.onap.dmaap.datarouter.provserver.accesslog.dir = unit-test-logs
org.onap.dmaap.datarouter.provserver.spooldir = src/test/resources
org.onap.dmaap.datarouter.provserver.dbscripts = src/test/resources
org.onap.dmaap.datarouter.provserver.localhost = 127.0.0.1
-org.onap.dmaap.datarouter.provserver.passwordencryption = PasswordEncryptionKey#@$%^&1234#
-
-org.onap.dmaap.datarouter.provserver.keystore.type = jks
-org.onap.dmaap.datarouter.provserver.keymanager.password = FZNkU,B%NJzcT1v7;^v]M#ZX
-org.onap.dmaap.datarouter.provserver.keystore.path = aaf_certs/org.onap.dmaap-dr.jks
-org.onap.dmaap.datarouter.provserver.keystore.password = FZNkU,B%NJzcT1v7;^v]M#ZX
-org.onap.dmaap.datarouter.provserver.truststore.path = aaf_certs/org.onap.dmaap-dr.trust.jks
-org.onap.dmaap.datarouter.provserver.truststore.password = +mzf@J.D^;3!![*Xr.z$c#?b \ No newline at end of file
+org.onap.dmaap.datarouter.provserver.passwordencryption = PasswordEncryptionKey#@$%^&1234# \ No newline at end of file