Skip to content

Commit 42a88c1

Browse files
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> (cherry picked from commit f346788) Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 6db8124 commit 42a88c1

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
@@ -24,6 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2424
- Add _list/indices API as paginated alternate to _cat/indices ([#14718](https://github.com/opensearch-project/OpenSearch/pull/14718))
2525
- Add changes to block calls in cat shards, indices and segments based on dynamic limit settings ([#15986](https://github.com/opensearch-project/OpenSearch/pull/15986))
2626
- Flat object field use IndexOrDocValuesQuery to optimize query ([#14383](https://github.com/opensearch-project/OpenSearch/issues/14383))
27+
- Add method to return dynamic SecureTransportParameters from SecureTransportSettingsProvider interface ([#16387](https://github.com/opensearch-project/OpenSearch/pull/16387)
2728

2829
### Dependencies
2930
- Bump `org.apache.logging.log4j:log4j-core` from 2.23.1 to 2.24.0 ([#15858](https://github.com/opensearch-project/OpenSearch/pull/15858))

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)