*/
package org.opendaylight.controller.netconf.ssh.threads;
-import ch.ethz.ssh2.ServerConnection;
-import ch.ethz.ssh2.ServerSession;
import java.io.InputStream;
import java.io.OutputStream;
+
import javax.annotation.concurrent.ThreadSafe;
+
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import ch.ethz.ssh2.ServerConnection;
+import ch.ethz.ssh2.ServerSession;
+
@ThreadSafe
public class IOThread extends Thread {
private static final Logger logger = LoggerFactory.getLogger(IOThread.class);
- private InputStream inputStream;
- private OutputStream outputStream;
- private String id;
- private ServerSession servSession;
- private ServerConnection servconnection;
+ private final InputStream inputStream;
+ private final OutputStream outputStream;
+ private final ServerSession servSession;
+ private final ServerConnection servconnection;
private String customHeader;
super.setName(id);
logger.trace("IOThread {} created", super.getName());
}
+
public IOThread (InputStream is, OutputStream os, String id,ServerSession ss, ServerConnection conn,String header){
this.inputStream = is;
this.outputStream = os;
try {
if (this.customHeader!=null && !this.customHeader.equals("")){
this.outputStream.write(this.customHeader.getBytes());
- logger.trace("adding {} header", this.customHeader);
+ logger.trace("adding {} header", this.customHeader);
}
IOUtils.copy(this.inputStream, this.outputStream);
} catch (Exception e) {
package org.opendaylight.controller.netconf.ssh.threads;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+
+import javax.annotation.concurrent.ThreadSafe;
+
+import org.opendaylight.controller.netconf.ssh.authentication.AuthProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import ch.ethz.ssh2.AuthenticationResult;
import ch.ethz.ssh2.PtySettings;
import ch.ethz.ssh2.ServerAuthenticationCallback;
import ch.ethz.ssh2.ServerSession;
import ch.ethz.ssh2.ServerSessionCallback;
import ch.ethz.ssh2.SimpleServerSessionCallback;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import javax.annotation.concurrent.ThreadSafe;
-import org.opendaylight.controller.netconf.ssh.authentication.AuthProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
@ThreadSafe
-public class SocketThread implements Runnable, ServerAuthenticationCallback, ServerConnectionCallback
-{
-
- private Socket socket;
- private static final String USER = "netconf";
- private static final String PASSWORD = "netconf";
- private InetSocketAddress clientAddress;
+public class SocketThread implements Runnable, ServerAuthenticationCallback, ServerConnectionCallback {
private static final Logger logger = LoggerFactory.getLogger(SocketThread.class);
+
+ private final Socket socket;
+ private final InetSocketAddress clientAddress;
private ServerConnection conn = null;
- private long sessionId;
+ private final long sessionId;
private String currentUser;
private final String remoteAddressWithPort;
private final AuthProvider authProvider;
logger.error("SocketThread error ",e);
}
}
+ @Override
public ServerSessionCallback acceptSession(final ServerSession session)
{
SimpleServerSessionCallback cb = new SimpleServerSessionCallback()
public Runnable requestSubsystem(final ServerSession ss, final String subsystem) throws IOException
{
return new Runnable(){
+ @Override
public void run()
{
if (subsystem.equals("netconf")){
{
return new Runnable()
{
+ @Override
public void run()
{
//noop
{
return new Runnable()
{
+ @Override
public void run()
{
//noop
return cb;
}
+ @Override
public String initAuthentication(ServerConnection sc)
{
logger.trace("Established connection with host {}",remoteAddressWithPort);
return "Established connection with host "+remoteAddressWithPort+"\r\n";
}
+ @Override
public String[] getRemainingAuthMethods(ServerConnection sc)
{
return new String[] { ServerAuthenticationCallback.METHOD_PASSWORD };
}
+ @Override
public AuthenticationResult authenticateWithNone(ServerConnection sc, String username)
{
return AuthenticationResult.FAILURE;
}
+ @Override
public AuthenticationResult authenticateWithPassword(ServerConnection sc, String username, String password)
{
return AuthenticationResult.FAILURE;
}
+ @Override
public AuthenticationResult authenticateWithPublicKey(ServerConnection sc, String username, String algorithm,
byte[] publickey, byte[] signature)
{