[SSHD-459] Make Buffer an abstract class
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/9f0bb1bc Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/9f0bb1bc Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/9f0bb1bc Branch: refs/heads/master Commit: 9f0bb1bceeaa3d613fc971a70fcd86e3e20f3345 Parents: 7ccbd06 Author: Lyor Goldstein <[email protected]> Authored: Thu May 14 03:44:36 2015 +0300 Committer: Lyor Goldstein <[email protected]> Committed: Thu May 14 03:44:36 2015 +0300 ---------------------------------------------------------------------- .../sshd/agent/common/AbstractAgentClient.java | 25 +- .../sshd/agent/common/AbstractAgentProxy.java | 30 +- .../sshd/agent/local/AgentForwardedChannel.java | 10 +- .../agent/local/ChannelAgentForwarding.java | 13 +- .../org/apache/sshd/agent/unix/AgentClient.java | 11 +- .../org/apache/sshd/agent/unix/AgentServer.java | 8 +- .../sshd/agent/unix/ChannelAgentForwarding.java | 2 +- .../java/org/apache/sshd/client/UserAuth.java | 2 +- .../auth/UserAuthKeyboardInteractive.java | 2 +- .../sshd/client/auth/UserAuthPassword.java | 2 +- .../sshd/client/auth/UserAuthPublicKey.java | 13 +- .../client/channel/AbstractClientChannel.java | 29 +- .../sshd/client/channel/ChannelDirectTcpip.java | 2 +- .../apache/sshd/client/channel/ChannelExec.java | 2 +- .../sshd/client/channel/ChannelShell.java | 2 +- .../sshd/client/channel/ChannelSubsystem.java | 2 +- .../channel/PtyCapableChannelSession.java | 15 +- .../org/apache/sshd/client/kex/DHGClient.java | 19 +- .../org/apache/sshd/client/kex/DHGEXClient.java | 20 +- .../keyverifier/RequiredServerKeyVerifier.java | 2 +- .../client/session/ClientConnectionService.java | 2 +- .../sshd/client/session/ClientSessionImpl.java | 2 +- .../client/session/ClientUserAuthService.java | 2 +- .../sshd/client/sftp/DefaultSftpClient.java | 156 ++++- .../java/org/apache/sshd/common/Channel.java | 2 +- .../org/apache/sshd/common/KeyExchange.java | 2 +- .../org/apache/sshd/common/RequestHandler.java | 2 +- .../java/org/apache/sshd/common/Service.java | 2 +- .../java/org/apache/sshd/common/Session.java | 2 +- .../sshd/common/channel/AbstractChannel.java | 32 +- .../common/channel/BufferedIoOutputStream.java | 2 +- .../common/channel/ChannelAsyncInputStream.java | 10 +- .../channel/ChannelAsyncOutputStream.java | 2 +- .../common/channel/ChannelOutputStream.java | 2 +- .../common/channel/ChannelPipedInputStream.java | 8 +- .../org/apache/sshd/common/cipher/ECCurves.java | 3 +- .../sshd/common/compression/Compression.java | 2 +- .../common/compression/CompressionZlib.java | 2 +- .../common/forward/DefaultTcpipForwarder.java | 20 +- .../apache/sshd/common/forward/SocksProxy.java | 15 +- .../sshd/common/forward/TcpipClientChannel.java | 13 +- .../sshd/common/forward/TcpipServerChannel.java | 24 +- .../apache/sshd/common/io/IoInputStream.java | 2 +- .../apache/sshd/common/io/IoOutputStream.java | 2 +- .../org/apache/sshd/common/io/IoReadFuture.java | 2 +- .../org/apache/sshd/common/io/IoSession.java | 2 +- .../apache/sshd/common/io/mina/MinaSession.java | 2 +- .../apache/sshd/common/io/mina/MinaSupport.java | 2 +- .../apache/sshd/common/io/nio2/Nio2Session.java | 2 +- .../session/AbstractConnectionService.java | 2 +- .../sshd/common/session/AbstractSession.java | 55 +- .../sshd/common/signature/SignatureECDSA.java | 8 +- .../org/apache/sshd/common/util/Buffer.java | 577 ------------------- .../apache/sshd/common/util/BufferUtils.java | 73 --- .../apache/sshd/common/util/GenericUtils.java | 1 + .../org/apache/sshd/common/util/KeyUtils.java | 5 +- .../apache/sshd/common/util/buffer/Buffer.java | 489 ++++++++++++++++ .../common/util/buffer/BufferException.java | 30 + .../sshd/common/util/buffer/BufferUtils.java | 81 +++ .../common/util/buffer/ByteArrayBuffer.java | 178 ++++++ .../util/io/LoggingFilterOutputStream.java | 2 +- .../java/org/apache/sshd/server/UserAuth.java | 2 +- .../sshd/server/auth/AbstractUserAuth.java | 2 +- .../auth/UserAuthKeyboardInteractive.java | 2 +- .../apache/sshd/server/auth/UserAuthNone.java | 2 +- .../sshd/server/auth/UserAuthPassword.java | 2 +- .../sshd/server/auth/UserAuthPublicKey.java | 14 +- .../sshd/server/auth/gss/UserAuthGSS.java | 14 +- .../server/channel/AbstractServerChannel.java | 2 +- .../sshd/server/channel/AsyncDataReceiver.java | 6 +- .../sshd/server/channel/ChannelSession.java | 24 +- .../server/channel/PuttyRequestHandler.java | 2 +- .../global/CancelTcpipForwardHandler.java | 2 +- .../sshd/server/global/KeepAliveHandler.java | 2 +- .../server/global/NoMoreSessionsHandler.java | 2 +- .../sshd/server/global/TcpipForwardHandler.java | 2 +- .../org/apache/sshd/server/kex/DHGEXServer.java | 29 +- .../org/apache/sshd/server/kex/DHGServer.java | 26 +- .../sshd/server/session/ServerSession.java | 13 +- .../server/session/ServerUserAuthService.java | 2 +- .../apache/sshd/server/sftp/SftpSubsystem.java | 63 +- .../sshd/server/shell/ProcessShellFactory.java | 15 +- .../sshd/server/x11/X11ForwardSupport.java | 13 +- .../org/apache/sshd/AbstractSessionTest.java | 23 +- .../org/apache/sshd/AuthenticationTest.java | 2 +- .../test/java/org/apache/sshd/ClientTest.java | 45 +- .../org/apache/sshd/SftpFileSystemTest.java | 4 +- .../src/test/java/org/apache/sshd/SftpTest.java | 44 +- .../java/org/apache/sshd/WindowAdjustTest.java | 7 +- .../test/java/org/apache/sshd/WindowTest.java | 56 +- .../org/apache/sshd/common/util/BufferTest.java | 8 +- .../deprecated/ClientUserAuthServiceOld.java | 2 +- .../org/apache/sshd/deprecated/UserAuth.java | 2 +- .../apache/sshd/deprecated/UserAuthAgent.java | 12 +- .../deprecated/UserAuthKeyboardInteractive.java | 2 +- .../sshd/deprecated/UserAuthPassword.java | 2 +- .../sshd/deprecated/UserAuthPublicKey.java | 12 +- .../sshd/server/channel/ChannelSessionTest.java | 8 +- .../apache/sshd/util/AsyncEchoShellFactory.java | 19 +- .../java/org/apache/sshd/util/BogusChannel.java | 2 +- 100 files changed, 1522 insertions(+), 1002 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java b/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java index e7855d9..6f68856 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentClient.java @@ -18,14 +18,6 @@ */ package org.apache.sshd.agent.common; -import java.io.IOException; -import java.security.PublicKey; -import java.util.List; - -import org.apache.sshd.agent.SshAgent; -import org.apache.sshd.common.util.Buffer; -import org.apache.sshd.common.util.KeyUtils; - import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENTC_ADD_IDENTITY; import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENTC_REMOVE_ALL_IDENTITIES; import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENTC_REMOVE_IDENTITY; @@ -36,9 +28,18 @@ import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENT_IDENTITIES_ANSW import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENT_SIGN_RESPONSE; import static org.apache.sshd.agent.SshAgentConstants.SSH_AGENT_SUCCESS; +import java.io.IOException; +import java.security.PublicKey; +import java.util.List; + +import org.apache.sshd.agent.SshAgent; +import org.apache.sshd.common.util.KeyUtils; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; + public abstract class AbstractAgentClient { - private final Buffer buffer = new Buffer(); + private final Buffer buffer = new ByteArrayBuffer(); private final SshAgent agent; public AbstractAgentClient(SshAgent agent) { @@ -56,11 +57,11 @@ public abstract class AbstractAgentClient { if (buffer.available() < len + 4) { return; } - Buffer rep = new Buffer(); + Buffer rep = new ByteArrayBuffer(); rep.putInt(0); rep.rpos(rep.wpos()); try { - process(new Buffer(buffer.getBytes()), rep); + process(new ByteArrayBuffer(buffer.getBytes()), rep); } catch (Exception e) { rep.clear(); rep.putInt(0); @@ -90,7 +91,7 @@ public abstract class AbstractAgentClient { PublicKey key = req.getPublicKey(); byte[] data = req.getBytes(); int flags = req.getInt(); - Buffer sig = new Buffer(); + Buffer sig = new ByteArrayBuffer(); sig.putString(KeyUtils.getKeyType(key)); sig.putBytes(agent.sign(key, data)); rep.putByte(SSH2_AGENT_SIGN_RESPONSE); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java b/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java index 9960c0d..7af4ee2 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/common/AbstractAgentProxy.java @@ -18,16 +18,6 @@ */ package org.apache.sshd.agent.common; -import java.io.IOException; -import java.security.KeyPair; -import java.security.PublicKey; -import java.util.ArrayList; -import java.util.List; - -import org.apache.sshd.agent.SshAgent; -import org.apache.sshd.common.SshException; -import org.apache.sshd.common.util.Buffer; - import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENTC_ADD_IDENTITY; import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENTC_REMOVE_ALL_IDENTITIES; import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENTC_REMOVE_IDENTITY; @@ -37,8 +27,20 @@ import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENT_IDENTITIES_ANSW import static org.apache.sshd.agent.SshAgentConstants.SSH2_AGENT_SIGN_RESPONSE; import static org.apache.sshd.agent.SshAgentConstants.SSH_AGENT_SUCCESS; +import java.io.IOException; +import java.security.KeyPair; +import java.security.PublicKey; +import java.util.ArrayList; +import java.util.List; + +import org.apache.sshd.agent.SshAgent; +import org.apache.sshd.common.SshException; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; + public abstract class AbstractAgentProxy implements SshAgent { + @Override public List<Pair<PublicKey, String>> getIdentities() throws IOException { Buffer buffer = createBuffer(SSH2_AGENTC_REQUEST_IDENTITIES); buffer = request(prepare(buffer)); @@ -58,6 +60,7 @@ public abstract class AbstractAgentProxy implements SshAgent { return keys; } + @Override public byte[] sign(PublicKey key, byte[] data) throws IOException { Buffer buffer = createBuffer(SSH2_AGENTC_SIGN_REQUEST); buffer.putPublicKey(key); @@ -67,11 +70,12 @@ public abstract class AbstractAgentProxy implements SshAgent { if (buffer.getByte() != SSH2_AGENT_SIGN_RESPONSE) { throw new SshException("SSH agent failure"); } - Buffer buf = new Buffer(buffer.getBytes()); + Buffer buf = new ByteArrayBuffer(buffer.getBytes()); buf.getString(); // algo return buf.getBytes(); } + @Override public void addIdentity(KeyPair key, String comment) throws IOException { Buffer buffer = createBuffer(SSH2_AGENTC_ADD_IDENTITY); buffer.putKeyPair(key); @@ -82,6 +86,7 @@ public abstract class AbstractAgentProxy implements SshAgent { } } + @Override public void removeIdentity(PublicKey key) throws IOException { Buffer buffer = createBuffer(SSH2_AGENTC_REMOVE_IDENTITY); buffer.putPublicKey(key); @@ -91,6 +96,7 @@ public abstract class AbstractAgentProxy implements SshAgent { } } + @Override public void removeAllIdentities() throws IOException { Buffer buffer = createBuffer(SSH2_AGENTC_REMOVE_ALL_IDENTITIES); buffer = request(prepare(buffer)); @@ -105,7 +111,7 @@ public abstract class AbstractAgentProxy implements SshAgent { } protected Buffer createBuffer(byte cmd) { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putInt(0); buffer.putByte(cmd); return buffer; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java index 4f05443..7901af2 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/AgentForwardedChannel.java @@ -28,12 +28,13 @@ import org.apache.sshd.agent.common.AbstractAgentProxy; import org.apache.sshd.client.channel.AbstractClientChannel; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.channel.ChannelOutputStream; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; public class AgentForwardedChannel extends AbstractClientChannel { private final Queue<Buffer> messages = new ArrayBlockingQueue<Buffer>(10); - private final Buffer receiveBuffer = new Buffer(); + private final Buffer receiveBuffer = new ByteArrayBuffer(); public AgentForwardedChannel() { super("[email protected]"); @@ -77,16 +78,17 @@ public class AgentForwardedChannel extends AbstractClientChannel { invertedIn = new ChannelOutputStream(this, remoteWindow, log, SshConstants.SSH_MSG_CHANNEL_DATA); } + @Override protected void doWriteData(byte[] data, int off, int len) throws IOException { Buffer message = null; synchronized (receiveBuffer) { - receiveBuffer.putBuffer(new Buffer(data, off, len)); + receiveBuffer.putBuffer(new ByteArrayBuffer(data, off, len)); if (receiveBuffer.available() >= 4) { off = receiveBuffer.rpos(); len = receiveBuffer.getInt(); receiveBuffer.rpos(off); if (receiveBuffer.available() >= 4 + len) { - message = new Buffer(receiveBuffer.getBytes()); + message = new ByteArrayBuffer(receiveBuffer.getBytes()); receiveBuffer.compact(); } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java b/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java index dfdf288..6691031 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/local/ChannelAgentForwarding.java @@ -30,9 +30,9 @@ import org.apache.sshd.common.NamedFactory; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.channel.ChannelOutputStream; import org.apache.sshd.common.future.CloseFuture; -import org.apache.sshd.common.future.SshFuture; import org.apache.sshd.common.future.SshFutureListener; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; import org.apache.sshd.server.channel.AbstractServerChannel; /** @@ -42,10 +42,12 @@ public class ChannelAgentForwarding extends AbstractServerChannel { public static class Factory implements NamedFactory<Channel> { + @Override public String getName() { return "[email protected]"; } + @Override public Channel create() { return new ChannelAgentForwarding(); } @@ -62,6 +64,7 @@ public class ChannelAgentForwarding extends AbstractServerChannel { public ChannelAgentForwarding() { } + @Override protected OpenFuture doInit(Buffer buffer) { final OpenFuture f = new DefaultOpenFuture(this); try { @@ -89,8 +92,10 @@ public class ChannelAgentForwarding extends AbstractServerChannel { // Socket.close(handle); } + @Override public CloseFuture close(boolean immediately) { return super.close(immediately).addListener(new SshFutureListener<CloseFuture>() { + @Override public void operationComplete(CloseFuture sshFuture) { closeImmediately0(); } @@ -103,10 +108,12 @@ public class ChannelAgentForwarding extends AbstractServerChannel { // close(true); } + @Override protected void doWriteData(byte[] data, int off, int len) throws IOException { - client.messageReceived(new Buffer(data, off, len)); + client.messageReceived(new ByteArrayBuffer(data, off, len)); } + @Override protected void doWriteExtendedData(byte[] data, int off, int len) throws IOException { throw new UnsupportedOperationException("AgentForward channel does not support extended data"); } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java index 87f9a26..45b33e1 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentClient.java @@ -25,7 +25,8 @@ import java.util.concurrent.ArrayBlockingQueue; import org.apache.sshd.agent.common.AbstractAgentProxy; import org.apache.sshd.common.SshException; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; import org.apache.tomcat.jni.Local; import org.apache.tomcat.jni.Pool; import org.apache.tomcat.jni.Socket; @@ -52,7 +53,7 @@ public class AgentClient extends AbstractAgentProxy implements Runnable { if (result != Status.APR_SUCCESS) { throwException(result); } - receiveBuffer = new Buffer(); + receiveBuffer = new ByteArrayBuffer(); messages = new ArrayBlockingQueue<Buffer>(10); new Thread(this).start(); } catch (IOException e) { @@ -62,6 +63,7 @@ public class AgentClient extends AbstractAgentProxy implements Runnable { } } + @Override public void run() { try { byte[] buf = new byte[1024]; @@ -70,7 +72,7 @@ public class AgentClient extends AbstractAgentProxy implements Runnable { if (result < Status.APR_SUCCESS) { throwException(result); } - messageReceived(new Buffer(buf, 0, result)); + messageReceived(new ByteArrayBuffer(buf, 0, result)); } } catch (Exception e) { if (!closed) { @@ -94,7 +96,7 @@ public class AgentClient extends AbstractAgentProxy implements Runnable { int len = receiveBuffer.getInt(); receiveBuffer.rpos(rpos); if (receiveBuffer.available() >= 4 + len) { - message = new Buffer(receiveBuffer.getBytes()); + message = new ByteArrayBuffer(receiveBuffer.getBytes()); receiveBuffer.compact(); } } @@ -115,6 +117,7 @@ public class AgentClient extends AbstractAgentProxy implements Runnable { } } + @Override protected synchronized Buffer request(Buffer buffer) throws IOException { int wpos = buffer.wpos(); buffer.wpos(0); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java index d38b0b2..4536df0 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/AgentServer.java @@ -24,7 +24,8 @@ import java.io.IOException; import org.apache.sshd.agent.SshAgent; import org.apache.sshd.agent.common.AbstractAgentClient; import org.apache.sshd.agent.local.AgentImpl; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; import org.apache.tomcat.jni.Local; import org.apache.tomcat.jni.Pool; import org.apache.tomcat.jni.Socket; @@ -68,6 +69,7 @@ public class AgentServer implements Closeable { throwException(result); } thread = new Thread() { + @Override public void run() { try { while (true) { @@ -100,6 +102,7 @@ public class AgentServer implements Closeable { new Thread(this).start(); } + @Override public void run() { try { byte[] buf = new byte[1024]; @@ -110,7 +113,7 @@ public class AgentServer implements Closeable { } else if (result < Status.APR_SUCCESS) { throwException(result); } - messageReceived(new Buffer(buf, 0, result)); + messageReceived(new ByteArrayBuffer(buf, 0, result)); } } catch (Exception e) { e.printStackTrace(); @@ -119,6 +122,7 @@ public class AgentServer implements Closeable { } } + @Override protected void reply(Buffer buf) throws IOException { int result = Socket.send(socket, buf.array(), buf.rpos(), buf.available()); if (result < Status.APR_SUCCESS) { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java b/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java index 4f6516e..471c668 100644 --- a/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java +++ b/sshd-core/src/main/java/org/apache/sshd/agent/unix/ChannelAgentForwarding.java @@ -31,7 +31,7 @@ import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.channel.ChannelOutputStream; import org.apache.sshd.common.future.CloseFuture; import org.apache.sshd.common.future.SshFutureListener; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; import org.apache.sshd.server.channel.AbstractServerChannel; import org.apache.tomcat.jni.Local; import org.apache.tomcat.jni.Pool; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/UserAuth.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/UserAuth.java b/sshd-core/src/main/java/org/apache/sshd/client/UserAuth.java index a2e8cb7..7f864ac 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/UserAuth.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/UserAuth.java @@ -21,7 +21,7 @@ package org.apache.sshd.client; import java.util.List; import org.apache.sshd.ClientSession; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * TODO Add javadoc http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java index cce5bf1..c623cec 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthKeyboardInteractive.java @@ -28,7 +28,7 @@ import org.apache.sshd.client.UserAuth; import org.apache.sshd.client.UserInteraction; import org.apache.sshd.common.NamedFactory; import org.apache.sshd.common.SshConstants; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java index d1db9de..ba64d12 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPassword.java @@ -26,7 +26,7 @@ import org.apache.sshd.ClientSession; import org.apache.sshd.client.UserAuth; import org.apache.sshd.common.NamedFactory; import org.apache.sshd.common.SshConstants; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java index d58f7be..2e228fd 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/auth/UserAuthPublicKey.java @@ -18,6 +18,8 @@ */ package org.apache.sshd.client.auth; +import static org.apache.sshd.common.util.KeyUtils.getKeyType; + import java.io.IOException; import java.security.KeyPair; import java.security.PublicKey; @@ -35,12 +37,11 @@ import org.apache.sshd.common.NamedFactory; import org.apache.sshd.common.Signature; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.session.AbstractSession; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.sshd.common.util.KeyUtils.getKeyType; - /** * TODO Add javadoc * @@ -124,8 +125,8 @@ public class UserAuthPublicKey implements UserAuth { buffer.putString(algo); buffer.putPublicKey(key); - Buffer bs = new Buffer(); - bs.putString(((AbstractSession) session).getKex().getH()); + Buffer bs = new ByteArrayBuffer(); + bs.putBytes(((AbstractSession) session).getKex().getH()); bs.putByte(SshConstants.SSH_MSG_USERAUTH_REQUEST); bs.putString(session.getUsername()); bs.putString(service); @@ -135,7 +136,7 @@ public class UserAuthPublicKey implements UserAuth { bs.putPublicKey(key); byte[] sig = current.sign(bs.getCompactData()); - bs = new Buffer(); + bs = new ByteArrayBuffer(); bs.putString(algo); bs.putBytes(sig); buffer.putBytes(bs.array(), bs.rpos(), bs.available()); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java index 5eb907d..9fff35c 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/AbstractClientChannel.java @@ -36,8 +36,9 @@ import org.apache.sshd.common.channel.ChannelAsyncInputStream; import org.apache.sshd.common.channel.ChannelAsyncOutputStream; import org.apache.sshd.common.io.IoInputStream; import org.apache.sshd.common.io.IoOutputStream; -import org.apache.sshd.common.util.Buffer; import org.apache.sshd.common.util.IoUtils; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; /** * TODO Add javadoc @@ -75,26 +76,32 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C addRequestHandler(new ExitSignalChannelRequestHandler()); } + @Override public Streaming getStreaming() { return streaming; } + @Override public void setStreaming(Streaming streaming) { this.streaming = streaming; } + @Override public IoOutputStream getAsyncIn() { return asyncIn; } + @Override public IoInputStream getAsyncOut() { return asyncOut; } + @Override public IoInputStream getAsyncErr() { return asyncErr; } + @Override public OutputStream getInvertedIn() { return invertedIn; } @@ -103,10 +110,12 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C return in; } + @Override public void setIn(InputStream in) { this.in = in; } + @Override public InputStream getInvertedOut() { return invertedOut; } @@ -115,10 +124,12 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C return out; } + @Override public void setOut(OutputStream out) { this.out = out; } + @Override public InputStream getInvertedErr() { return invertedErr; } @@ -127,6 +138,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C return err; } + @Override public void setErr(OutputStream err) { this.err = err; } @@ -136,6 +148,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C return builder() .when(openFuture) .run(new Runnable() { + @Override public void run() { // If the channel has not been opened yet, // skip the SSH_MSG_CHANNEL_CLOSE exchange @@ -157,6 +170,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C .build(); } + @Override public int waitFor(int mask, long timeout) { long t = 0; synchronized (lock) { @@ -207,6 +221,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C } } + @Override public synchronized OpenFuture open() throws IOException { if (isClosing()) { throw new SshException("Session has been closed"); @@ -222,10 +237,12 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C return openFuture; } + @Override public OpenFuture open(int recipient, int rwsize, int rmpsize, Buffer buffer) { throw new IllegalStateException(); } + @Override public void handleOpenSuccess(int recipient, int rwsize, int rmpsize, Buffer buffer) { this.recipient = recipient; this.remoteWindow.init(rwsize, rmpsize); @@ -244,6 +261,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C protected abstract void doOpen() throws IOException; + @Override public void handleOpenFailure(Buffer buffer) { int reason = buffer.getInt(); String msg = buffer.getString(); @@ -255,13 +273,14 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C notifyStateChanged(); } + @Override protected void doWriteData(byte[] data, int off, int len) throws IOException { // If we're already closing, ignore incoming data if (isClosing()) { return; } if (asyncOut != null) { - asyncOut.write(new Buffer(data, off, len)); + asyncOut.write(new ByteArrayBuffer(data, off, len)); } else if (out != null) { out.write(data, off, len); out.flush(); @@ -273,13 +292,14 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C } } + @Override protected void doWriteExtendedData(byte[] data, int off, int len) throws IOException { // If we're already closing, ignore incoming data if (isClosing()) { return; } if (asyncErr != null) { - asyncErr.write(new Buffer(data, off, len)); + asyncErr.write(new ByteArrayBuffer(data, off, len)); } else if (err != null) { err.write(data, off, len); err.flush(); @@ -299,11 +319,13 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C } } + @Override public Integer getExitStatus() { return exitStatus; } private class ExitStatusChannelRequestHandler implements RequestHandler<Channel> { + @Override public Result process(Channel channel, String request, boolean wantReply, Buffer buffer) throws Exception { if (request.equals("exit-status")) { exitStatus = buffer.getInt(); @@ -315,6 +337,7 @@ public abstract class AbstractClientChannel extends AbstractChannel implements C } private class ExitSignalChannelRequestHandler implements RequestHandler<Channel> { + @Override public Result process(Channel channel, String request, boolean wantReply, Buffer buffer) throws Exception { if (request.equals("exit-signal")) { exitSignal = buffer.getString(); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java index 453c0ef..bb3c94f 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelDirectTcpip.java @@ -34,7 +34,7 @@ import org.apache.sshd.common.channel.ChannelAsyncOutputStream; import org.apache.sshd.common.channel.ChannelOutputStream; import org.apache.sshd.common.channel.ChannelPipedInputStream; import org.apache.sshd.common.channel.ChannelPipedOutputStream; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * TODO Add javadoc http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelExec.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelExec.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelExec.java index 3a1f2ee..0d4dcfe 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelExec.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelExec.java @@ -21,7 +21,7 @@ package org.apache.sshd.client.channel; import java.io.IOException; import org.apache.sshd.common.SshConstants; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * TODO Add javadoc http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java index 355a3da..f9a1c25 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelShell.java @@ -21,7 +21,7 @@ package org.apache.sshd.client.channel; import java.io.IOException; import org.apache.sshd.common.SshConstants; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * TODO Add javadoc http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java index fd75810..1073b05 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/ChannelSubsystem.java @@ -23,7 +23,7 @@ import java.io.IOException; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.future.CloseFuture; import org.apache.sshd.common.future.SshFutureListener; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * Client channel to run a subsystem http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java b/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java index bbcb016..2c7448b 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/channel/PtyCapableChannelSession.java @@ -18,17 +18,18 @@ */ package org.apache.sshd.client.channel; -import org.apache.sshd.common.PtyMode; -import org.apache.sshd.common.SshConstants; -import org.apache.sshd.common.util.Buffer; -import org.apache.sshd.common.util.OsUtils; -import org.apache.sshd.common.util.SttySupport; - import java.io.IOException; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; +import org.apache.sshd.common.PtyMode; +import org.apache.sshd.common.SshConstants; +import org.apache.sshd.common.util.OsUtils; +import org.apache.sshd.common.util.SttySupport; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; + /** * TODO Add javadoc * @@ -171,7 +172,7 @@ public class PtyCapableChannelSession extends ChannelSession { buffer.putInt(ptyLines); buffer.putInt(ptyHeight); buffer.putInt(ptyWidth); - Buffer modes = new Buffer(); + Buffer modes = new ByteArrayBuffer(); for (PtyMode mode : ptyModes.keySet()) { modes.putByte((byte) mode.toInt()); modes.putInt(ptyModes.get(mode)); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGClient.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGClient.java b/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGClient.java index 69bea58..5e98ac2 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGClient.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGClient.java @@ -26,8 +26,9 @@ import org.apache.sshd.common.SshException; import org.apache.sshd.common.kex.AbstractDH; import org.apache.sshd.common.kex.DHFactory; import org.apache.sshd.common.session.AbstractSession; -import org.apache.sshd.common.util.Buffer; import org.apache.sshd.common.util.KeyUtils; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; /** * Base class for DHG key exchange algorithms. @@ -67,6 +68,7 @@ public class DHGClient extends AbstractDHClientKeyExchange { this.factory = factory; } + @Override public void init(AbstractSession s, byte[] V_S, byte[] V_C, byte[] I_S, byte[] I_C) throws Exception { super.init(s, V_S, V_C, I_S, I_C); dh = getDH(); @@ -84,6 +86,7 @@ public class DHGClient extends AbstractDHClientKeyExchange { return factory.create(); } + @Override public boolean next(Buffer buffer) throws Exception { byte cmd = buffer.getByte(); if (cmd != SshConstants.SSH_MSG_KEXDH_REPLY) { @@ -99,19 +102,19 @@ public class DHGClient extends AbstractDHClientKeyExchange { dh.setF(f); K = dh.getK(); - buffer = new Buffer(K_S); + buffer = new ByteArrayBuffer(K_S); serverKey = buffer.getRawPublicKey(); final String keyAlg = KeyUtils.getKeyType(serverKey); if (keyAlg == null) { throw new SshException("Unsupported server key type"); } - buffer = new Buffer(); - buffer.putString(V_C); - buffer.putString(V_S); - buffer.putString(I_C); - buffer.putString(I_S); - buffer.putString(K_S); + buffer = new ByteArrayBuffer(); + buffer.putBytes(V_C); + buffer.putBytes(V_S); + buffer.putBytes(I_C); + buffer.putBytes(I_S); + buffer.putBytes(K_S); buffer.putMPInt(e); buffer.putMPInt(f); buffer.putMPInt(K); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGEXClient.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGEXClient.java b/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGEXClient.java index 38fca91..b1a05f9 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGEXClient.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/kex/DHGEXClient.java @@ -29,8 +29,9 @@ import org.apache.sshd.common.SshException; import org.apache.sshd.common.kex.AbstractDH; import org.apache.sshd.common.kex.DHFactory; import org.apache.sshd.common.session.AbstractSession; -import org.apache.sshd.common.util.Buffer; import org.apache.sshd.common.util.KeyUtils; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; /** @@ -49,10 +50,12 @@ public class DHGEXClient extends AbstractDHClientKeyExchange { public static final NamedFactory<KeyExchange> newFactory(final DHFactory delegate) { return new NamedFactory<KeyExchange>() { + @Override public String getName() { return delegate.getName(); } + @Override public KeyExchange create() { return new DHGEXClient(delegate); } @@ -83,6 +86,7 @@ public class DHGEXClient extends AbstractDHClientKeyExchange { expected = SshConstants.SSH_MSG_KEX_DH_GEX_GROUP; } + @Override public boolean next(Buffer buffer) throws Exception { byte cmd = buffer.getByte(); if (cmd != expected) { @@ -116,19 +120,19 @@ public class DHGEXClient extends AbstractDHClientKeyExchange { dh.setF(f); K = dh.getK(); - buffer = new Buffer(K_S); + buffer = new ByteArrayBuffer(K_S); serverKey = buffer.getRawPublicKey(); final String keyAlg = KeyUtils.getKeyType(serverKey); if (keyAlg == null) { throw new SshException("Unsupported server key type"); } - buffer = new Buffer(); - buffer.putString(V_C); - buffer.putString(V_S); - buffer.putString(I_C); - buffer.putString(I_S); - buffer.putString(K_S); + buffer = new ByteArrayBuffer(); + buffer.putBytes(V_C); + buffer.putBytes(V_S); + buffer.putBytes(I_C); + buffer.putBytes(I_S); + buffer.putBytes(K_S); buffer.putInt(min); buffer.putInt(prf); buffer.putInt(max); http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/RequiredServerKeyVerifier.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/RequiredServerKeyVerifier.java b/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/RequiredServerKeyVerifier.java index c3823cd..9a29f6d 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/RequiredServerKeyVerifier.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/keyverifier/RequiredServerKeyVerifier.java @@ -23,7 +23,7 @@ import java.security.PublicKey; import org.apache.sshd.ClientSession; import org.apache.sshd.client.ServerKeyVerifier; -import org.apache.sshd.common.util.BufferUtils; +import org.apache.sshd.common.util.buffer.BufferUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java index 7c03fb8..d9988f2 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientConnectionService.java @@ -31,7 +31,7 @@ import org.apache.sshd.common.Session; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.SshException; import org.apache.sshd.common.session.AbstractConnectionService; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * Client side <code>ssh-connection</code> service. http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java index 2b3b60a..195be0c 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientSessionImpl.java @@ -60,7 +60,7 @@ import org.apache.sshd.common.scp.ScpTransferEventListener; import org.apache.sshd.common.session.AbstractConnectionService; import org.apache.sshd.common.session.AbstractSession; import org.apache.sshd.common.session.ConnectionService; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * TODO Add javadoc http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java index cc1c655..3e8d64d 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/session/ClientUserAuthService.java @@ -35,9 +35,9 @@ import org.apache.sshd.common.ServiceFactory; import org.apache.sshd.common.Session; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.SshException; -import org.apache.sshd.common.util.Buffer; import org.apache.sshd.common.util.CloseableUtils; import org.apache.sshd.common.util.GenericUtils; +import org.apache.sshd.common.util.buffer.Buffer; /** * Client side <code>ssh-auth</code> service. http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/client/sftp/DefaultSftpClient.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/client/sftp/DefaultSftpClient.java b/sshd-core/src/main/java/org/apache/sshd/client/sftp/DefaultSftpClient.java index 99e60af..4e5c395 100644 --- a/sshd-core/src/main/java/org/apache/sshd/client/sftp/DefaultSftpClient.java +++ b/sshd-core/src/main/java/org/apache/sshd/client/sftp/DefaultSftpClient.java @@ -18,6 +18,75 @@ */ package org.apache.sshd.client.sftp; +import static org.apache.sshd.common.sftp.SftpConstants.ACE4_APPEND_DATA; +import static org.apache.sshd.common.sftp.SftpConstants.ACE4_READ_ATTRIBUTES; +import static org.apache.sshd.common.sftp.SftpConstants.ACE4_READ_DATA; +import static org.apache.sshd.common.sftp.SftpConstants.ACE4_WRITE_ATTRIBUTES; +import static org.apache.sshd.common.sftp.SftpConstants.ACE4_WRITE_DATA; +import static org.apache.sshd.common.sftp.SftpConstants.SFTP_V3; +import static org.apache.sshd.common.sftp.SftpConstants.SFTP_V4; +import static org.apache.sshd.common.sftp.SftpConstants.SFTP_V5; +import static org.apache.sshd.common.sftp.SftpConstants.SFTP_V6; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_ACCESSTIME; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_ACMODTIME; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_ALL; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_CREATETIME; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_MODIFYTIME; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_OWNERGROUP; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_PERMISSIONS; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_SIZE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_SUBSECOND_TIMES; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_ATTR_UIDGID; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_TYPE_DIRECTORY; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_TYPE_REGULAR; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FILEXFER_TYPE_SYMLINK; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_APPEND; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_CREAT; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_CREATE_NEW; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_CREATE_TRUNCATE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_EXCL; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_OPEN_EXISTING; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_OPEN_OR_CREATE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_READ; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_TRUNC; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_TRUNCATE_EXISTING; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXF_WRITE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_ATTRS; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_BLOCK; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_CLOSE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_DATA; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_FSETSTAT; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_FSTAT; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_HANDLE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_INIT; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_LINK; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_LSTAT; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_MKDIR; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_NAME; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_OPEN; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_OPENDIR; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_READ; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_READDIR; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_READLINK; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_REALPATH; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_REMOVE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_RENAME; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_RENAME_ATOMIC; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_RENAME_OVERWRITE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_RMDIR; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_SETSTAT; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_STAT; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_STATUS; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_SYMLINK; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_UNBLOCK; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_VERSION; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FXP_WRITE; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FX_EOF; +import static org.apache.sshd.common.sftp.SftpConstants.SSH_FX_OK; +import static org.apache.sshd.common.sftp.SftpConstants.S_IFDIR; +import static org.apache.sshd.common.sftp.SftpConstants.S_IFLNK; +import static org.apache.sshd.common.sftp.SftpConstants.S_IFREG; + import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -40,9 +109,8 @@ import org.apache.sshd.client.SftpClient; import org.apache.sshd.client.SftpException; import org.apache.sshd.client.channel.ChannelSubsystem; import org.apache.sshd.common.SshException; -import org.apache.sshd.common.util.Buffer; - -import static org.apache.sshd.common.sftp.SftpConstants.*; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; /** * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a> @@ -52,7 +120,7 @@ public class DefaultSftpClient implements SftpClient { private final ChannelSubsystem channel; private final Map<Integer, Buffer> messages; private final AtomicInteger cmdId = new AtomicInteger(100); - private final Buffer receiveBuffer = new Buffer(); + private final Buffer receiveBuffer = new ByteArrayBuffer(); private boolean closing; private int version; private final Map<String, byte[]> extensions = new HashMap<>(); @@ -78,6 +146,7 @@ public class DefaultSftpClient implements SftpClient { throw (IOException) new InterruptedIOException().initCause(e); } this.channel.onClose(new Runnable() { + @Override public void run() { synchronized (messages) { closing = true; @@ -93,10 +162,12 @@ public class DefaultSftpClient implements SftpClient { return version; } + @Override public boolean isClosing() { return closing; } + @Override public void close() throws IOException { this.channel.close(false); } @@ -105,7 +176,7 @@ public class DefaultSftpClient implements SftpClient { * Receive binary data */ protected int data(byte[] buf, int start, int len) throws IOException { - Buffer incoming = new Buffer(buf, start, len); + Buffer incoming = new ByteArrayBuffer(buf, start, len); // If we already have partial data, we need to append it to the buffer and use it if (receiveBuffer.available() > 0) { receiveBuffer.putBuffer(incoming); @@ -152,7 +223,7 @@ public class DefaultSftpClient implements SftpClient { * Process an SFTP packet */ protected void process(Buffer incoming) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putBuffer(incoming); buffer.rpos(5); int id = buffer.getInt(); @@ -200,7 +271,7 @@ public class DefaultSftpClient implements SftpClient { if (length < 5) { throw new IllegalArgumentException(); } - Buffer buffer = new Buffer(length + 4); + Buffer buffer = new ByteArrayBuffer(length + 4); buffer.putInt(length); int nb = length; while (nb > 0) { @@ -516,8 +587,9 @@ public class DefaultSftpClient implements SftpClient { } } + @Override public Handle open(String path, Collection<OpenMode> options) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); if (version == SFTP_V3) { int mode = 0; @@ -576,24 +648,28 @@ public class DefaultSftpClient implements SftpClient { return checkHandle(receive(send(SSH_FXP_OPEN, buffer))); } + @Override public void close(Handle handle) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(handle.id); checkStatus(receive(send(SSH_FXP_CLOSE, buffer))); } + @Override public void remove(String path) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); checkStatus(receive(send(SSH_FXP_REMOVE, buffer))); } + @Override public void rename(String oldPath, String newPath) throws IOException { rename(oldPath, newPath, new CopyMode[0]); } + @Override public void rename(String oldPath, String newPath, CopyMode... options) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(oldPath); buffer.putString(newPath); if (version >= SFTP_V5) { @@ -615,8 +691,9 @@ public class DefaultSftpClient implements SftpClient { checkStatus(receive(send(SSH_FXP_RENAME, buffer))); } + @Override public int read(Handle handle, long fileOffset, byte[] dst, int dstoff, int len) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(handle.id); buffer.putLong(fileOffset); buffer.putInt(len); @@ -645,6 +722,7 @@ public class DefaultSftpClient implements SftpClient { } } + @Override public void write(Handle handle, long fileOffset, byte[] src, int srcoff, int len) throws IOException { // do some bounds checking first if (fileOffset < 0 || srcoff < 0 || len < 0) { @@ -653,15 +731,16 @@ public class DefaultSftpClient implements SftpClient { if (srcoff + len > src.length) { throw new IllegalArgumentException("cannot read bytes " + srcoff + " to " + (srcoff + len) + " when array is only of length " + src.length); } - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(handle.id); buffer.putLong(fileOffset); buffer.putBytes(src, srcoff, len); checkStatus(receive(send(SSH_FXP_WRITE, buffer))); } + @Override public void mkdir(String path) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path, StandardCharsets.UTF_8); buffer.putInt(0); if (version != SFTP_V3) { @@ -670,20 +749,23 @@ public class DefaultSftpClient implements SftpClient { checkStatus(receive(send(SSH_FXP_MKDIR, buffer))); } + @Override public void rmdir(String path) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); checkStatus(receive(send(SSH_FXP_RMDIR, buffer))); } + @Override public Handle openDir(String path) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); return checkHandle(receive(send(SSH_FXP_OPENDIR, buffer))); } + @Override public DirEntry[] readDir(Handle handle) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(handle.id); return checkDir(receive(send(SSH_FXP_READDIR, buffer))); } @@ -715,14 +797,16 @@ public class DefaultSftpClient implements SftpClient { } } + @Override public String canonicalPath(String path) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); return checkOneName(receive(send(SSH_FXP_REALPATH, buffer))); } + @Override public Attributes stat(String path) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); if (version >= SFTP_V4) { buffer.putInt(SSH_FILEXFER_ATTR_ALL); @@ -730,8 +814,9 @@ public class DefaultSftpClient implements SftpClient { return checkAttributes(receive(send(SSH_FXP_STAT, buffer))); } + @Override public Attributes lstat(String path) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); if (version >= SFTP_V4) { buffer.putInt(SSH_FILEXFER_ATTR_ALL); @@ -739,8 +824,9 @@ public class DefaultSftpClient implements SftpClient { return checkAttributes(receive(send(SSH_FXP_LSTAT, buffer))); } + @Override public Attributes stat(Handle handle) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(handle.id); if (version >= SFTP_V4) { buffer.putInt(SSH_FILEXFER_ATTR_ALL); @@ -748,41 +834,46 @@ public class DefaultSftpClient implements SftpClient { return checkAttributes(receive(send(SSH_FXP_FSTAT, buffer))); } + @Override public void setStat(String path, Attributes attributes) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); writeAttributes(buffer, attributes); checkStatus(receive(send(SSH_FXP_SETSTAT, buffer))); } + @Override public void setStat(Handle handle, Attributes attributes) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(handle.id); writeAttributes(buffer, attributes); checkStatus(receive(send(SSH_FXP_FSETSTAT, buffer))); } + @Override public String readLink(String path) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(path); return checkOneName(receive(send(SSH_FXP_READLINK, buffer))); } + @Override public void symLink(String linkPath, String targetPath) throws IOException { link(linkPath, targetPath, true); } + @Override public void link(String linkPath, String targetPath, boolean symbolic) throws IOException { if (version < SFTP_V6) { if (!symbolic) { throw new UnsupportedOperationException("Hard links are not supported in sftp v" + version); } - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(targetPath); buffer.putString(linkPath); checkStatus(receive(send(SSH_FXP_SYMLINK, buffer))); } else { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(targetPath); buffer.putString(linkPath); buffer.putBoolean(symbolic); @@ -792,7 +883,7 @@ public class DefaultSftpClient implements SftpClient { @Override public void lock(Handle handle, long offset, long length, int mask) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(handle.id); buffer.putLong(offset); buffer.putLong(length); @@ -802,15 +893,17 @@ public class DefaultSftpClient implements SftpClient { @Override public void unlock(Handle handle, long offset, long length) throws IOException { - Buffer buffer = new Buffer(); + Buffer buffer = new ByteArrayBuffer(); buffer.putString(handle.id); buffer.putLong(offset); buffer.putLong(length); checkStatus(receive(send(SSH_FXP_UNBLOCK, buffer))); } + @Override public Iterable<DirEntry> readDir(final String path) throws IOException { return new Iterable<DirEntry>() { + @Override public Iterator<DirEntry> iterator() { return new Iterator<DirEntry>() { Handle handle; @@ -820,9 +913,11 @@ public class DefaultSftpClient implements SftpClient { open(); load(); } + @Override public boolean hasNext() { return entries != null && index < entries.length; } + @Override public DirEntry next() { DirEntry entry = entries[index++]; if (index >= entries.length) { @@ -854,6 +949,7 @@ public class DefaultSftpClient implements SftpClient { throw new RuntimeException(e); } } + @Override public void remove() { throw new UnsupportedOperationException(); } @@ -862,10 +958,12 @@ public class DefaultSftpClient implements SftpClient { }; } + @Override public InputStream read(final String path) throws IOException { return read(path, EnumSet.of(OpenMode.Read)); } + @Override public InputStream read(final String path, final EnumSet<OpenMode> mode) throws IOException { return new InputStream() { byte[] buffer = new byte[32 * 1024]; @@ -922,10 +1020,12 @@ public class DefaultSftpClient implements SftpClient { }; } + @Override public OutputStream write(final String path) throws IOException { return write(path, EnumSet.of(OpenMode.Write, OpenMode.Create, OpenMode.Truncate)); } + @Override public OutputStream write(final String path, final EnumSet<OpenMode> mode) throws IOException { return new OutputStream() { byte[] buffer = new byte[32 * 1024]; http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/Channel.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/Channel.java b/sshd-core/src/main/java/org/apache/sshd/common/Channel.java index d0ec2b3..e353b38 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/Channel.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/Channel.java @@ -24,7 +24,7 @@ import org.apache.sshd.client.future.OpenFuture; import org.apache.sshd.common.channel.Window; import org.apache.sshd.common.future.CloseFuture; import org.apache.sshd.common.session.ConnectionService; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * TODO Add javadoc http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/KeyExchange.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/KeyExchange.java b/sshd-core/src/main/java/org/apache/sshd/common/KeyExchange.java index cd9de71..d0c3e7a 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/KeyExchange.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/KeyExchange.java @@ -21,7 +21,7 @@ package org.apache.sshd.common; import java.security.PublicKey; import org.apache.sshd.common.session.AbstractSession; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * Key exchange algorithm. http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java b/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java index 1a239c4..0a78f45 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/RequestHandler.java @@ -19,7 +19,7 @@ package org.apache.sshd.common; import org.apache.sshd.common.session.ConnectionService; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * A global request handler. http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/Service.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/Service.java b/sshd-core/src/main/java/org/apache/sshd/common/Service.java index 1023475..fabdac0 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/Service.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/Service.java @@ -21,7 +21,7 @@ package org.apache.sshd.common; import java.io.IOException; import org.apache.sshd.common.future.CloseFuture; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * See RFC 4253 [SSH-TRANS] and the SSH_MSG_SERVICE_REQUEST packet. Examples include ssh-userauth http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/Session.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/Session.java b/sshd-core/src/main/java/org/apache/sshd/common/Session.java index 66143ec..6ec08d1 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/Session.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/Session.java @@ -24,7 +24,7 @@ import java.util.concurrent.TimeUnit; import org.apache.sshd.common.future.SshFuture; import org.apache.sshd.common.io.IoSession; import org.apache.sshd.common.io.IoWriteFuture; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; /** * Represents an SSH session http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java index fd2aa0f..a5c6555 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/AbstractChannel.java @@ -36,9 +36,10 @@ import org.apache.sshd.common.future.DefaultCloseFuture; import org.apache.sshd.common.future.SshFutureListener; import org.apache.sshd.common.io.IoWriteFuture; import org.apache.sshd.common.session.ConnectionService; -import org.apache.sshd.common.util.Buffer; -import org.apache.sshd.common.util.BufferUtils; import org.apache.sshd.common.util.CloseableUtils; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.BufferUtils; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; /** * TODO Add javadoc @@ -71,30 +72,38 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea handlers.add(handler); } + @Override public int getId() { return id; } + @Override public int getRecipient() { return recipient; } + @Override public Window getLocalWindow() { return localWindow; } + @Override public Window getRemoteWindow() { return remoteWindow; } + @Override public Session getSession() { return session; } + @Override public void handleRequest(Buffer buffer) throws IOException { String req = buffer.getString(); boolean wantReply = buffer.getBoolean(); - log.debug("Received SSH_MSG_CHANNEL_REQUEST {} on channel {} (wantReply {})", new Object[] { req, this, wantReply }); + if (log.isDebugEnabled()) { + log.debug("Received SSH_MSG_CHANNEL_REQUEST {} on channel {} (wantReply {})", new Object[] { req, this, Boolean.valueOf(wantReply) }); + } for (RequestHandler<Channel> handler : handlers) { RequestHandler.Result result; try { @@ -130,6 +139,7 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea } } + @Override public void init(ConnectionService service, Session session, int id) { this.service = service; this.session = session; @@ -143,6 +153,7 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea } } + @Override public void handleClose() throws IOException { log.debug("Received SSH_MSG_CHANNEL_CLOSE on channel {}", this); if (gracefulState.compareAndSet(GracefulState.Opened, GracefulState.CloseReceived)) { @@ -152,6 +163,7 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea } } + @Override protected Closeable getInnerCloseable() { return new GracefulChannelCloseable(); } @@ -160,12 +172,15 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea protected volatile boolean closing; + @Override public boolean isClosing() { return closing; } + @Override public boolean isClosed() { return gracefulFuture.isClosed(); } + @Override public CloseFuture close(boolean immediately) { closing = true; if (immediately) { @@ -177,6 +192,7 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea try { long timeout = FactoryManagerUtils.getLongProperty(getSession(), FactoryManager.CHANNEL_CLOSE_TIMEOUT, DEFAULT_CHANNEL_CLOSE_TIMEOUT); session.writePacket(buffer, timeout, TimeUnit.MILLISECONDS).addListener(new SshFutureListener<IoWriteFuture>() { + @Override public void operationComplete(IoWriteFuture future) { if (future.isWritten()) { log.debug("Message SSH_MSG_CHANNEL_CLOSE written on channel {}", AbstractChannel.this); @@ -214,9 +230,10 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea } } + @Override public void handleData(Buffer buffer) throws IOException { int len = buffer.getInt(); - if (len < 0 || len > Buffer.MAX_LEN) { + if (len < 0 || len > ByteArrayBuffer.MAX_LEN) { throw new IllegalStateException("Bad item length: " + len); } log.debug("Received SSH_MSG_CHANNEL_DATA on channel {}", this); @@ -226,6 +243,7 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea doWriteData(buffer.array(), buffer.rpos(), len); } + @Override public void handleExtendedData(Buffer buffer) throws IOException { int ex = buffer.getInt(); // Only accept extended data for stderr @@ -237,7 +255,7 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea return; } int len = buffer.getInt(); - if (len < 0 || len > Buffer.MAX_LEN) { + if (len < 0 || len > ByteArrayBuffer.MAX_LEN) { throw new IllegalStateException("Bad item length: " + len); } log.debug("Received SSH_MSG_CHANNEL_EXTENDED_DATA on channel {}", this); @@ -247,18 +265,21 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea doWriteExtendedData(buffer.array(), buffer.rpos(), len); } + @Override public void handleEof() throws IOException { log.debug("Received SSH_MSG_CHANNEL_EOF on channel {}", this); eof = true; notifyStateChanged(); } + @Override public void handleWindowAdjust(Buffer buffer) throws IOException { log.debug("Received SSH_MSG_CHANNEL_WINDOW_ADJUST on channel {}", this); int window = buffer.getInt(); remoteWindow.expand(window); } + @Override public void handleFailure() throws IOException { log.debug("Received SSH_MSG_CHANNEL_FAILURE on channel {}", this); // TODO: do something to report failed requests? @@ -289,6 +310,7 @@ public abstract class AbstractChannel extends CloseableUtils.AbstractInnerClosea writePacket(buffer); } + @Override public String toString() { return getClass().getSimpleName() + "[id=" + id + ", recipient=" + recipient + "]"; } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java index 3c342c3..b9defba 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/BufferedIoOutputStream.java @@ -27,8 +27,8 @@ import org.apache.sshd.common.Closeable; import org.apache.sshd.common.future.SshFutureListener; import org.apache.sshd.common.io.IoOutputStream; import org.apache.sshd.common.io.IoWriteFuture; -import org.apache.sshd.common.util.Buffer; import org.apache.sshd.common.util.CloseableUtils; +import org.apache.sshd.common.util.buffer.Buffer; /** * An IoOutputStream capable of queuing write requests http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java index b7cbbb5..5a41887 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncInputStream.java @@ -28,14 +28,15 @@ import org.apache.sshd.common.future.DefaultSshFuture; import org.apache.sshd.common.io.IoInputStream; import org.apache.sshd.common.io.IoReadFuture; import org.apache.sshd.common.io.ReadPendingException; -import org.apache.sshd.common.util.Buffer; import org.apache.sshd.common.util.CloseableUtils; import org.apache.sshd.common.util.Readable; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; public class ChannelAsyncInputStream extends CloseableUtils.AbstractCloseable implements IoInputStream { private final Channel channel; - private final Buffer buffer = new Buffer(); + private final Buffer buffer = new ByteArrayBuffer(); private IoReadFutureImpl pending; public ChannelAsyncInputStream(Channel channel) { @@ -49,6 +50,7 @@ public class ChannelAsyncInputStream extends CloseableUtils.AbstractCloseable im doRead(true); } + @Override public IoReadFuture read(Buffer buf) { IoReadFutureImpl future = new IoReadFutureImpl(buf); if (isClosing()) { @@ -127,10 +129,12 @@ public class ChannelAsyncInputStream extends CloseableUtils.AbstractCloseable im this.buffer = buffer; } + @Override public Buffer getBuffer() { return buffer; } + @Override public void verify() throws SshException { try { await(); @@ -142,6 +146,7 @@ public class ChannelAsyncInputStream extends CloseableUtils.AbstractCloseable im throw new SshException("Write failed", getException()); } } + @Override public int getRead() { Object v = getValue(); if (v instanceof RuntimeException) { @@ -157,6 +162,7 @@ public class ChannelAsyncInputStream extends CloseableUtils.AbstractCloseable im } } + @Override public Throwable getException() { Object v = getValue(); if (v instanceof Throwable) { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java index 6aabdeb..11089c9 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelAsyncOutputStream.java @@ -30,8 +30,8 @@ import org.apache.sshd.common.future.SshFutureListener; import org.apache.sshd.common.io.IoOutputStream; import org.apache.sshd.common.io.IoWriteFuture; import org.apache.sshd.common.io.WritePendingException; -import org.apache.sshd.common.util.Buffer; import org.apache.sshd.common.util.CloseableUtils; +import org.apache.sshd.common.util.buffer.Buffer; public class ChannelAsyncOutputStream extends CloseableUtils.AbstractCloseable implements IoOutputStream { http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java index 5c3c959..19d0bb2 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelOutputStream.java @@ -24,7 +24,7 @@ import java.io.OutputStream; import org.apache.sshd.common.SshConstants; import org.apache.sshd.common.SshException; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; import org.slf4j.Logger; /** http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelPipedInputStream.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelPipedInputStream.java b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelPipedInputStream.java index cb003b7..d3e5b9e 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelPipedInputStream.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/channel/ChannelPipedInputStream.java @@ -27,7 +27,8 @@ import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -import org.apache.sshd.common.util.Buffer; +import org.apache.sshd.common.util.buffer.Buffer; +import org.apache.sshd.common.util.buffer.ByteArrayBuffer; /** * TODO Add javadoc @@ -37,7 +38,7 @@ import org.apache.sshd.common.util.Buffer; public class ChannelPipedInputStream extends InputStream { private final Window localWindow; - private final Buffer buffer = new Buffer(); + private final Buffer buffer = new ByteArrayBuffer(); private final byte[] b = new byte[1]; private boolean closed; private boolean eofSent; @@ -80,13 +81,14 @@ public class ChannelPipedInputStream extends InputStream { } } + @Override public int read() throws IOException { synchronized (b) { int l = read(b, 0, 1); if (l == -1) { return -1; } - return ((int) b[0] & 0xff); + return (b[0] & 0xff); } } http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/9f0bb1bc/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java ---------------------------------------------------------------------- diff --git a/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java b/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java index 14d979b..2cc250c 100644 --- a/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java +++ b/sshd-core/src/main/java/org/apache/sshd/common/cipher/ECCurves.java @@ -28,6 +28,7 @@ import java.util.TreeMap; import org.apache.sshd.common.Digest; import org.apache.sshd.common.digest.BuiltinDigests; +import org.apache.sshd.common.util.GenericUtils; /** * Utilities for working with elliptic curves. @@ -53,7 +54,7 @@ public class ECCurves { public static String getCurveName(ECParameterSpec params) { int fieldSize = getCurveSize(params); final String curveName = getCurveName(fieldSize); - if (curveName == null) { + if (GenericUtils.isEmpty(curveName)) { throw new RuntimeException("invalid curve size " + fieldSize); } return curveName;
