Skip to content

Package: SNIAddOn

SNIAddOn

nameinstructionbranchcomplexitylinemethod
SNIAddOn(SNIFilter)
M: 16 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 6 C: 0
0%
M: 1 C: 0
0%
SNIAddOn(SNIServerConfigResolver)
M: 16 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 6 C: 0
0%
M: 1 C: 0
0%
setup(NetworkListener, FilterChainBuilder)
M: 36 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*
2: * Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved.
3: *
4: * This program and the accompanying materials are made available under the
5: * terms of the Eclipse Distribution License v. 1.0, which is available at
6: * http://www.eclipse.org/org/documents/edl-v10.php.
7: *
8: * SPDX-License-Identifier: BSD-3-Clause
9: */
10:
11: package org.glassfish.grizzly.samples.sni.httpserver;
12:
13: import org.glassfish.grizzly.filterchain.FilterChainBuilder;
14: import org.glassfish.grizzly.http.server.AddOn;
15: import org.glassfish.grizzly.http.server.NetworkListener;
16: import org.glassfish.grizzly.sni.SNIFilter;
17: import org.glassfish.grizzly.sni.SNIServerConfigResolver;
18: import org.glassfish.grizzly.ssl.SSLBaseFilter;
19: import org.glassfish.grizzly.ssl.SSLEngineConfigurator;
20:
21: /**
22: * SNI {@link AddOn}, that replaces standard {@link SSLBaseFilter} with an {@link SNIFilter} in order to use different
23: * {@link SSLEngineConfigurator} depending on the SNI host information.
24: */
25: public class SNIAddOn implements AddOn {
26: private final SNIFilter sniFilter;
27: private final SNIServerConfigResolver serverConfigResolver;
28:
29: public SNIAddOn(final SNIServerConfigResolver serverConfigResolver) {
30:• if (serverConfigResolver == null) {
31: throw new IllegalArgumentException("serverConfigResolver can't be null");
32: }
33:
34: this.serverConfigResolver = serverConfigResolver;
35: sniFilter = null;
36: }
37:
38: public SNIAddOn(final SNIFilter sniFilter) {
39:• if (sniFilter == null) {
40: throw new IllegalArgumentException("sniFilter can't be null");
41: }
42:
43: this.sniFilter = sniFilter;
44: serverConfigResolver = null;
45: }
46:
47: @Override
48: public void setup(final NetworkListener networkListener, final FilterChainBuilder builder) {
49: final int sslFilterIdx = builder.indexOfType(SSLBaseFilter.class);
50:• if (sslFilterIdx != -1) {
51: // replace SSLBaseFilter with SNIFilter
52: final SSLBaseFilter sslFilter = (SSLBaseFilter) builder.get(sslFilterIdx);
53:
54: SNIFilter sniFilterLocal = sniFilter;
55:• if (sniFilterLocal == null) {
56: sniFilterLocal = new SNIFilter(sslFilter.getServerSSLEngineConfigurator(), // default SSLEngineConfigurator
57: null, sslFilter.isRenegotiateOnClientAuthWant());
58: sniFilterLocal.setServerSSLConfigResolver(serverConfigResolver);
59: }
60:
61: builder.set(sslFilterIdx, sniFilterLocal);
62: }
63: }
64: }