+++ /dev/null
-/*
- * Copyright (c) 2020 Pantheon Technologies, s.r.o. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.netconf.callhome.mount.tls;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Optional;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.opendaylight.netconf.callhome.mount.CallHomeMountService;
-import org.opendaylight.netconf.callhome.server.CallHomeStatusRecorder;
-import org.opendaylight.netconf.callhome.server.tls.CallHomeTlsAuthProvider;
-import org.opendaylight.netconf.callhome.server.tls.CallHomeTlsServer;
-import org.opendaylight.netconf.client.NetconfClientSessionNegotiatorFactory;
-import org.opendaylight.netconf.common.NetconfTimer;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Deactivate;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.metatype.annotations.AttributeDefinition;
-import org.osgi.service.metatype.annotations.Designate;
-import org.osgi.service.metatype.annotations.ObjectClassDefinition;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Component(service = { }, configurationPid = "org.opendaylight.netconf.callhome.mount.tls.server")
-@Designate(ocd = NetconfCallHomeTlsService.Configuration.class)
-@Singleton
-public class NetconfCallHomeTlsService implements AutoCloseable {
-
- @ObjectClassDefinition
- public @interface Configuration {
- @AttributeDefinition
- String host() default "0.0.0.0";
-
- @AttributeDefinition(min = "1", max = "65535")
- int port() default 4335;
-
- @AttributeDefinition
- int timeoutMillis() default 10_000;
-
- @AttributeDefinition
- int maxConnections() default 64;
- }
-
- private static final Logger LOG = LoggerFactory.getLogger(NetconfCallHomeTlsService.class);
-
- private final CallHomeTlsServer server;
-
- @Activate
- @Inject
- public NetconfCallHomeTlsService(
- final @Reference NetconfTimer timer,
- final @Reference CallHomeMountService mountService,
- final @Reference CallHomeTlsAuthProvider authProvider,
- final @Reference CallHomeStatusRecorder statusRecorder,
- final Configuration configuration) {
-
- LOG.info("Starting Call-Home TLS server at {}:{}", configuration.host(), configuration.port());
- try {
- server = CallHomeTlsServer.builder()
- .withAddress(InetAddress.getByName(configuration.host()))
- .withPort(configuration.port())
- .withTimeout(configuration.timeoutMillis())
- .withMaxConnections(configuration.maxConnections())
- .withAuthProvider(authProvider)
- .withStatusRecorder(statusRecorder)
- .withSessionContextManager(
- mountService.createTlsSessionContextManager(authProvider, statusRecorder))
- .withNegotiationFactory(new NetconfClientSessionNegotiatorFactory(timer, Optional.empty(),
- configuration.timeoutMillis(), NetconfClientSessionNegotiatorFactory.DEFAULT_CLIENT_CAPABILITIES))
- .build();
- } catch (UnknownHostException e) {
- throw new IllegalArgumentException("invalid host", e);
- }
- LOG.info("Call-Home TLS server started successfully");
- }
-
- @Deactivate
- @Override
- public void close() throws Exception {
- server.close();
- LOG.info("Call-Home TLS server stopped");
- }
-}
\ No newline at end of file