X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-ssh%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fssh%2FNetconfSSHServer.java;h=51054dd938ac8349447e694ea5c2698a7bc6d5c8;hp=72135cc7dcdd39acddfd8d69d826f2683ee9b921;hb=3e20a64a21d5b7bced26b03108aedcd025dd8be6;hpb=6bbe43e23f7f9f7d5373db577874d51636d4cea4 diff --git a/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/NetconfSSHServer.java b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/NetconfSSHServer.java index 72135cc7dc..51054dd938 100644 --- a/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/NetconfSSHServer.java +++ b/opendaylight/netconf/netconf-ssh/src/main/java/org/opendaylight/controller/netconf/ssh/NetconfSSHServer.java @@ -7,56 +7,70 @@ */ package org.opendaylight.controller.netconf.ssh; +import org.opendaylight.controller.netconf.ssh.authentication.AuthProvider; +import org.opendaylight.controller.netconf.ssh.threads.SocketThread; +import org.opendaylight.controller.usermanager.IUserManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.annotation.concurrent.ThreadSafe; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.util.concurrent.atomic.AtomicLong; -import javax.annotation.concurrent.ThreadSafe; -import org.opendaylight.controller.netconf.ssh.threads.SocketThread; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; @ThreadSafe -public class NetconfSSHServer implements Runnable { +public final class NetconfSSHServer implements Runnable { - private static boolean acceptMore = true; private ServerSocket ss = null; private static final Logger logger = LoggerFactory.getLogger(NetconfSSHServer.class); private static final AtomicLong sesssionId = new AtomicLong(); private final InetSocketAddress clientAddress; + private final AuthProvider authProvider; + private boolean up = false; - private NetconfSSHServer(int serverPort,InetSocketAddress clientAddress) throws Exception{ + private NetconfSSHServer(int serverPort,InetSocketAddress clientAddress, AuthProvider authProvider) throws IllegalStateException, IOException { logger.trace("Creating SSH server socket on port {}",serverPort); this.ss = new ServerSocket(serverPort); if (!ss.isBound()){ - throw new Exception("Socket can't be bound to requested port :"+serverPort); + throw new IllegalStateException("Socket can't be bound to requested port :"+serverPort); } logger.trace("Server socket created."); this.clientAddress = clientAddress; - + this.authProvider = authProvider; + this.up = true; } - - public static NetconfSSHServer start(int serverPort, InetSocketAddress clientAddress) throws Exception { - return new NetconfSSHServer(serverPort, clientAddress); + public static NetconfSSHServer start(int serverPort, InetSocketAddress clientAddress,AuthProvider authProvider) throws IllegalStateException, IOException { + return new NetconfSSHServer(serverPort, clientAddress,authProvider); } - public void stop() throws Exception { - acceptMore = false; + public void stop() throws IOException { + up = false; logger.trace("Closing SSH server socket."); ss.close(); logger.trace("SSH server socket closed."); } + public void removeUserManagerService(){ + this.authProvider.removeUserManagerService(); + } + + public void addUserManagerService(IUserManager userManagerService){ + this.authProvider.addUserManagerService(userManagerService); + } + public boolean isUp(){ + return this.up; + } @Override public void run() { - while (acceptMore) { + while (up) { logger.trace("Starting new socket thread."); try { - SocketThread.start(ss.accept(), clientAddress, sesssionId.incrementAndGet()); + SocketThread.start(ss.accept(), clientAddress, sesssionId.incrementAndGet(),authProvider); } catch (IOException e) { - e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. + logger.error("Exception occurred during socket thread initialization {}",e); } } }