X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=datarouter-node%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fdmaap%2Fdatarouter%2Fnode%2FNodeConfigManager.java;h=298e185802c916419df2934346a05535abc7f64d;hb=adb2ad2d16e851fbf8dcc71af68949a74463204d;hp=9ffc8ae87c70c4613801c4c6f30492bf345bf520;hpb=cf55456bbe6ce4da723f9dfa64b573f02908ab24;p=dmaap%2Fdatarouter.git diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java index 9ffc8ae8..298e1858 100644 --- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java +++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java @@ -24,13 +24,18 @@ package org.onap.dmaap.datarouter.node; +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.FileInputStream; +import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; +import java.nio.file.Files; +import java.util.Objects; import java.util.Properties; import java.util.Timer; import org.onap.dmaap.datarouter.node.eelf.EelfMsgs; @@ -48,7 +53,6 @@ import org.onap.dmaap.datarouter.node.eelf.EelfMsgs; */ public class NodeConfigManager implements DeliveryQueueHelper { - private static final String CHANGE_ME = "changeme"; private static final String NODE_CONFIG_MANAGER = "NodeConfigManager"; private static EELFLogger eelfLogger = EELFManager.getInstance().getLogger(NodeConfigManager.class); private static NodeConfigManager base = new NodeConfigManager(); @@ -98,8 +102,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { private String aafType; private String aafInstance; private String aafAction; - private String aafURL; private boolean cadiEnabled; + private NodeAafPropsUtils nodeAafPropsUtils; /** @@ -109,7 +113,7 @@ public class NodeConfigManager implements DeliveryQueueHelper { Properties drNodeProperties = new Properties(); try { - eelfLogger.info("NODE0301 Loading local config file node.properties"); + eelfLogger.debug("NODE0301 Loading local config file node.properties"); drNodeProperties.load(new FileInputStream(System .getProperty("org.onap.dmaap.datarouter.node.properties", "/opt/app/datartr/etc/node.properties"))); } catch (Exception e) { @@ -119,6 +123,14 @@ public class NodeConfigManager implements DeliveryQueueHelper { "/opt/app/datartr/etc/node.properties")); } provurl = drNodeProperties.getProperty("ProvisioningURL", "https://dmaap-dr-prov:8443/internal/prov"); + String aafPropsFilePath = drNodeProperties + .getProperty("AAFPropsFilePath", "/opt/app/osaaf/local/org.onap.dmaap-dr.props"); + try { + nodeAafPropsUtils = new NodeAafPropsUtils(new File(aafPropsFilePath)); + } catch (IOException e) { + eelfLogger.error("NODE0314 Failed to load AAF props. Exiting", e); + exit(1); + } /* * START - AAF changes: TDP EPIC US# 307413 * Pull AAF settings from node.properties @@ -126,7 +138,6 @@ public class NodeConfigManager implements DeliveryQueueHelper { aafType = drNodeProperties.getProperty("AAFType", "org.onap.dmaap-dr.feed"); aafInstance = drNodeProperties.getProperty("AAFInstance", "legacy"); aafAction = drNodeProperties.getProperty("AAFAction", "publish"); - aafURL = drNodeProperties.getProperty("AafUrl", "https://aaf-onap-test.osaaf.org:8095"); cadiEnabled = Boolean.parseBoolean(drNodeProperties.getProperty("CadiEnabled", "false")); /* * END - AAF changes: TDP EPIC US# 307413 @@ -134,15 +145,14 @@ public class NodeConfigManager implements DeliveryQueueHelper { */ //Disable and enable protocols*/ enabledprotocols = ((drNodeProperties.getProperty("NodeHttpsProtocols")).trim()).split("\\|"); - try { provhost = (new URL(provurl)).getHost(); } catch (Exception e) { NodeUtils.setIpAndFqdnForEelf(NODE_CONFIG_MANAGER); eelfLogger.error(EelfMsgs.MESSAGE_BAD_PROV_URL, e, provurl); - System.exit(1); + exit(1); } - eelfLogger.info("NODE0303 Provisioning server is " + provhost); + eelfLogger.debug("NODE0303 Provisioning server is " + provhost); eventlogurl = drNodeProperties.getProperty("LogUploadURL", "https://feeds-drtr.web.att.com/internal/logs"); provcheck = new IsFrom(provhost); gfport = Integer.parseInt(drNodeProperties.getProperty("IntHttpPort", "8080")); @@ -151,9 +161,11 @@ public class NodeConfigManager implements DeliveryQueueHelper { spooldir = drNodeProperties.getProperty("SpoolDir", "spool"); File fdir = new File(spooldir + "/f"); fdir.mkdirs(); - for (File junk : fdir.listFiles()) { - if (junk.isFile()) { - junk.delete(); + for (File junk : Objects.requireNonNull(fdir.listFiles())) { + try { + Files.deleteIfExists(junk.toPath()); + } catch (IOException e) { + eelfLogger.error("NODE0313 Failed to clear junk files from " + fdir.getPath(), e); } } logdir = drNodeProperties.getProperty("LogDir", "logs"); @@ -162,13 +174,13 @@ public class NodeConfigManager implements DeliveryQueueHelper { eventlogprefix = logdir + "/events"; eventlogsuffix = ".log"; redirfile = drNodeProperties.getProperty("RedirectionFile", "etc/redirections.dat"); - kstype = drNodeProperties.getProperty("KeyStoreType", "jks"); - ksfile = drNodeProperties.getProperty("KeyStoreFile", "etc/keystore"); - kspass = drNodeProperties.getProperty("KeyStorePassword", CHANGE_ME); - kpass = drNodeProperties.getProperty("KeyPassword", CHANGE_ME); + kstype = drNodeProperties.getProperty("KeyStoreType", "PKCS12"); + ksfile = nodeAafPropsUtils.getPropAccess().getProperty("cadi_keystore"); + kspass = nodeAafPropsUtils.getDecryptedPass("cadi_keystore_password"); + kpass = nodeAafPropsUtils.getDecryptedPass("cadi_keystore_password"); tstype = drNodeProperties.getProperty("TrustStoreType", "jks"); - tsfile = drNodeProperties.getProperty("TrustStoreFile"); - tspass = drNodeProperties.getProperty("TrustStorePassword", CHANGE_ME); + tsfile = nodeAafPropsUtils.getPropAccess().getProperty("cadi_truststore"); + tspass = nodeAafPropsUtils.getDecryptedPass("cadi_truststore_password"); if (tsfile != null && tsfile.length() > 0) { System.setProperty("javax.net.ssl.trustStoreType", tstype); System.setProperty("javax.net.ssl.trustStore", tsfile); @@ -181,9 +193,9 @@ public class NodeConfigManager implements DeliveryQueueHelper { NodeUtils.setIpAndFqdnForEelf(NODE_CONFIG_MANAGER); eelfLogger.error(EelfMsgs.MESSAGE_KEYSTORE_FETCH_ERROR, ksfile); eelfLogger.error("NODE0309 Unable to fetch canonical name from keystore file " + ksfile); - System.exit(1); + exit(1); } - eelfLogger.info("NODE0304 My certificate says my name is " + myname); + eelfLogger.debug("NODE0304 My certificate says my name is " + myname); pid = new PublishId(myname); long minrsinterval = Long.parseLong(drNodeProperties.getProperty("MinRedirSaveInterval", "10000")); long minpfinterval = Long.parseLong(drNodeProperties.getProperty("MinProvFetchInterval", "10000")); @@ -193,7 +205,7 @@ public class NodeConfigManager implements DeliveryQueueHelper { fetchconfig(); } }; - eelfLogger.info("NODE0305 Attempting to fetch configuration at " + provurl); + eelfLogger.debug("NODE0305 Attempting to fetch configuration at " + provurl); pfetcher.request(); } @@ -284,8 +296,9 @@ public class NodeConfigManager implements DeliveryQueueHelper { private void fetchconfig() { try { - eelfLogger.info("NodeConfigMan.fetchConfig: provurl:: " + provurl); - Reader reader = new InputStreamReader((new URL(provurl)).openStream()); + eelfLogger.debug("NodeConfigMan.fetchConfig: provurl:: " + provurl); + URL url = new URL(provurl); + Reader reader = new InputStreamReader(url.openStream()); config = new NodeConfig(new ProvData(reader), myname, spooldir, port, nak); localconfig(); configtasks.startRun(); @@ -314,27 +327,27 @@ public class NodeConfigManager implements DeliveryQueueHelper { * fetch the provisioning data, ignore the request. If the data has been fetched very recently (default 10 * seconds), wait a while before fetching again. */ - public synchronized void gofetch(String remoteAddr) { + synchronized void gofetch(String remoteAddr) { if (provcheck.isReachable(remoteAddr)) { - eelfLogger.info("NODE0307 Received configuration fetch request from provisioning server " + remoteAddr); + eelfLogger.debug("NODE0307 Received configuration fetch request from provisioning server " + remoteAddr); pfetcher.request(); } else { - eelfLogger.info("NODE0308 Received configuration fetch request from unexpected server " + remoteAddr); + eelfLogger.debug("NODE0308 Received configuration fetch request from unexpected server " + remoteAddr); } } /** * Am I configured. */ - public boolean isConfigured() { - return (config != null); + boolean isConfigured() { + return config != null; } /** * Am I shut down. */ - public boolean isShutdown() { - return (quiesce.exists()); + boolean isShutdown() { + return quiesce.exists(); } /** @@ -343,8 +356,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param routing Target string * @return array of targets */ - public Target[] parseRouting(String routing) { - return (config.parseRouting(routing)); + Target[] parseRouting(String routing) { + return config.parseRouting(routing); } /** @@ -354,8 +367,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param ip IP address the request came from * @return If the credentials and IP address are recognized, true, otherwise false. */ - public boolean isAnotherNode(String credentials, String ip) { - return (config.isAnotherNode(credentials, ip)); + boolean isAnotherNode(String credentials, String ip) { + return config.isAnotherNode(credentials, ip); } /** @@ -366,8 +379,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param ip The requesting IP address * @return True if the IP and credentials are valid for the specified feed. */ - public String isPublishPermitted(String feedid, String credentials, String ip) { - return (config.isPublishPermitted(feedid, credentials, ip)); + String isPublishPermitted(String feedid, String credentials, String ip) { + return config.isPublishPermitted(feedid, credentials, ip); } /** @@ -377,8 +390,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param ip The requesting IP address * @return True if the IP and credentials are valid for the specified feed. */ - public String isPublishPermitted(String feedid, String ip) { - return (config.isPublishPermitted(feedid, ip)); + String isPublishPermitted(String feedid, String ip) { + return config.isPublishPermitted(feedid, ip); } /** @@ -387,8 +400,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param subId The ID of the subscription being requested * @return True if the delete file is permitted for the subscriber. */ - public boolean isDeletePermitted(String subId) { - return (config.isDeletePermitted(subId)); + boolean isDeletePermitted(String subId) { + return config.isDeletePermitted(subId); } /** @@ -398,8 +411,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param credentials The offered credentials * @return Null if the credentials are invalid or the user if they are valid. */ - public String getAuthUser(String feedid, String credentials) { - return (config.getAuthUser(feedid, credentials)); + String getAuthUser(String feedid, String credentials) { + return config.getAuthUser(feedid, credentials); } /** @@ -407,11 +420,11 @@ public class NodeConfigManager implements DeliveryQueueHelper { * * @param feedid The ID of the feed specified */ - public String getAafInstance(String feedid) { - return (config.getAafInstance(feedid)); + String getAafInstance(String feedid) { + return config.getAafInstance(feedid); } - public String getAafInstance() { + String getAafInstance() { return aafInstance; } @@ -423,8 +436,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param ip The IP address of the publish endpoint * @return Null if the request should be accepted or the correct hostname if it should be sent to another node. */ - public String getIngressNode(String feedid, String user, String ip) { - return (config.getIngressNode(feedid, user, ip)); + String getIngressNode(String feedid, String user, String ip) { + return config.getIngressNode(feedid, user, ip); } /** @@ -433,8 +446,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param name The name of the parameter * @return The value of the parameter or null if it is not defined. */ - public String getProvParam(String name) { - return (config.getProvParam(name)); + private String getProvParam(String name) { + return config.getProvParam(name); } /** @@ -444,39 +457,39 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param defaultValue The value to use if the parameter is not defined * @return The value of the parameter or deflt if it is not defined. */ - public String getProvParam(String name, String defaultValue) { + private String getProvParam(String name, String defaultValue) { name = config.getProvParam(name); if (name == null) { name = defaultValue; } - return (name); + return name; } /** * Generate a publish ID. */ public String getPublishId() { - return (pid.next()); + return pid.next(); } /** * Get all the outbound spooling destinations. This will include both subscriptions and nodes. */ - public DestInfo[] getAllDests() { - return (config.getAllDests()); + DestInfo[] getAllDests() { + return config.getAllDests(); } /** * Register a task to run whenever the configuration changes. */ - public void registerConfigTask(Runnable task) { + void registerConfigTask(Runnable task) { configtasks.addTask(task); } /** * Deregister a task to run whenever the configuration changes. */ - public void deregisterConfigTask(Runnable task) { + void deregisterConfigTask(Runnable task) { configtasks.removeTask(task); } @@ -496,13 +509,6 @@ public class NodeConfigManager implements DeliveryQueueHelper { return (purl + "/" + fileid); } - /** - * Is a destination redirected. - */ - public boolean isDestRedirected(DestInfo destinfo) { - return (followredirects && rdmgr.isRedirected(destinfo.getSubId())); - } - /** * Set up redirection on receipt of a 3XX from a target URL. */ @@ -520,23 +526,6 @@ public class NodeConfigManager implements DeliveryQueueHelper { return (false); } - /** - * Set up redirection on receipt of a 3XX from a target URL. - */ - public boolean handleRedirectionSubLevel(DeliveryTask task, DestInfo destinfo, String redirto, String fileid) { - fileid = "/" + fileid; - String subid = destinfo.getSubId(); - String purl = destinfo.getURL(); - if (task.getFollowRedirects() && subid != null && redirto.endsWith(fileid)) { - redirto = redirto.substring(0, redirto.length() - fileid.length()); - if (!redirto.equals(purl)) { - rdmgr.redirect(subid, purl, redirto); - return true; - } - } - return false; - } - /** * Handle unreachable target URL. */ @@ -551,49 +540,49 @@ public class NodeConfigManager implements DeliveryQueueHelper { * Get the timeout before retrying after an initial delivery failure. */ public long getInitFailureTimer() { - return (initfailuretimer); + return initfailuretimer; } /** * Get the timeout before retrying after delivery and wait for file processing. */ public long getWaitForFileProcessFailureTimer() { - return (waitForFileProcessFailureTimer); + return waitForFileProcessFailureTimer; } /** * Get the maximum timeout between delivery attempts. */ public long getMaxFailureTimer() { - return (maxfailuretimer); + return maxfailuretimer; } /** * Get the ratio between consecutive delivery attempts. */ public double getFailureBackoff() { - return (failurebackoff); + return failurebackoff; } /** * Get the expiration timer for deliveries. */ public long getExpirationTimer() { - return (expirationtimer); + return expirationtimer; } /** * Get the maximum number of file delivery attempts before checking if another queue has work to be performed. */ public int getFairFileLimit() { - return (fairfilelimit); + return fairfilelimit; } /** * Get the maximum amount of time spent delivering files before checking if another queue has work to be performed. */ public long getFairTimeLimit() { - return (fairtimelimit); + return fairtimelimit; } /** @@ -602,171 +591,174 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param feedid The feed ID * @return The targets this feed should be delivered to */ - public Target[] getTargets(String feedid) { - return (config.getTargets(feedid)); - } - - /** - * Get the creation date for a feed. - * - * @param feedid The feed ID - * @return the timestamp of creation date of feed id passed - */ - public String getCreatedDate(String feedid) { - return (config.getCreatedDate(feedid)); + Target[] getTargets(String feedid) { + return config.getTargets(feedid); } /** * Get the spool directory for temporary files. */ - public String getSpoolDir() { - return (spooldir + "/f"); + String getSpoolDir() { + return spooldir + "/f"; } /** * Get the spool directory for a subscription. */ - public String getSpoolDir(String subid, String remoteaddr) { + String getSpoolDir(String subid, String remoteaddr) { if (provcheck.isFrom(remoteaddr)) { String sdir = config.getSpoolDir(subid); if (sdir != null) { - eelfLogger.info("NODE0310 Received subscription reset request for subscription " + subid + eelfLogger.debug("NODE0310 Received subscription reset request for subscription " + subid + " from provisioning server " + remoteaddr); } else { - eelfLogger.info("NODE0311 Received subscription reset request for unknown subscription " + subid + eelfLogger.debug("NODE0311 Received subscription reset request for unknown subscription " + subid + " from provisioning server " + remoteaddr); } - return (sdir); + return sdir; } else { - eelfLogger.info("NODE0312 Received subscription reset request from unexpected server " + remoteaddr); - return (null); + eelfLogger.debug("NODE0312 Received subscription reset request from unexpected server " + remoteaddr); + return null; } } /** * Get the base directory for spool directories. */ - public String getSpoolBase() { - return (spooldir); + String getSpoolBase() { + return spooldir; } /** * Get the key store type. */ - public String getKSType() { - return (kstype); + String getKSType() { + return kstype; } /** * Get the key store file. */ - public String getKSFile() { - return (ksfile); + String getKSFile() { + return ksfile; } /** * Get the key store password. */ - public String getKSPass() { - return (kspass); + String getKSPass() { + return kspass; } /** * Get the key password. */ - public String getKPass() { - return (kpass); + String getKPass() { + return kpass; + } + + + String getTstype() { + return tstype; + } + + String getTsfile() { + return tsfile; + } + + String getTspass() { + return tspass; } /** * Get the http port. */ - public int getHttpPort() { - return (gfport); + int getHttpPort() { + return gfport; } /** * Get the https port. */ - public int getHttpsPort() { - return (svcport); + int getHttpsPort() { + return svcport; } /** * Get the externally visible https port. */ - public int getExtHttpsPort() { - return (port); + int getExtHttpsPort() { + return port; } /** * Get the external name of this machine. */ - public String getMyName() { - return (myname); + String getMyName() { + return myname; } /** * Get the number of threads to use for delivery. */ - public int getDeliveryThreads() { - return (deliverythreads); + int getDeliveryThreads() { + return deliverythreads; } /** * Get the URL for uploading the event log data. */ - public String getEventLogUrl() { - return (eventlogurl); + String getEventLogUrl() { + return eventlogurl; } /** * Get the prefix for the names of event log files. */ - public String getEventLogPrefix() { - return (eventlogprefix); + String getEventLogPrefix() { + return eventlogprefix; } /** * Get the suffix for the names of the event log files. */ - public String getEventLogSuffix() { - return (eventlogsuffix); + String getEventLogSuffix() { + return eventlogsuffix; } /** * Get the interval between event log file rollovers. */ - public String getEventLogInterval() { - return (eventloginterval); + String getEventLogInterval() { + return eventloginterval; } /** * Should I follow redirects from subscribers. */ public boolean isFollowRedirects() { - return (followredirects); + return followredirects; } /** * Get the directory where the event and node log files live. */ - public String getLogDir() { - return (logdir); + String getLogDir() { + return logdir; } /** * How long do I keep log files (in milliseconds). */ - public long getLogRetention() { - return (logretention); + long getLogRetention() { + return logretention; } /** * Get the timer. */ public Timer getTimer() { - return (timer); + return timer; } /** @@ -776,7 +768,7 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @return The feed ID */ public String getFeedId(String subid) { - return (config.getFeedId(subid)); + return config.getFeedId(subid); } /** @@ -784,74 +776,47 @@ public class NodeConfigManager implements DeliveryQueueHelper { * * @return The Authorization string for this node */ - public String getMyAuth() { - return (config.getMyAuth()); + String getMyAuth() { + return config.getMyAuth(); } /** * Get the fraction of free spool disk space where we start throwing away undelivered files. This is * FREE_DISK_RED_PERCENT / 100.0. Default is 0.05. Limited by 0.01 <= FreeDiskStart <= 0.5. */ - public double getFreeDiskStart() { - return (fdpstart); + double getFreeDiskStart() { + return fdpstart; } /** * Get the fraction of free spool disk space where we stop throwing away undelivered files. This is * FREE_DISK_YELLOW_PERCENT / 100.0. Default is 0.2. Limited by FreeDiskStart <= FreeDiskStop <= 0.5. */ - public double getFreeDiskStop() { - return (fdpstop); + double getFreeDiskStop() { + return fdpstop; } /** * Disable and enable protocols. */ - public String[] getEnabledprotocols() { + String[] getEnabledprotocols() { return enabledprotocols; } - public void setEnabledprotocols(String[] enabledprotocols) { - this.enabledprotocols = enabledprotocols.clone(); - } - - public String getAafType() { + String getAafType() { return aafType; } - public void setAafType(String aafType) { - this.aafType = aafType; - } - - public void setAafInstance(String aafInstance) { - this.aafInstance = aafInstance; - } - - public String getAafAction() { + String getAafAction() { return aafAction; } - public void setAafAction(String aafAction) { - this.aafAction = aafAction; - } - - /* - * Get aafURL from SWM variable - * */ - public String getAafURL() { - return aafURL; - } - - public void setAafURL(String aafURL) { - this.aafURL = aafURL; - } - - public boolean getCadiEnabled() { + boolean getCadiEnabled() { return cadiEnabled; } - public void setCadiEnabled(boolean cadiEnabled) { - this.cadiEnabled = cadiEnabled; + NodeAafPropsUtils getNodeAafPropsUtils() { + return nodeAafPropsUtils; } /** @@ -860,7 +825,7 @@ public class NodeConfigManager implements DeliveryQueueHelper { * @param aafInstance The aaf instance * @return The permissions */ - protected String getPermission(String aafInstance) { + String getPermission(String aafInstance) { try { String type = getAafType(); String action = getAafAction();