You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2018/04/19 15:07:59 UTC
[3/5] mina-sshd git commit: [SSHD-812] Move executeExtendedCommand to
AbstractSftpSubsystemHelper
[SSHD-812] Move executeExtendedCommand to AbstractSftpSubsystemHelper
Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/bb378250
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/bb378250
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/bb378250
Branch: refs/heads/master
Commit: bb378250bdddb2e0a2cf30c5942394c70dc40783
Parents: ef23738
Author: Guillaume Nodet <gn...@apache.org>
Authored: Tue Apr 17 09:39:33 2018 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Thu Apr 19 17:07:34 2018 +0200
----------------------------------------------------------------------
.../sftp/AbstractSftpSubsystemHelper.java | 44 +++++++++++++++++++-
.../server/subsystem/sftp/SftpSubsystem.java | 43 -------------------
2 files changed, 43 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/bb378250/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
----------------------------------------------------------------------
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
index f3946d4..6814ef5 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/AbstractSftpSubsystemHelper.java
@@ -1563,7 +1563,49 @@ public abstract class AbstractSftpSubsystemHelper
* @param extension The extension name
* @throws IOException If failed to execute the extension
*/
- protected abstract void executeExtendedCommand(Buffer buffer, int id, String extension) throws IOException;
+ protected void executeExtendedCommand(Buffer buffer, int id, String extension) throws IOException {
+ switch (extension) {
+ case SftpConstants.EXT_TEXT_SEEK:
+ doTextSeek(buffer, id);
+ break;
+ case SftpConstants.EXT_VERSION_SELECT:
+ doVersionSelect(buffer, id);
+ break;
+ case SftpConstants.EXT_COPY_FILE:
+ doCopyFile(buffer, id);
+ break;
+ case SftpConstants.EXT_COPY_DATA:
+ doCopyData(buffer, id);
+ break;
+ case SftpConstants.EXT_MD5_HASH:
+ case SftpConstants.EXT_MD5_HASH_HANDLE:
+ doMD5Hash(buffer, id, extension);
+ break;
+ case SftpConstants.EXT_CHECK_FILE_HANDLE:
+ case SftpConstants.EXT_CHECK_FILE_NAME:
+ doCheckFileHash(buffer, id, extension);
+ break;
+ case FsyncExtensionParser.NAME:
+ doOpenSSHFsync(buffer, id);
+ break;
+ case SftpConstants.EXT_SPACE_AVAILABLE:
+ doSpaceAvailable(buffer, id);
+ break;
+ case HardLinkExtensionParser.NAME:
+ doOpenSSHHardLink(buffer, id);
+ break;
+ default:
+ doUnsupportedExtension(buffer, id, extension);
+ break;
+ }
+ }
+
+ protected void doUnsupportedExtension(Buffer buffer, int id, String extension) throws IOException {
+ if (log.isDebugEnabled()) {
+ log.debug("executeExtendedCommand({}) received unsupported SSH_FXP_EXTENDED({})", getServerSession(), extension);
+ }
+ sendStatus(buffer, id, SftpConstants.SSH_FX_OP_UNSUPPORTED, "Command SSH_FXP_EXTENDED(" + extension + ") is unsupported or not implemented");
+ }
protected void appendExtensions(Buffer buffer, String supportedVersions) {
appendVersionsExtension(buffer, supportedVersions);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/bb378250/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
----------------------------------------------------------------------
diff --git a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
index 8abfba8..8979909 100644
--- a/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
+++ b/sshd-sftp/src/main/java/org/apache/sshd/server/subsystem/sftp/SftpSubsystem.java
@@ -51,8 +51,6 @@ import org.apache.sshd.common.file.FileSystemAware;
import org.apache.sshd.common.random.Random;
import org.apache.sshd.common.subsystem.sftp.SftpConstants;
import org.apache.sshd.common.subsystem.sftp.SftpHelper;
-import org.apache.sshd.common.subsystem.sftp.extensions.openssh.FsyncExtensionParser;
-import org.apache.sshd.common.subsystem.sftp.extensions.openssh.HardLinkExtensionParser;
import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
import org.apache.sshd.common.util.buffer.Buffer;
@@ -306,47 +304,6 @@ public class SftpSubsystem
}
@Override
- protected void executeExtendedCommand(Buffer buffer, int id, String extension) throws IOException {
- switch (extension) {
- case SftpConstants.EXT_TEXT_SEEK:
- doTextSeek(buffer, id);
- break;
- case SftpConstants.EXT_VERSION_SELECT:
- doVersionSelect(buffer, id);
- break;
- case SftpConstants.EXT_COPY_FILE:
- doCopyFile(buffer, id);
- break;
- case SftpConstants.EXT_COPY_DATA:
- doCopyData(buffer, id);
- break;
- case SftpConstants.EXT_MD5_HASH:
- case SftpConstants.EXT_MD5_HASH_HANDLE:
- doMD5Hash(buffer, id, extension);
- break;
- case SftpConstants.EXT_CHECK_FILE_HANDLE:
- case SftpConstants.EXT_CHECK_FILE_NAME:
- doCheckFileHash(buffer, id, extension);
- break;
- case FsyncExtensionParser.NAME:
- doOpenSSHFsync(buffer, id);
- break;
- case SftpConstants.EXT_SPACE_AVAILABLE:
- doSpaceAvailable(buffer, id);
- break;
- case HardLinkExtensionParser.NAME:
- doOpenSSHHardLink(buffer, id);
- break;
- default:
- if (log.isDebugEnabled()) {
- log.debug("executeExtendedCommand({}) received unsupported SSH_FXP_EXTENDED({})", getServerSession(), extension);
- }
- sendStatus(BufferUtils.clear(buffer), id, SftpConstants.SSH_FX_OP_UNSUPPORTED, "Command SSH_FXP_EXTENDED(" + extension + ") is unsupported or not implemented");
- break;
- }
- }
-
- @Override
protected void createLink(int id, String existingPath, String linkPath, boolean symLink) throws IOException {
Path link = resolveFile(linkPath);
Path existing = fileSystem.getPath(existingPath);