2 * Copyright (c) 2020 Pantheon Technologies, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.netconf.callhome.mount.tls;
10 import static java.util.Objects.requireNonNull;
12 import io.netty.channel.EventLoopGroup;
13 import org.opendaylight.mdsal.binding.api.DataBroker;
14 import org.opendaylight.netconf.callhome.protocol.CallHomeNetconfSubsystemListener;
15 import org.opendaylight.netconf.callhome.protocol.tls.NetconfCallHomeTlsServer;
16 import org.opendaylight.netconf.callhome.protocol.tls.NetconfCallHomeTlsServerBuilder;
17 import org.opendaylight.netconf.callhome.protocol.tls.TlsAllowedDevicesMonitor;
18 import org.opendaylight.netconf.client.SslHandlerFactory;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
22 public class NetconfCallHomeTlsService implements AutoCloseable {
23 private static final Logger LOG = LoggerFactory.getLogger(NetconfCallHomeTlsService.class);
25 private final Configuration config;
26 private final SslHandlerFactory sslHandlerFactory;
27 private final CallHomeNetconfSubsystemListener subsystemListener;
28 private final EventLoopGroup bossGroup;
29 private final EventLoopGroup workerGroup;
30 private final TlsAllowedDevicesMonitor allowedDevicesMonitor;
32 private NetconfCallHomeTlsServer server;
34 public NetconfCallHomeTlsService(final Configuration config,
35 final DataBroker dataBroker,
36 final CallHomeNetconfSubsystemListener subsystemListener,
37 final EventLoopGroup bossGroup,
38 final EventLoopGroup workerGroup) {
39 this.config = requireNonNull(config);
40 this.subsystemListener = requireNonNull(subsystemListener);
41 this.bossGroup = requireNonNull(bossGroup);
42 this.workerGroup = requireNonNull(workerGroup);
43 this.allowedDevicesMonitor = new TlsAllowedDevicesMonitorImpl(dataBroker);
44 this.sslHandlerFactory = new SslHandlerFactoryAdapter(dataBroker, allowedDevicesMonitor);
48 LOG.info("Initializing Call Home TLS server instance");
50 final NetconfCallHomeTlsServerBuilder builder = new NetconfCallHomeTlsServerBuilder();
51 server = builder.setHost(config.getHost())
52 .setPort(config.getPort())
53 .setTimeout(config.getTimeout())
54 .setMaxConnections(config.getMaxConnections())
55 .setSslHandlerFactory(sslHandlerFactory)
56 .setSubsystemListener(subsystemListener)
57 .setBossGroup(bossGroup)
58 .setWorkerGroup(workerGroup)
59 .setAllowedDevicesMonitor(allowedDevicesMonitor)
63 LOG.info("Initializing Call Home TLS server instance completed successfuly");
69 allowedDevicesMonitor.close();