X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Futil%2Fosgi%2FNetconfConfigUtil.java;h=80eaa26de184ddc29993bd847d1c34b0e7becd09;hb=b925756421ea8565637d8575d8143dbf46db5a86;hp=55ed7e074423968dd7e7626e45a181893cdfd4a1;hpb=515e60d60ac7dd08aa2440468cd8dab42892e7d0;p=controller.git diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/osgi/NetconfConfigUtil.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/osgi/NetconfConfigUtil.java index 55ed7e0744..80eaa26de1 100644 --- a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/osgi/NetconfConfigUtil.java +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/osgi/NetconfConfigUtil.java @@ -8,14 +8,22 @@ package org.opendaylight.controller.netconf.util.osgi; - import com.google.common.base.Optional; - import java.net.InetSocketAddress; - import org.osgi.framework.BundleContext; - import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.Optional; +import org.osgi.framework.BundleContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.InetSocketAddress; + +import static com.google.common.base.Preconditions.checkNotNull; + +public final class NetconfConfigUtil { + private static final Logger logger = LoggerFactory.getLogger(NetconfConfigUtil.class); -public class NetconfConfigUtil { private static final String PREFIX_PROP = "netconf."; + private NetconfConfigUtil() {} + private enum InfixProp { tcp, ssh } @@ -25,6 +33,23 @@ public class NetconfConfigUtil { private static final String CLIENT_PROP = ".client"; private static final String PRIVATE_KEY_PATH_PROP = ".pk.path"; + private static final String CONNECTION_TIMEOUT_MILLIS_PROP = "connectionTimeoutMillis"; + private static final long DEFAULT_TIMEOUT_MILLIS = 5000; + + public static long extractTimeoutMillis(BundleContext bundleContext) { + String key = PREFIX_PROP + CONNECTION_TIMEOUT_MILLIS_PROP; + String timeoutString = bundleContext.getProperty(key); + if (timeoutString == null || timeoutString.length() == 0) { + return DEFAULT_TIMEOUT_MILLIS; + } + try { + return Long.parseLong(timeoutString); + }catch(NumberFormatException e) { + logger.warn("Cannot parse {} property: {}, using defaults", key, timeoutString, e); + return DEFAULT_TIMEOUT_MILLIS; + } + } + public static InetSocketAddress extractTCPNetconfAddress(BundleContext context, String exceptionMessageIfNotFound, boolean forClient) { Optional inetSocketAddressOptional = extractSomeNetconfAddress(context, InfixProp.tcp, exceptionMessageIfNotFound, forClient); @@ -32,7 +57,12 @@ public class NetconfConfigUtil { if (inetSocketAddressOptional.isPresent() == false) { throw new IllegalStateException("Netconf tcp address not found." + exceptionMessageIfNotFound); } - return inetSocketAddressOptional.get(); + InetSocketAddress inetSocketAddress = inetSocketAddressOptional.get(); + if (inetSocketAddress.getAddress().isAnyLocalAddress()) { + logger.warn("Unprotected netconf TCP address is configured to ANY local address. This is a security risk. " + + "Consider changing {} to 127.0.0.1", PREFIX_PROP + InfixProp.tcp + ADDRESS_SUFFIX_PROP); + } + return inetSocketAddress; } public static Optional extractSSHNetconfAddress(BundleContext context, String exceptionMessage) {