Skip to content

Commit f346788

Browse files
authored
Add method to return dynamic SecureTransportParameters from SecureTransportSettingsProvider interface (#16387)
* Add isDualModeEnabled to SecureTransportSettingsProvider interface Signed-off-by: Craig Perkins <cwperx@amazon.com> * Add default impl Signed-off-by: Craig Perkins <cwperx@amazon.com> * Respond to comments, update usages and update docstring Signed-off-by: Craig Perkins <cwperx@amazon.com> * Address feedback Signed-off-by: Craig Perkins <cwperx@amazon.com> * Add ExperimentalApi and add to CHANGELOG Signed-off-by: Craig Perkins <cwperx@amazon.com> * Move DefaultSecureTransportParameters to separate file and add javadoc Signed-off-by: Craig Perkins <cwperx@amazon.com> --------- Signed-off-by: Craig Perkins <cwperx@amazon.com>
1 parent f1c98a4 commit f346788

File tree

4 files changed

+53
-3
lines changed

4 files changed

+53
-3
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2626
- Add _list/shards API as paginated alternate to _cat/shards ([#14641](https://github.com/opensearch-project/OpenSearch/pull/14641))
2727
- Latency and Memory allocation improvements to Multi Term Aggregation queries ([#14993](https://github.com/opensearch-project/OpenSearch/pull/14993))
2828
- Flat object field use IndexOrDocValuesQuery to optimize query ([#14383](https://github.com/opensearch-project/OpenSearch/issues/14383))
29+
- Add method to return dynamic SecureTransportParameters from SecureTransportSettingsProvider interface ([#16387](https://github.com/opensearch-project/OpenSearch/pull/16387)
2930

3031
### Dependencies
3132
- Bump `com.azure:azure-identity` from 1.13.0 to 1.13.2 ([#15578](https://github.com/opensearch-project/OpenSearch/pull/15578))

modules/transport-netty4/src/main/java/org/opensearch/transport/netty4/ssl/SecureNetty4Transport.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,10 @@ public SSLServerChannelInitializer(String name) {
142142
protected void initChannel(Channel ch) throws Exception {
143143
super.initChannel(ch);
144144

145-
final boolean dualModeEnabled = NetworkModule.TRANSPORT_SSL_DUAL_MODE_ENABLED.get(settings);
145+
final boolean dualModeEnabled = secureTransportSettingsProvider.parameters(settings)
146+
.map(SecureTransportSettingsProvider.SecureTransportParameters::dualModeEnabled)
147+
.orElse(false);
146148
if (dualModeEnabled) {
147-
logger.info("SSL Dual mode enabled, using port unification handler");
148149
final ChannelHandler portUnificationHandler = new DualModeSslHandler(
149150
settings,
150151
secureTransportSettingsProvider,
@@ -258,7 +259,9 @@ protected class SSLClientChannelInitializer extends Netty4Transport.ClientChanne
258259
public SSLClientChannelInitializer(DiscoveryNode node) {
259260
this.node = node;
260261

261-
final boolean dualModeEnabled = NetworkModule.TRANSPORT_SSL_DUAL_MODE_ENABLED.get(settings);
262+
final boolean dualModeEnabled = secureTransportSettingsProvider.parameters(settings)
263+
.map(SecureTransportSettingsProvider.SecureTransportParameters::dualModeEnabled)
264+
.orElse(false);
262265
hostnameVerificationEnabled = NetworkModule.TRANSPORT_SSL_ENFORCE_HOSTNAME_VERIFICATION.get(settings);
263266
hostnameVerificationResolveHostName = NetworkModule.TRANSPORT_SSL_ENFORCE_HOSTNAME_VERIFICATION_RESOLVE_HOST_NAME.get(settings);
264267

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*/
8+
9+
package org.opensearch.plugins;
10+
11+
import org.opensearch.common.network.NetworkModule;
12+
import org.opensearch.common.settings.Settings;
13+
14+
/**
15+
* Default implementation of {@link SecureTransportSettingsProvider.SecureTransportParameters}.
16+
*/
17+
class DefaultSecureTransportParameters implements SecureTransportSettingsProvider.SecureTransportParameters {
18+
private final Settings settings;
19+
20+
DefaultSecureTransportParameters(Settings settings) {
21+
this.settings = settings;
22+
}
23+
24+
@Override
25+
public boolean dualModeEnabled() {
26+
return NetworkModule.TRANSPORT_SSL_DUAL_MODE_ENABLED.get(settings);
27+
}
28+
}

server/src/main/java/org/opensearch/plugins/SecureTransportSettingsProvider.java

+18
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,24 @@ default Collection<TransportAdapterProvider<Transport>> getTransportAdapterProvi
3636
return Collections.emptyList();
3737
}
3838

39+
/**
40+
* Returns parameters that can be dynamically provided by a plugin providing a {@link SecureTransportSettingsProvider}
41+
* implementation
42+
* @param settings settings
43+
* @return an instance of {@link SecureTransportParameters}
44+
*/
45+
default Optional<SecureTransportParameters> parameters(Settings settings) {
46+
return Optional.of(new DefaultSecureTransportParameters(settings));
47+
}
48+
49+
/**
50+
* Dynamic parameters that can be provided by the {@link SecureTransportSettingsProvider}
51+
*/
52+
@ExperimentalApi
53+
interface SecureTransportParameters {
54+
boolean dualModeEnabled();
55+
}
56+
3957
/**
4058
* If supported, builds the {@link TransportExceptionHandler} instance for {@link Transport} instance
4159
* @param settings settings

0 commit comments

Comments
 (0)