use of org.xnio.OptionMap in project wildfly by wildfly.
the class HttpsListenerService method startListening.
@Override
protected void startListening(XnioWorker worker, InetSocketAddress socketAddress, ChannelListener<AcceptingChannel<StreamConnection>> acceptListener) throws IOException {
SSLContext sslContext = sslContextSupplier.get();
Builder builder = OptionMap.builder().addAll(commonOptions);
builder.addAll(socketOptions);
builder.set(Options.USE_DIRECT_BUFFERS, true);
if (cipherSuites != null) {
String[] cipherList = CipherSuiteSelector.fromString(cipherSuites).evaluate(sslContext.getSupportedSSLParameters().getCipherSuites());
builder.setSequence((Option<Sequence<String>>) HttpsListenerResourceDefinition.ENABLED_CIPHER_SUITES.getOption(), cipherList);
}
OptionMap combined = builder.getMap();
XnioSsl xnioSsl = new UndertowXnioSsl(worker.getXnio(), combined, sslContext);
sslServer = xnioSsl.createSslConnectionServer(worker, socketAddress, (ChannelListener) acceptListener, combined);
sslServer.resumeAccepts();
UndertowLogger.ROOT_LOGGER.listenerStarted("HTTPS", getName(), NetworkUtils.formatIPAddressForURI(socketAddress.getAddress()), socketAddress.getPort());
}
use of org.xnio.OptionMap in project wildfly by wildfly.
the class ListenerAdd method performRuntime.
@Override
protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException {
final PathAddress address = context.getCurrentAddress();
final PathAddress parent = address.getParent();
final String name = context.getCurrentAddressValue();
final String bindingRef = ListenerResourceDefinition.SOCKET_BINDING.resolveModelAttribute(context, model).asString();
final String workerName = ListenerResourceDefinition.WORKER.resolveModelAttribute(context, model).asString();
final String bufferPoolName = ListenerResourceDefinition.BUFFER_POOL.resolveModelAttribute(context, model).asString();
final boolean enabled = ListenerResourceDefinition.ENABLED.resolveModelAttribute(context, model).asBoolean();
final boolean peerHostLookup = ListenerResourceDefinition.RESOLVE_PEER_ADDRESS.resolveModelAttribute(context, model).asBoolean();
final boolean secure = ListenerResourceDefinition.SECURE.resolveModelAttribute(context, model).asBoolean();
OptionMap listenerOptions = OptionList.resolveOptions(context, model, ListenerResourceDefinition.LISTENER_OPTIONS);
OptionMap socketOptions = OptionList.resolveOptions(context, model, ListenerResourceDefinition.SOCKET_OPTIONS);
String serverName = parent.getLastElement().getValue();
final ServiceName listenerServiceName = UndertowService.listenerName(name);
final ListenerService service = createService(name, serverName, context, model, listenerOptions, socketOptions);
if (peerHostLookup) {
service.addWrapperHandler(new HandlerWrapper() {
@Override
public HttpHandler wrap(HttpHandler handler) {
return new PeerNameResolvingHandler(handler);
}
});
}
service.setEnabled(enabled);
if (secure) {
service.addWrapperHandler(MarkSecureHandler.WRAPPER);
}
List<String> disallowedMethods = ListenerResourceDefinition.DISALLOWED_METHODS.unwrap(context, model);
if (!disallowedMethods.isEmpty()) {
final Set<HttpString> methodSet = new HashSet<>();
for (String i : disallowedMethods) {
methodSet.add(new HttpString(i.trim()));
}
service.addWrapperHandler(new HandlerWrapper() {
@Override
public HttpHandler wrap(HttpHandler handler) {
return new DisallowedMethodsHandler(handler, methodSet);
}
});
}
final ServiceName socketBindingServiceName = context.getCapabilityServiceName(ListenerResourceDefinition.SOCKET_CAPABILITY, bindingRef, SocketBinding.class);
final ServiceName workerServiceName = context.getCapabilityServiceName(ListenerResourceDefinition.IO_WORKER_CAPABILITY, workerName, XnioWorker.class);
final ServiceName bufferPoolServiceName = context.getCapabilityServiceName(ListenerResourceDefinition.IO_BUFFER_POOL_CAPABILITY, bufferPoolName, Pool.class);
final ServiceBuilder<? extends UndertowListener> serviceBuilder = context.getServiceTarget().addService(listenerServiceName, service);
serviceBuilder.addDependency(workerServiceName, XnioWorker.class, service.getWorker()).addDependency(socketBindingServiceName, SocketBinding.class, service.getBinding()).addDependency(bufferPoolServiceName, (Injector) service.getBufferPool()).addDependency(UndertowService.SERVER.append(serverName), Server.class, service.getServerService()).addAliases(ListenerResourceDefinition.LISTENER_CAPABILITY.getCapabilityServiceName(name));
configureAdditionalDependencies(context, serviceBuilder, model, service);
serviceBuilder.install();
}
use of org.xnio.OptionMap in project wildfly by wildfly.
the class AjpListenerAdd method createService.
@Override
ListenerService createService(String name, final String serverName, final OperationContext context, ModelNode model, OptionMap listenerOptions, OptionMap socketOptions) throws OperationFailedException {
ModelNode schemeNode = AjpListenerResourceDefinition.SCHEME.resolveModelAttribute(context, model);
String scheme = null;
if (schemeNode.isDefined()) {
scheme = schemeNode.asString();
}
OptionMap.Builder listenerBuilder = OptionMap.builder().addAll(listenerOptions);
AjpListenerResourceDefinition.MAX_AJP_PACKET_SIZE.resolveOption(context, model, listenerBuilder);
return new AjpListenerService(name, scheme, listenerBuilder.getMap(), socketOptions);
}
use of org.xnio.OptionMap in project wildfly by wildfly.
the class UndertowConnectorTestCase method getType.
@Test
public void getType() {
OptionMap options = OptionMap.builder().getMap();
assertSame(Connector.Type.AJP, new UndertowConnector(new AjpListenerService("", "", options, OptionMap.EMPTY)).getType());
assertSame(Connector.Type.HTTP, new UndertowConnector(new HttpListenerService("", "", options, OptionMap.EMPTY, false, false)).getType());
assertSame(Connector.Type.HTTPS, new UndertowConnector(new HttpsListenerService("", "", options, null, OptionMap.EMPTY)).getType());
}
Aggregations