Package org.apache.sshd.scp.common
Class ScpHelper
- java.lang.Object
-
- org.apache.sshd.common.util.logging.AbstractLoggingBean
-
- org.apache.sshd.scp.common.ScpHelper
-
- All Implemented Interfaces:
SessionContextHolder
,SessionHolder<Session>
public class ScpHelper extends AbstractLoggingBean implements SessionHolder<Session>
-
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_COPY_BUFFER_SIZE
Default size (in bytes) of send / receive buffer sizestatic int
DEFAULT_RECEIVE_BUFFER_SIZE
static int
DEFAULT_SEND_BUFFER_SIZE
protected java.nio.file.FileSystem
fileSystem
protected java.io.InputStream
in
protected ScpTransferEventListener
listener
static int
MIN_COPY_BUFFER_SIZE
The minimum size for sending / receiving filesstatic int
MIN_RECEIVE_BUFFER_SIZE
static int
MIN_SEND_BUFFER_SIZE
protected ScpFileOpener
opener
protected java.io.OutputStream
out
static java.lang.String
SCP_COMMAND_PREFIX
Command prefix used to identify SCP commandsprivate Session
sessionInstance
-
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
-
-
Constructor Summary
Constructors Constructor Description ScpHelper(Session session, java.io.InputStream in, java.io.OutputStream out, java.nio.file.FileSystem fileSystem, ScpFileOpener opener, ScpTransferEventListener eventListener)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Session
getSession()
ScpAckInfo
readAck(boolean canEof)
java.lang.String
readLine()
java.lang.String
readLine(boolean canEof)
void
receive(java.nio.file.Path local, boolean recursive, boolean shouldBeDir, boolean preserve, int bufferSize)
protected void
receive(ScpReceiveLineHandler handler)
Reads command line(s) and invokes the handler until EOF or and "E" command is receivedvoid
receiveDir(java.lang.String header, java.nio.file.Path local, ScpTimestampCommandDetails time, boolean preserve, int bufferSize)
void
receiveFile(java.lang.String header, java.nio.file.Path local, ScpTimestampCommandDetails time, boolean preserve, int bufferSize)
void
receiveFileStream(java.io.OutputStream local, int bufferSize)
protected int
receiveNextCmd()
void
receiveStream(java.lang.String header, ScpTargetStreamResolver resolver, ScpTimestampCommandDetails time, boolean preserve, int bufferSize)
java.nio.file.Path
resolveLocalPath(java.lang.String commandPath)
java.nio.file.Path
resolveLocalPath(java.lang.String basedir, java.lang.String subpath)
protected void
send(java.nio.file.Path local, boolean recursive, boolean preserve, int bufferSize, java.nio.file.LinkOption... options)
void
send(java.util.Collection<java.lang.String> paths, boolean recursive, boolean preserve, int bufferSize)
protected ScpAckInfo
sendAcknowledgedCommand(java.lang.String cmd)
void
sendDir(java.nio.file.Path local, boolean preserve, int bufferSize)
protected void
sendError(java.lang.String message)
void
sendFile(java.nio.file.Path local, boolean preserve, int bufferSize)
void
sendOk()
void
sendPaths(java.util.Collection<? extends java.nio.file.Path> paths, boolean recursive, boolean preserve, int bufferSize)
protected void
sendResponseMessage(int level, java.lang.String message)
void
sendStream(ScpSourceStreamResolver resolver, boolean preserve, int bufferSize)
protected void
sendWarning(java.lang.String message)
java.lang.String
toString()
protected void
validateAckReplyCode(java.lang.String command, java.lang.Object location, ScpAckInfo ackInfo)
protected void
validateCommandStatusCode(java.lang.String command, java.lang.Object location, ScpAckInfo ackInfo, boolean eofAllowed)
protected void
validateFileOperationAckReplyCode(java.lang.String command, Session session, ScpTransferEventListener.FileOperation op, java.nio.file.Path file, long fileSize, java.util.Set<java.nio.file.attribute.PosixFilePermission> perms, ScpAckInfo ackInfo)
protected void
validateOperationReadyCode(java.lang.String command, java.lang.Object location, ScpAckInfo ackInfo)
-
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.sshd.common.session.SessionHolder
getSessionContext
-
-
-
-
Field Detail
-
SCP_COMMAND_PREFIX
public static final java.lang.String SCP_COMMAND_PREFIX
Command prefix used to identify SCP commands- See Also:
- Constant Field Values
-
DEFAULT_COPY_BUFFER_SIZE
public static final int DEFAULT_COPY_BUFFER_SIZE
Default size (in bytes) of send / receive buffer size- See Also:
- Constant Field Values
-
DEFAULT_RECEIVE_BUFFER_SIZE
public static final int DEFAULT_RECEIVE_BUFFER_SIZE
- See Also:
- Constant Field Values
-
DEFAULT_SEND_BUFFER_SIZE
public static final int DEFAULT_SEND_BUFFER_SIZE
- See Also:
- Constant Field Values
-
MIN_COPY_BUFFER_SIZE
public static final int MIN_COPY_BUFFER_SIZE
The minimum size for sending / receiving files- See Also:
- Constant Field Values
-
MIN_RECEIVE_BUFFER_SIZE
public static final int MIN_RECEIVE_BUFFER_SIZE
- See Also:
- Constant Field Values
-
MIN_SEND_BUFFER_SIZE
public static final int MIN_SEND_BUFFER_SIZE
- See Also:
- Constant Field Values
-
in
protected final java.io.InputStream in
-
out
protected final java.io.OutputStream out
-
fileSystem
protected final java.nio.file.FileSystem fileSystem
-
opener
protected final ScpFileOpener opener
-
listener
protected final ScpTransferEventListener listener
-
sessionInstance
private final Session sessionInstance
-
-
Constructor Detail
-
ScpHelper
public ScpHelper(Session session, java.io.InputStream in, java.io.OutputStream out, java.nio.file.FileSystem fileSystem, ScpFileOpener opener, ScpTransferEventListener eventListener)
-
-
Method Detail
-
getSession
public Session getSession()
- Specified by:
getSession
in interfaceSessionHolder<Session>
-
receiveFileStream
public void receiveFileStream(java.io.OutputStream local, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
receive
public void receive(java.nio.file.Path local, boolean recursive, boolean shouldBeDir, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
receive
protected void receive(ScpReceiveLineHandler handler) throws java.io.IOException
Reads command line(s) and invokes the handler until EOF or and "E" command is received- Parameters:
handler
- TheScpReceiveLineHandler
to invoke when a command has been read- Throws:
java.io.IOException
- If failed to read/write
-
receiveNextCmd
protected int receiveNextCmd() throws java.io.IOException
- Throws:
java.io.IOException
-
receiveDir
public void receiveDir(java.lang.String header, java.nio.file.Path local, ScpTimestampCommandDetails time, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
receiveFile
public void receiveFile(java.lang.String header, java.nio.file.Path local, ScpTimestampCommandDetails time, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
receiveStream
public void receiveStream(java.lang.String header, ScpTargetStreamResolver resolver, ScpTimestampCommandDetails time, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
readLine
public java.lang.String readLine() throws java.io.IOException
- Throws:
java.io.IOException
-
readLine
public java.lang.String readLine(boolean canEof) throws java.io.IOException
- Throws:
java.io.IOException
-
send
public void send(java.util.Collection<java.lang.String> paths, boolean recursive, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
sendPaths
public void sendPaths(java.util.Collection<? extends java.nio.file.Path> paths, boolean recursive, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
send
protected void send(java.nio.file.Path local, boolean recursive, boolean preserve, int bufferSize, java.nio.file.LinkOption... options) throws java.io.IOException
- Throws:
java.io.IOException
-
resolveLocalPath
public java.nio.file.Path resolveLocalPath(java.lang.String basedir, java.lang.String subpath) throws java.io.IOException
- Throws:
java.io.IOException
-
resolveLocalPath
public java.nio.file.Path resolveLocalPath(java.lang.String commandPath) throws java.io.IOException, java.nio.file.InvalidPathException
- Parameters:
commandPath
- The command path using the local file separator- Returns:
- The resolved absolute and normalized local
Path
- Throws:
java.io.IOException
- If failed to resolve the pathjava.nio.file.InvalidPathException
- If invalid local path value
-
sendFile
public void sendFile(java.nio.file.Path local, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
sendStream
public void sendStream(ScpSourceStreamResolver resolver, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
validateOperationReadyCode
protected void validateOperationReadyCode(java.lang.String command, java.lang.Object location, ScpAckInfo ackInfo) throws java.io.IOException
- Throws:
java.io.IOException
-
validateFileOperationAckReplyCode
protected void validateFileOperationAckReplyCode(java.lang.String command, Session session, ScpTransferEventListener.FileOperation op, java.nio.file.Path file, long fileSize, java.util.Set<java.nio.file.attribute.PosixFilePermission> perms, ScpAckInfo ackInfo) throws java.io.IOException
- Throws:
java.io.IOException
-
validateAckReplyCode
protected void validateAckReplyCode(java.lang.String command, java.lang.Object location, ScpAckInfo ackInfo) throws java.io.IOException
- Throws:
java.io.IOException
-
validateCommandStatusCode
protected void validateCommandStatusCode(java.lang.String command, java.lang.Object location, ScpAckInfo ackInfo, boolean eofAllowed) throws java.io.IOException
- Throws:
java.io.IOException
-
sendDir
public void sendDir(java.nio.file.Path local, boolean preserve, int bufferSize) throws java.io.IOException
- Throws:
java.io.IOException
-
sendAcknowledgedCommand
protected ScpAckInfo sendAcknowledgedCommand(java.lang.String cmd) throws java.io.IOException
- Throws:
java.io.IOException
-
sendOk
public void sendOk() throws java.io.IOException
- Throws:
java.io.IOException
-
sendWarning
protected void sendWarning(java.lang.String message) throws java.io.IOException
- Throws:
java.io.IOException
-
sendError
protected void sendError(java.lang.String message) throws java.io.IOException
- Throws:
java.io.IOException
-
sendResponseMessage
protected void sendResponseMessage(int level, java.lang.String message) throws java.io.IOException
- Throws:
java.io.IOException
-
readAck
public ScpAckInfo readAck(boolean canEof) throws java.io.IOException
- Throws:
java.io.IOException
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-