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 2015/07/17 18:18:34 UTC
[14/25] mina-sshd git commit: [SSHD-542] Checkstyle validation
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/signature/AbstractSignature.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/signature/AbstractSignature.java b/sshd-core/src/main/java/org/apache/sshd/common/signature/AbstractSignature.java
index 9623ee0..6bf4b49 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/signature/AbstractSignature.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/signature/AbstractSignature.java
@@ -46,7 +46,7 @@ public abstract class AbstractSignature implements Signature {
public final String getAlgorithm() {
return algorithm;
}
-
+
@Override
public void initVerifier(PublicKey key) throws Exception {
@@ -71,24 +71,25 @@ public abstract class AbstractSignature implements Signature {
}
/**
- * Makes an attempt to detect if the signature is encoded or pure data
+ * Makes an attempt to detect if the signature is encoded or pure data
+ *
* @param sig The original signature
* @return A {@link Pair} where first value is the key type and second
* value is the data - {@code null} if not encoded
*/
- protected Pair<String,byte[]> extractEncodedSignature(byte[] sig) {
+ protected Pair<String, byte[]> extractEncodedSignature(byte[] sig) {
final int dataLen = GenericUtils.length(sig);
// if it is encoded then we must have at least 2 UINT32 values
if (dataLen < (2 * (Integer.SIZE / Byte.SIZE))) {
return null;
}
-
+
long keyTypeLen = BufferUtils.getUInt(sig, 0, dataLen);
// after the key type we MUST have data bytes
if (keyTypeLen >= (dataLen - (Integer.SIZE / Byte.SIZE))) {
return null;
}
-
+
int keyTypeStartPos = Integer.SIZE / Byte.SIZE;
int keyTypeEndPos = keyTypeStartPos + (int) keyTypeLen;
int remainLen = dataLen - keyTypeEndPos;
@@ -96,7 +97,7 @@ public abstract class AbstractSignature implements Signature {
if (remainLen < (Integer.SIZE / Byte.SIZE)) {
return null;
}
-
+
long dataBytesLen = BufferUtils.getUInt(sig, keyTypeEndPos, remainLen);
// make sure reported number of bytes does not exceed available
if (dataBytesLen > (remainLen - (Integer.SIZE / Byte.SIZE))) {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/signature/BuiltinSignatures.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/signature/BuiltinSignatures.java b/sshd-core/src/main/java/org/apache/sshd/common/signature/BuiltinSignatures.java
index 6efddd1..0edf496 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/signature/BuiltinSignatures.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/signature/BuiltinSignatures.java
@@ -43,6 +43,7 @@ import org.apache.sshd.common.util.ValidateUtils;
/**
* Provides easy access to the currently implemented signatures
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public enum BuiltinSignatures implements SignatureFactory {
@@ -63,7 +64,7 @@ public enum BuiltinSignatures implements SignatureFactory {
public Signature create() {
return new SignatureECDSA("SHA256withECDSA");
}
-
+
@Override
public boolean isSupported() {
return SecurityUtils.isBouncyCastleRegistered() || SecurityUtils.hasEcc();
@@ -74,7 +75,7 @@ public enum BuiltinSignatures implements SignatureFactory {
public Signature create() {
return new SignatureECDSA("SHA384withECDSA");
}
-
+
@Override
public boolean isSupported() {
return SecurityUtils.isBouncyCastleRegistered() || SecurityUtils.hasEcc();
@@ -85,15 +86,25 @@ public enum BuiltinSignatures implements SignatureFactory {
public Signature create() {
return new SignatureECDSA("SHA512withECDSA");
}
-
+
@Override
public boolean isSupported() {
return SecurityUtils.isBouncyCastleRegistered() || SecurityUtils.hasEcc();
}
};
+ public static final Set<BuiltinSignatures> VALUES =
+ Collections.unmodifiableSet(EnumSet.allOf(BuiltinSignatures.class));
+
+ private static final Map<String, SignatureFactory> EXTENSIONS =
+ new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+
private final String factoryName;
+ BuiltinSignatures(String facName) {
+ factoryName = facName;
+ }
+
public static Signature getByCurveSize(ECParameterSpec params) {
int curveSize = ECCurves.getCurveSize(params);
if (curveSize <= 256) {
@@ -115,35 +126,27 @@ public enum BuiltinSignatures implements SignatureFactory {
return getName();
}
- BuiltinSignatures(String facName) {
- factoryName = facName;
- }
-
@Override
public boolean isSupported() {
return true;
}
- public static final Set<BuiltinSignatures> VALUES =
- Collections.unmodifiableSet(EnumSet.allOf(BuiltinSignatures.class));
- private static final Map<String,SignatureFactory> extensions =
- new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
-
/**
* Registered a {@link NamedFactory} to be available besides the built-in
* ones when parsing configuration
+ *
* @param extension The factory to register
* @throws IllegalArgumentException if factory instance is {@code null},
- * or overrides a built-in one or overrides another registered factory
- * with the same name (case <U>insensitive</U>).
+ * or overrides a built-in one or overrides another registered factory
+ * with the same name (case <U>insensitive</U>).
*/
public static void registerExtension(SignatureFactory extension) {
- String name=ValidateUtils.checkNotNull(extension, "No extension provided").getName();
+ String name = ValidateUtils.checkNotNull(extension, "No extension provided").getName();
ValidateUtils.checkTrue(fromFactoryName(name) == null, "Extension overrides built-in: %s", name);
- synchronized(extensions) {
- ValidateUtils.checkTrue(!extensions.containsKey(name), "Extension overrides existing: %s", name);
- extensions.put(name, extension);
+ synchronized (EXTENSIONS) {
+ ValidateUtils.checkTrue(!EXTENSIONS.containsKey(name), "Extension overrides existing: %s", name);
+ EXTENSIONS.put(name, extension);
}
}
@@ -153,13 +156,14 @@ public enum BuiltinSignatures implements SignatureFactory {
*/
public static SortedSet<SignatureFactory> getRegisteredExtensions() {
// TODO for JDK-8 return Collections.emptySortedSet()
- synchronized(extensions) {
- return GenericUtils.asSortedSet(NamedResource.BY_NAME_COMPARATOR, extensions.values());
+ synchronized (EXTENSIONS) {
+ return GenericUtils.asSortedSet(NamedResource.BY_NAME_COMPARATOR, EXTENSIONS.values());
}
}
/**
* Unregisters specified extension
+ *
* @param name The factory name - ignored if {@code null}/empty
* @return The registered extension - {@code null} if not found
*/
@@ -167,9 +171,9 @@ public enum BuiltinSignatures implements SignatureFactory {
if (GenericUtils.isEmpty(name)) {
return null;
}
-
- synchronized(extensions) {
- return extensions.remove(name);
+
+ synchronized (EXTENSIONS) {
+ return EXTENSIONS.remove(name);
}
}
@@ -214,10 +218,10 @@ public enum BuiltinSignatures implements SignatureFactory {
public static BuiltinSignatures fromFactoryName(String name) {
return NamedResource.Utils.findByName(name, String.CASE_INSENSITIVE_ORDER, VALUES);
}
-
+
/**
* @param sigs A comma-separated list of signatures' names - ignored
- * if {@code null}/empty
+ * if {@code null}/empty
* @return A {@link ParseResult} of all the {@link NamedFactory} whose
* name appears in the string and represent a built-in signature. Any
* unknown name is <U>ignored</I>. The order of the returned result
@@ -229,7 +233,7 @@ public enum BuiltinSignatures implements SignatureFactory {
return parseSignatureList(GenericUtils.split(sigs, ','));
}
- public static ParseResult parseSignatureList(String ... sigs) {
+ public static ParseResult parseSignatureList(String... sigs) {
return parseSignatureList(GenericUtils.isEmpty((Object[]) sigs) ? Collections.<String>emptyList() : Arrays.asList(sigs));
}
@@ -237,11 +241,11 @@ public enum BuiltinSignatures implements SignatureFactory {
if (GenericUtils.isEmpty(sigs)) {
return ParseResult.EMPTY;
}
-
- List<SignatureFactory> factories=new ArrayList<>(sigs.size());
- List<String> unknown=Collections.emptyList();
+
+ List<SignatureFactory> factories = new ArrayList<>(sigs.size());
+ List<String> unknown = Collections.emptyList();
for (String name : sigs) {
- SignatureFactory s=resolveFactory(name);
+ SignatureFactory s = resolveFactory(name);
if (s != null) {
factories.add(s);
} else {
@@ -252,37 +256,38 @@ public enum BuiltinSignatures implements SignatureFactory {
unknown.add(name);
}
}
-
+
return new ParseResult(factories, unknown);
}
/**
* @param name The factory name
* @return The factory or {@code null} if it is neither a built-in one
- * or a registered extension
+ * or a registered extension
*/
public static SignatureFactory resolveFactory(String name) {
if (GenericUtils.isEmpty(name)) {
return null;
}
- SignatureFactory s=fromFactoryName(name);
+ SignatureFactory s = fromFactoryName(name);
if (s != null) {
return s;
}
-
- synchronized(extensions) {
- return extensions.get(name);
+
+ synchronized (EXTENSIONS) {
+ return EXTENSIONS.get(name);
}
}
/**
* Holds the result of the {@link BuiltinSignatures#parseSignatureList(String)}
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
- public static final class ParseResult extends NamedFactoriesListParseResult<Signature,SignatureFactory> {
- public static final ParseResult EMPTY=new ParseResult(Collections.<SignatureFactory>emptyList(), Collections.<String>emptyList());
-
+ public static final class ParseResult extends NamedFactoriesListParseResult<Signature, SignatureFactory> {
+ public static final ParseResult EMPTY = new ParseResult(Collections.<SignatureFactory>emptyList(), Collections.<String>emptyList());
+
public ParseResult(List<SignatureFactory> parsed, List<String> unsupported) {
super(parsed, unsupported);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/signature/Signature.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/signature/Signature.java b/sshd-core/src/main/java/org/apache/sshd/common/signature/Signature.java
index dbac318..e3b9ab4 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/signature/Signature.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/signature/Signature.java
@@ -47,6 +47,7 @@ public interface Signature {
/**
* Update the computed signature with the given data
+ *
* @param hash The hash data buffer
* @throws Exception If failed to update
* @see #update(byte[], int, int)
@@ -55,9 +56,10 @@ public interface Signature {
/**
* Update the computed signature with the given data
+ *
* @param hash The hash data buffer
- * @param off Offset of hash data in buffer
- * @param len Length of hash data
+ * @param off Offset of hash data in buffer
+ * @param len Length of hash data
* @throws Exception If failed to update
*/
void update(byte[] hash, int off, int len) throws Exception;
@@ -73,6 +75,7 @@ public interface Signature {
/**
* Compute the signature
+ *
* @return The signature value
* @throws Exception If failed to calculate the signature
*/
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureDSA.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureDSA.java b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureDSA.java
index 1a32274..cba24ac 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureDSA.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureDSA.java
@@ -33,6 +33,7 @@ import org.apache.sshd.common.util.io.DERWriter;
/**
* DSA <code>Signature</code>
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
* @see <A HREF="https://tools.ietf.org/html/rfc4253#section-6.6">RFC4253 section 6.6</A>
*/
@@ -42,19 +43,19 @@ public class SignatureDSA extends AbstractSignature {
public static final int MAX_SIGNATURE_VALUE_LENGTH = DSA_SIGNATURE_LENGTH / 2;
protected SignatureDSA(String algorithm) {
- super(algorithm);
+ super(algorithm);
}
@Override
public byte[] sign() throws Exception {
byte[] sig = signature.sign();
- try(DERParser parser = new DERParser(sig)) {
+ try (DERParser parser = new DERParser(sig)) {
int type = parser.read();
if (type != 0x30) {
throw new IOException("Invalid signature format - not a DER SEQUENCE: 0x" + Integer.toHexString(type));
}
-
+
// length of remaining encoding of the 2 integers
int remainLen = parser.readLength();
/*
@@ -83,8 +84,8 @@ public class SignatureDSA extends AbstractSignature {
boolean maxExceeded = data.length > MAX_SIGNATURE_VALUE_LENGTH;
int dstOffset = maxExceeded ? 0 : (MAX_SIGNATURE_VALUE_LENGTH - data.length);
System.arraycopy(data, maxExceeded ? 1 : 0,
- result, offset + dstOffset,
- Math.min(MAX_SIGNATURE_VALUE_LENGTH, data.length));
+ result, offset + dstOffset,
+ Math.min(MAX_SIGNATURE_VALUE_LENGTH, data.length));
}
@Override
@@ -94,7 +95,7 @@ public class SignatureDSA extends AbstractSignature {
if (sigLen != DSA_SIGNATURE_LENGTH) {
// probably some encoded data
- Pair<String,byte[]> encoding = extractEncodedSignature(sig);
+ Pair<String, byte[]> encoding = extractEncodedSignature(sig);
if (encoding != null) {
String keyType = encoding.getFirst();
ValidateUtils.checkTrue(KeyPairProvider.SSH_DSS.equals(keyType), "Mismatched key type: %s", keyType);
@@ -105,17 +106,17 @@ public class SignatureDSA extends AbstractSignature {
if (sigLen != DSA_SIGNATURE_LENGTH) {
throw new SignatureException("Bad signature length (" + sigLen + " instead of " + DSA_SIGNATURE_LENGTH + ")"
- + " for " + BufferUtils.printHex(':', data));
+ + " for " + BufferUtils.printHex(':', data));
}
byte[] rEncoding;
- try(DERWriter w = new DERWriter(MAX_SIGNATURE_VALUE_LENGTH + 4)) { // in case length > 0x7F
+ try (DERWriter w = new DERWriter(MAX_SIGNATURE_VALUE_LENGTH + 4)) { // in case length > 0x7F
w.writeBigInteger(data, 0, MAX_SIGNATURE_VALUE_LENGTH);
rEncoding = w.toByteArray();
}
byte[] sEncoding;
- try(DERWriter w = new DERWriter(MAX_SIGNATURE_VALUE_LENGTH + 4)) { // in case length > 0x7F
+ try (DERWriter w = new DERWriter(MAX_SIGNATURE_VALUE_LENGTH + 4)) { // in case length > 0x7F
w.writeBigInteger(data, MAX_SIGNATURE_VALUE_LENGTH, MAX_SIGNATURE_VALUE_LENGTH);
sEncoding = w.toByteArray();
}
@@ -123,7 +124,7 @@ public class SignatureDSA extends AbstractSignature {
int length = rEncoding.length + sEncoding.length;
byte[] encoded;
- try(DERWriter w = new DERWriter(1 + length + 4)) { // in case length > 0x7F
+ try (DERWriter w = new DERWriter(1 + length + 4)) { // in case length > 0x7F
w.write(0x30); // SEQUENCE
w.writeLength(length);
w.write(rEncoding);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureECDSA.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureECDSA.java b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureECDSA.java
index 254069c..997e737 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureECDSA.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureECDSA.java
@@ -30,7 +30,8 @@ import org.apache.sshd.common.util.io.DERParser;
import org.apache.sshd.common.util.io.DERWriter;
/**
- * Signature algorithm for EC keys using ECDSA.
+ * Signature algorithm for EC keys using ECDSA.
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
* @see <A HREF="http://tools.ietf.org/html/rfc3278#section-8.2">RFC3278 section 8.2</A>
*/
@@ -44,12 +45,12 @@ public class SignatureECDSA extends AbstractSignature {
public byte[] sign() throws Exception {
byte[] sig = signature.sign();
- try(DERParser parser = new DERParser(sig)) {
+ try (DERParser parser = new DERParser(sig)) {
int type = parser.read();
if (type != 0x30) {
throw new IOException("Invalid signature format - not a DER SEQUENCE: 0x" + Integer.toHexString(type));
}
-
+
// length of remaining encoding of the 2 integers
int remainLen = parser.readLength();
/*
@@ -69,7 +70,7 @@ public class SignatureECDSA extends AbstractSignature {
Buffer rsBuf = new ByteArrayBuffer();
rsBuf.putMPInt(r);
rsBuf.putMPInt(s);
-
+
return rsBuf.getCompactData();
}
}
@@ -77,7 +78,7 @@ public class SignatureECDSA extends AbstractSignature {
@Override
public boolean verify(byte[] sig) throws Exception {
byte[] data = sig;
- Pair<String,byte[]> encoding = extractEncodedSignature(data);
+ Pair<String, byte[]> encoding = extractEncodedSignature(data);
if (encoding != null) {
String keyType = encoding.getFirst();
ECCurves curve = ECCurves.fromKeyType(keyType);
@@ -87,18 +88,20 @@ public class SignatureECDSA extends AbstractSignature {
Buffer rsBuf = new ByteArrayBuffer(data);
- byte[] rArray = rsBuf.getMPIntAsBytes(), rEncoding;
- try(DERWriter w = new DERWriter(rArray.length + 4)) { // in case length > 0x7F
+ byte[] rArray = rsBuf.getMPIntAsBytes();
+ byte[] rEncoding;
+ try (DERWriter w = new DERWriter(rArray.length + 4)) { // in case length > 0x7F
w.writeBigInteger(rArray);
rEncoding = w.toByteArray();
}
-
- byte[] sArray = rsBuf.getMPIntAsBytes(), sEncoding;
- try(DERWriter w = new DERWriter(sArray.length + 4)) { // in case length > 0x7F
+
+ byte[] sArray = rsBuf.getMPIntAsBytes();
+ byte[] sEncoding;
+ try (DERWriter w = new DERWriter(sArray.length + 4)) { // in case length > 0x7F
w.writeBigInteger(sArray);
sEncoding = w.toByteArray();
}
-
+
int remaining = rsBuf.available();
if (remaining != 0) {
throw new IOException("Signature had padding - remaining=" + remaining);
@@ -106,7 +109,7 @@ public class SignatureECDSA extends AbstractSignature {
int length = rEncoding.length + sEncoding.length;
byte[] encoded;
- try(DERWriter w = new DERWriter(1 + length + 4)) { // in case length > 0x7F
+ try (DERWriter w = new DERWriter(1 + length + 4)) { // in case length > 0x7F
w.write(0x30); // SEQUENCE
w.writeLength(length);
w.write(rEncoding);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactory.java b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactory.java
index e0880d4..dfd5536 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactory.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureFactory.java
@@ -19,19 +19,12 @@
package org.apache.sshd.common.signature;
-import org.apache.sshd.common.NamedFactory;
-import org.apache.sshd.common.OptionalFeature;
-import org.apache.sshd.common.util.Transformer;
+import org.apache.sshd.common.BuiltinFactory;
/**
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
-public interface SignatureFactory extends NamedFactory<Signature>, OptionalFeature {
- // required because of generics issues
- Transformer<SignatureFactory,NamedFactory<Signature>> FAC2NAMED=new Transformer<SignatureFactory,NamedFactory<Signature>>() {
- @Override
- public NamedFactory<Signature> transform(SignatureFactory input) {
- return input;
- }
- };
+// CHECKSTYLE:OFF
+public interface SignatureFactory extends BuiltinFactory<Signature> {
+
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureRSA.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureRSA.java b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureRSA.java
index 6970420..6a5c99a 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureRSA.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/signature/SignatureRSA.java
@@ -40,7 +40,7 @@ public class SignatureRSA extends AbstractSignature {
@Override
public boolean verify(byte[] sig) throws Exception {
byte[] data = sig;
- Pair<String,byte[]> encoding = extractEncodedSignature(data);
+ Pair<String, byte[]> encoding = extractEncodedSignature(data);
if (encoding != null) {
String keyType = encoding.getFirst();
ValidateUtils.checkTrue(KeyPairProvider.SSH_RSA.equals(keyType), "Mismatched key type: %s", keyType);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpConstants.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpConstants.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpConstants.java
index 44abceb..7b4d538 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpConstants.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/SftpConstants.java
@@ -22,221 +22,222 @@ package org.apache.sshd.common.subsystem.sftp;
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public final class SftpConstants {
- public static String SFTP_SUBSYSTEM_NAME = "sftp";
-
- public static final int SSH_FXP_INIT = 1;
- public static final int SSH_FXP_VERSION = 2;
- public static final int SSH_FXP_OPEN = 3;
- public static final int SSH_FXP_CLOSE = 4;
- public static final int SSH_FXP_READ = 5;
- public static final int SSH_FXP_WRITE = 6;
- public static final int SSH_FXP_LSTAT = 7;
- public static final int SSH_FXP_FSTAT = 8;
- public static final int SSH_FXP_SETSTAT = 9;
- public static final int SSH_FXP_FSETSTAT = 10;
- public static final int SSH_FXP_OPENDIR = 11;
- public static final int SSH_FXP_READDIR = 12;
- public static final int SSH_FXP_REMOVE = 13;
- public static final int SSH_FXP_MKDIR = 14;
- public static final int SSH_FXP_RMDIR = 15;
- public static final int SSH_FXP_REALPATH = 16;
- public static final int SSH_FXP_STAT = 17;
- public static final int SSH_FXP_RENAME = 18;
- public static final int SSH_FXP_READLINK = 19;
- public static final int SSH_FXP_SYMLINK = 20; // v3 -> v5
- public static final int SSH_FXP_LINK = 21; // v6
- public static final int SSH_FXP_BLOCK = 22; // v6
- public static final int SSH_FXP_UNBLOCK = 23; // v6
- public static final int SSH_FXP_STATUS = 101;
- public static final int SSH_FXP_HANDLE = 102;
- public static final int SSH_FXP_DATA = 103;
- public static final int SSH_FXP_NAME = 104;
- public static final int SSH_FXP_ATTRS = 105;
- public static final int SSH_FXP_EXTENDED = 200;
+ public static final String SFTP_SUBSYSTEM_NAME = "sftp";
+
+ public static final int SSH_FXP_INIT = 1;
+ public static final int SSH_FXP_VERSION = 2;
+ public static final int SSH_FXP_OPEN = 3;
+ public static final int SSH_FXP_CLOSE = 4;
+ public static final int SSH_FXP_READ = 5;
+ public static final int SSH_FXP_WRITE = 6;
+ public static final int SSH_FXP_LSTAT = 7;
+ public static final int SSH_FXP_FSTAT = 8;
+ public static final int SSH_FXP_SETSTAT = 9;
+ public static final int SSH_FXP_FSETSTAT = 10;
+ public static final int SSH_FXP_OPENDIR = 11;
+ public static final int SSH_FXP_READDIR = 12;
+ public static final int SSH_FXP_REMOVE = 13;
+ public static final int SSH_FXP_MKDIR = 14;
+ public static final int SSH_FXP_RMDIR = 15;
+ public static final int SSH_FXP_REALPATH = 16;
+ public static final int SSH_FXP_STAT = 17;
+ public static final int SSH_FXP_RENAME = 18;
+ public static final int SSH_FXP_READLINK = 19;
+ public static final int SSH_FXP_SYMLINK = 20; // v3 -> v5
+ public static final int SSH_FXP_LINK = 21; // v6
+ public static final int SSH_FXP_BLOCK = 22; // v6
+ public static final int SSH_FXP_UNBLOCK = 23; // v6
+ public static final int SSH_FXP_STATUS = 101;
+ public static final int SSH_FXP_HANDLE = 102;
+ public static final int SSH_FXP_DATA = 103;
+ public static final int SSH_FXP_NAME = 104;
+ public static final int SSH_FXP_ATTRS = 105;
+ public static final int SSH_FXP_EXTENDED = 200;
public static final int SSH_FXP_EXTENDED_REPLY = 201;
- public static final int SSH_FX_OK = 0;
- public static final int SSH_FX_EOF = 1;
- public static final int SSH_FX_NO_SUCH_FILE = 2;
- public static final int SSH_FX_PERMISSION_DENIED = 3;
- public static final int SSH_FX_FAILURE = 4;
- public static final int SSH_FX_BAD_MESSAGE = 5;
- public static final int SSH_FX_NO_CONNECTION = 6;
- public static final int SSH_FX_CONNECTION_LOST = 7;
- public static final int SSH_FX_OP_UNSUPPORTED = 8;
- public static final int SSH_FX_INVALID_HANDLE = 9;
- public static final int SSH_FX_NO_SUCH_PATH = 10;
- public static final int SSH_FX_FILE_ALREADY_EXISTS = 11;
- public static final int SSH_FX_WRITE_PROTECT = 12;
- public static final int SSH_FX_NO_MEDIA = 13;
- public static final int SSH_FX_NO_SPACE_ON_FILESYSTEM = 14;
- public static final int SSH_FX_QUOTA_EXCEEDED = 15;
- public static final int SSH_FX_UNKNOWN_PRINCIPLE = 16;
- public static final int SSH_FX_LOCK_CONFLICT = 17;
- public static final int SSH_FX_DIR_NOT_EMPTY = 18;
- public static final int SSH_FX_NOT_A_DIRECTORY = 19;
- public static final int SSH_FX_INVALID_FILENAME = 20;
- public static final int SSH_FX_LINK_LOOP = 21;
- public static final int SSH_FX_CANNOT_DELETE = 22;
- public static final int SSH_FX_INVALID_PARAMETER = 23;
- public static final int SSH_FX_FILE_IS_A_DIRECTORY = 24;
- public static final int SSH_FX_BYTE_RANGE_LOCK_CONFLICT = 25;
- public static final int SSH_FX_BYTE_RANGE_LOCK_REFUSED = 26;
- public static final int SSH_FX_DELETE_PENDING = 27;
- public static final int SSH_FX_FILE_CORRUPT = 28;
- public static final int SSH_FX_OWNER_INVALID = 29;
- public static final int SSH_FX_GROUP_INVALID = 30;
+ public static final int SSH_FX_OK = 0;
+ public static final int SSH_FX_EOF = 1;
+ public static final int SSH_FX_NO_SUCH_FILE = 2;
+ public static final int SSH_FX_PERMISSION_DENIED = 3;
+ public static final int SSH_FX_FAILURE = 4;
+ public static final int SSH_FX_BAD_MESSAGE = 5;
+ public static final int SSH_FX_NO_CONNECTION = 6;
+ public static final int SSH_FX_CONNECTION_LOST = 7;
+ public static final int SSH_FX_OP_UNSUPPORTED = 8;
+ public static final int SSH_FX_INVALID_HANDLE = 9;
+ public static final int SSH_FX_NO_SUCH_PATH = 10;
+ public static final int SSH_FX_FILE_ALREADY_EXISTS = 11;
+ public static final int SSH_FX_WRITE_PROTECT = 12;
+ public static final int SSH_FX_NO_MEDIA = 13;
+ public static final int SSH_FX_NO_SPACE_ON_FILESYSTEM = 14;
+ public static final int SSH_FX_QUOTA_EXCEEDED = 15;
+ public static final int SSH_FX_UNKNOWN_PRINCIPLE = 16;
+ public static final int SSH_FX_LOCK_CONFLICT = 17;
+ public static final int SSH_FX_DIR_NOT_EMPTY = 18;
+ public static final int SSH_FX_NOT_A_DIRECTORY = 19;
+ public static final int SSH_FX_INVALID_FILENAME = 20;
+ public static final int SSH_FX_LINK_LOOP = 21;
+ public static final int SSH_FX_CANNOT_DELETE = 22;
+ public static final int SSH_FX_INVALID_PARAMETER = 23;
+ public static final int SSH_FX_FILE_IS_A_DIRECTORY = 24;
+ public static final int SSH_FX_BYTE_RANGE_LOCK_CONFLICT = 25;
+ public static final int SSH_FX_BYTE_RANGE_LOCK_REFUSED = 26;
+ public static final int SSH_FX_DELETE_PENDING = 27;
+ public static final int SSH_FX_FILE_CORRUPT = 28;
+ public static final int SSH_FX_OWNER_INVALID = 29;
+ public static final int SSH_FX_GROUP_INVALID = 30;
public static final int SSH_FX_NO_MATCHING_BYTE_RANGE_LOCK = 31;
- public static final int SSH_FILEXFER_ATTR_SIZE = 0x00000001;
- public static final int SSH_FILEXFER_ATTR_UIDGID = 0x00000002;
- public static final int SSH_FILEXFER_ATTR_PERMISSIONS = 0x00000004;
- public static final int SSH_FILEXFER_ATTR_ACMODTIME = 0x00000008; // v3 naming convention
- public static final int SSH_FILEXFER_ATTR_ACCESSTIME = 0x00000008; // v4
- public static final int SSH_FILEXFER_ATTR_CREATETIME = 0x00000010; // v4
- public static final int SSH_FILEXFER_ATTR_MODIFYTIME = 0x00000020; // v4
- public static final int SSH_FILEXFER_ATTR_ACL = 0x00000040; // v4
- public static final int SSH_FILEXFER_ATTR_OWNERGROUP = 0x00000080; // v4
- public static final int SSH_FILEXFER_ATTR_SUBSECOND_TIMES = 0x00000100; // v5
- public static final int SSH_FILEXFER_ATTR_BITS = 0x00000200; // v5
- public static final int SSH_FILEXFER_ATTR_ALLOCATION_SIZE = 0x00000400; // v6
- public static final int SSH_FILEXFER_ATTR_TEXT_HINT = 0x00000800; // v6
- public static final int SSH_FILEXFER_ATTR_MIME_TYPE = 0x00001000; // v6
- public static final int SSH_FILEXFER_ATTR_LINK_COUNT = 0x00002000; // v6
+ public static final int SSH_FILEXFER_ATTR_SIZE = 0x00000001;
+ public static final int SSH_FILEXFER_ATTR_UIDGID = 0x00000002;
+ public static final int SSH_FILEXFER_ATTR_PERMISSIONS = 0x00000004;
+ public static final int SSH_FILEXFER_ATTR_ACMODTIME = 0x00000008; // v3 naming convention
+ public static final int SSH_FILEXFER_ATTR_ACCESSTIME = 0x00000008; // v4
+ public static final int SSH_FILEXFER_ATTR_CREATETIME = 0x00000010; // v4
+ public static final int SSH_FILEXFER_ATTR_MODIFYTIME = 0x00000020; // v4
+ public static final int SSH_FILEXFER_ATTR_ACL = 0x00000040; // v4
+ public static final int SSH_FILEXFER_ATTR_OWNERGROUP = 0x00000080; // v4
+ public static final int SSH_FILEXFER_ATTR_SUBSECOND_TIMES = 0x00000100; // v5
+ public static final int SSH_FILEXFER_ATTR_BITS = 0x00000200; // v5
+ public static final int SSH_FILEXFER_ATTR_ALLOCATION_SIZE = 0x00000400; // v6
+ public static final int SSH_FILEXFER_ATTR_TEXT_HINT = 0x00000800; // v6
+ public static final int SSH_FILEXFER_ATTR_MIME_TYPE = 0x00001000; // v6
+ public static final int SSH_FILEXFER_ATTR_LINK_COUNT = 0x00002000; // v6
public static final int SSH_FILEXFER_ATTR_UNTRANSLATED_NAME = 0x00004000; // v6
- public static final int SSH_FILEXFER_ATTR_CTIME = 0x00008000; // v6
- public static final int SSH_FILEXFER_ATTR_EXTENDED = 0x80000000;
+ public static final int SSH_FILEXFER_ATTR_CTIME = 0x00008000; // v6
+ public static final int SSH_FILEXFER_ATTR_EXTENDED = 0x80000000;
- public static final int SSH_FILEXFER_ATTR_ALL = 0x0000FFFF; // All attributes
+ public static final int SSH_FILEXFER_ATTR_ALL = 0x0000FFFF; // All attributes
- public static final int SSH_FILEXFER_ATTR_FLAGS_READONLY = 0x00000001;
- public static final int SSH_FILEXFER_ATTR_FLAGS_SYSTEM = 0x00000002;
- public static final int SSH_FILEXFER_ATTR_FLAGS_HIDDEN = 0x00000004;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_READONLY = 0x00000001;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_SYSTEM = 0x00000002;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_HIDDEN = 0x00000004;
public static final int SSH_FILEXFER_ATTR_FLAGS_CASE_INSENSITIVE = 0x00000008;
- public static final int SSH_FILEXFER_ATTR_FLAGS_ARCHIVE = 0x00000010;
- public static final int SSH_FILEXFER_ATTR_FLAGS_ENCRYPTED = 0x00000020;
- public static final int SSH_FILEXFER_ATTR_FLAGS_COMPRESSED = 0x00000040;
- public static final int SSH_FILEXFER_ATTR_FLAGS_SPARSE = 0x00000080;
- public static final int SSH_FILEXFER_ATTR_FLAGS_APPEND_ONLY = 0x00000100;
- public static final int SSH_FILEXFER_ATTR_FLAGS_IMMUTABLE = 0x00000200;
- public static final int SSH_FILEXFER_ATTR_FLAGS_SYNC = 0x00000400;
-
- public static final int SSH_FILEXFER_TYPE_REGULAR = 1;
- public static final int SSH_FILEXFER_TYPE_DIRECTORY = 2;
- public static final int SSH_FILEXFER_TYPE_SYMLINK = 3;
- public static final int SSH_FILEXFER_TYPE_SPECIAL = 4;
- public static final int SSH_FILEXFER_TYPE_UNKNOWN = 5;
- public static final int SSH_FILEXFER_TYPE_SOCKET = 6; // v5
- public static final int SSH_FILEXFER_TYPE_CHAR_DEVICE = 7; // v5
+ public static final int SSH_FILEXFER_ATTR_FLAGS_ARCHIVE = 0x00000010;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_ENCRYPTED = 0x00000020;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_COMPRESSED = 0x00000040;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_SPARSE = 0x00000080;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_APPEND_ONLY = 0x00000100;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_IMMUTABLE = 0x00000200;
+ public static final int SSH_FILEXFER_ATTR_FLAGS_SYNC = 0x00000400;
+
+ public static final int SSH_FILEXFER_TYPE_REGULAR = 1;
+ public static final int SSH_FILEXFER_TYPE_DIRECTORY = 2;
+ public static final int SSH_FILEXFER_TYPE_SYMLINK = 3;
+ public static final int SSH_FILEXFER_TYPE_SPECIAL = 4;
+ public static final int SSH_FILEXFER_TYPE_UNKNOWN = 5;
+ public static final int SSH_FILEXFER_TYPE_SOCKET = 6; // v5
+ public static final int SSH_FILEXFER_TYPE_CHAR_DEVICE = 7; // v5
public static final int SSH_FILEXFER_TYPE_BLOCK_DEVICE = 8; // v5
- public static final int SSH_FILEXFER_TYPE_FIFO = 9; // v5
+ public static final int SSH_FILEXFER_TYPE_FIFO = 9; // v5
- public static final int SSH_FXF_READ = 0x00000001;
- public static final int SSH_FXF_WRITE = 0x00000002;
+ public static final int SSH_FXF_READ = 0x00000001;
+ public static final int SSH_FXF_WRITE = 0x00000002;
public static final int SSH_FXF_APPEND = 0x00000004;
- public static final int SSH_FXF_CREAT = 0x00000008;
- public static final int SSH_FXF_TRUNC = 0x00000010;
- public static final int SSH_FXF_EXCL = 0x00000020;
- public static final int SSH_FXF_TEXT = 0x00000040;
+ public static final int SSH_FXF_CREAT = 0x00000008;
+ public static final int SSH_FXF_TRUNC = 0x00000010;
+ public static final int SSH_FXF_EXCL = 0x00000020;
+ public static final int SSH_FXF_TEXT = 0x00000040;
public static final int SSH_FXF_ACCESS_DISPOSITION = 0x00000007;
- public static final int SSH_FXF_CREATE_NEW = 0x00000000;
- public static final int SSH_FXF_CREATE_TRUNCATE = 0x00000001;
- public static final int SSH_FXF_OPEN_EXISTING = 0x00000002;
- public static final int SSH_FXF_OPEN_OR_CREATE = 0x00000003;
- public static final int SSH_FXF_TRUNCATE_EXISTING = 0x00000004;
- public static final int SSH_FXF_APPEND_DATA = 0x00000008;
+ public static final int SSH_FXF_CREATE_NEW = 0x00000000;
+ public static final int SSH_FXF_CREATE_TRUNCATE = 0x00000001;
+ public static final int SSH_FXF_OPEN_EXISTING = 0x00000002;
+ public static final int SSH_FXF_OPEN_OR_CREATE = 0x00000003;
+ public static final int SSH_FXF_TRUNCATE_EXISTING = 0x00000004;
+ public static final int SSH_FXF_APPEND_DATA = 0x00000008;
public static final int SSH_FXF_APPEND_DATA_ATOMIC = 0x00000010;
- public static final int SSH_FXF_TEXT_MODE = 0x00000020;
- public static final int SSH_FXF_READ_LOCK = 0x00000040;
- public static final int SSH_FXF_WRITE_LOCK = 0x00000080;
- public static final int SSH_FXF_DELETE_LOCK = 0x00000100;
+ public static final int SSH_FXF_TEXT_MODE = 0x00000020;
+ public static final int SSH_FXF_READ_LOCK = 0x00000040;
+ public static final int SSH_FXF_WRITE_LOCK = 0x00000080;
+ public static final int SSH_FXF_DELETE_LOCK = 0x00000100;
public static final int SSH_FXP_RENAME_OVERWRITE = 0x00000001;
- public static final int SSH_FXP_RENAME_ATOMIC = 0x00000002;
- public static final int SSH_FXP_RENAME_NATIVE = 0x00000004;
+ public static final int SSH_FXP_RENAME_ATOMIC = 0x00000002;
+ public static final int SSH_FXP_RENAME_NATIVE = 0x00000004;
- public static final int SSH_FXP_REALPATH_NO_CHECK = 0x00000001;
- public static final int SSH_FXP_REALPATH_STAT_IF = 0x00000002;
+ public static final int SSH_FXP_REALPATH_NO_CHECK = 0x00000001;
+ public static final int SSH_FXP_REALPATH_STAT_IF = 0x00000002;
public static final int SSH_FXP_REALPATH_STAT_ALWAYS = 0x00000003;
- public static final int SSH_FXF_RENAME_OVERWRITE = 0x00000001;
- public static final int SSH_FXF_RENAME_ATOMIC = 0x00000002;
- public static final int SSH_FXF_RENAME_NATIVE = 0x00000004;
-
- public static final int ACE4_ACCESS_ALLOWED_ACE_TYPE = 0x00000000;
- public static final int ACE4_ACCESS_DENIED_ACE_TYPE = 0x00000001;
- public static final int ACE4_SYSTEM_AUDIT_ACE_TYPE = 0x00000002;
- public static final int ACE4_SYSTEM_ALARM_ACE_TYPE = 0x00000003;
-
- public static final int ACE4_FILE_INHERIT_ACE = 0x00000001;
- public static final int ACE4_DIRECTORY_INHERIT_ACE = 0x00000002;
- public static final int ACE4_NO_PROPAGATE_INHERIT_ACE = 0x00000004;
- public static final int ACE4_INHERIT_ONLY_ACE = 0x00000008;
- public static final int ACE4_SUCCESSFUL_ACCESS_ACE_FLAG = 0x00000010;
- public static final int ACE4_FAILED_ACCESS_ACE_FLAG = 0x00000020;
- public static final int ACE4_IDENTIFIER_GROUP = 0x00000040;
-
- public static final int ACE4_READ_DATA = 0x00000001;
- public static final int ACE4_LIST_DIRECTORY = 0x00000001;
- public static final int ACE4_WRITE_DATA = 0x00000002;
- public static final int ACE4_ADD_FILE = 0x00000002;
- public static final int ACE4_APPEND_DATA = 0x00000004;
- public static final int ACE4_ADD_SUBDIRECTORY = 0x00000004;
- public static final int ACE4_READ_NAMED_ATTRS = 0x00000008;
- public static final int ACE4_WRITE_NAMED_ATTRS = 0x00000010;
- public static final int ACE4_EXECUTE = 0x00000020;
- public static final int ACE4_DELETE_CHILD = 0x00000040;
- public static final int ACE4_READ_ATTRIBUTES = 0x00000080;
- public static final int ACE4_WRITE_ATTRIBUTES = 0x00000100;
- public static final int ACE4_DELETE = 0x00010000;
- public static final int ACE4_READ_ACL = 0x00020000;
- public static final int ACE4_WRITE_ACL = 0x00040000;
- public static final int ACE4_WRITE_OWNER = 0x00080000;
- public static final int ACE4_SYNCHRONIZE = 0x00100000;
-
- public static final int S_IFMT = 0170000; // bitmask for the file type bitfields
+ public static final int SSH_FXF_RENAME_OVERWRITE = 0x00000001;
+ public static final int SSH_FXF_RENAME_ATOMIC = 0x00000002;
+ public static final int SSH_FXF_RENAME_NATIVE = 0x00000004;
+
+ public static final int ACE4_ACCESS_ALLOWED_ACE_TYPE = 0x00000000;
+ public static final int ACE4_ACCESS_DENIED_ACE_TYPE = 0x00000001;
+ public static final int ACE4_SYSTEM_AUDIT_ACE_TYPE = 0x00000002;
+ public static final int ACE4_SYSTEM_ALARM_ACE_TYPE = 0x00000003;
+
+ public static final int ACE4_FILE_INHERIT_ACE = 0x00000001;
+ public static final int ACE4_DIRECTORY_INHERIT_ACE = 0x00000002;
+ public static final int ACE4_NO_PROPAGATE_INHERIT_ACE = 0x00000004;
+ public static final int ACE4_INHERIT_ONLY_ACE = 0x00000008;
+ public static final int ACE4_SUCCESSFUL_ACCESS_ACE_FLAG = 0x00000010;
+ public static final int ACE4_FAILED_ACCESS_ACE_FLAG = 0x00000020;
+ public static final int ACE4_IDENTIFIER_GROUP = 0x00000040;
+
+ public static final int ACE4_READ_DATA = 0x00000001;
+ public static final int ACE4_LIST_DIRECTORY = 0x00000001;
+ public static final int ACE4_WRITE_DATA = 0x00000002;
+ public static final int ACE4_ADD_FILE = 0x00000002;
+ public static final int ACE4_APPEND_DATA = 0x00000004;
+ public static final int ACE4_ADD_SUBDIRECTORY = 0x00000004;
+ public static final int ACE4_READ_NAMED_ATTRS = 0x00000008;
+ public static final int ACE4_WRITE_NAMED_ATTRS = 0x00000010;
+ public static final int ACE4_EXECUTE = 0x00000020;
+ public static final int ACE4_DELETE_CHILD = 0x00000040;
+ public static final int ACE4_READ_ATTRIBUTES = 0x00000080;
+ public static final int ACE4_WRITE_ATTRIBUTES = 0x00000100;
+ public static final int ACE4_DELETE = 0x00010000;
+ public static final int ACE4_READ_ACL = 0x00020000;
+ public static final int ACE4_WRITE_ACL = 0x00040000;
+ public static final int ACE4_WRITE_OWNER = 0x00080000;
+ public static final int ACE4_SYNCHRONIZE = 0x00100000;
+
+ public static final int S_IFMT = 0170000; // bitmask for the file type bitfields
public static final int S_IFSOCK = 0140000; // socket
- public static final int S_IFLNK = 0120000; // symbolic link
- public static final int S_IFREG = 0100000; // regular file
- public static final int S_IFBLK = 0060000; // block device
- public static final int S_IFDIR = 0040000; // directory
- public static final int S_IFCHR = 0020000; // character device
- public static final int S_IFIFO = 0010000; // fifo
- public static final int S_ISUID = 0004000; // set UID bit
- public static final int S_ISGID = 0002000; // set GID bit
- public static final int S_ISVTX = 0001000; // sticky bit
- public static final int S_IRUSR = 0000400;
- public static final int S_IWUSR = 0000200;
- public static final int S_IXUSR = 0000100;
- public static final int S_IRGRP = 0000040;
- public static final int S_IWGRP = 0000020;
- public static final int S_IXGRP = 0000010;
- public static final int S_IROTH = 0000004;
- public static final int S_IWOTH = 0000002;
- public static final int S_IXOTH = 0000001;
-
- public static int SFTP_V3 = 3;
- public static int SFTP_V4 = 4;
- public static int SFTP_V5 = 5;
- public static int SFTP_V6 = 6;
-
+ public static final int S_IFLNK = 0120000; // symbolic link
+ public static final int S_IFREG = 0100000; // regular file
+ public static final int S_IFBLK = 0060000; // block device
+ public static final int S_IFDIR = 0040000; // directory
+ public static final int S_IFCHR = 0020000; // character device
+ public static final int S_IFIFO = 0010000; // fifo
+ public static final int S_ISUID = 0004000; // set UID bit
+ public static final int S_ISGID = 0002000; // set GID bit
+ public static final int S_ISVTX = 0001000; // sticky bit
+ public static final int S_IRUSR = 0000400;
+ public static final int S_IWUSR = 0000200;
+ public static final int S_IXUSR = 0000100;
+ public static final int S_IRGRP = 0000040;
+ public static final int S_IWGRP = 0000020;
+ public static final int S_IXGRP = 0000010;
+ public static final int S_IROTH = 0000004;
+ public static final int S_IWOTH = 0000002;
+ public static final int S_IXOTH = 0000001;
+
+ public static final int SFTP_V3 = 3;
+ public static final int SFTP_V4 = 4;
+ public static final int SFTP_V5 = 5;
+ public static final int SFTP_V6 = 6;
+
// (Some) names of known extensions
public static final String EXT_VERSIONS = "versions";
public static final String EXT_NEWLINE = "newline";
- public static final String EXT_VENDORID = "vendor-id";
+ public static final String EXT_VENDOR_ID = "vendor-id";
public static final String EXT_SUPPORTED = "supported";
public static final String EXT_SUPPORTED2 = "supported2";
- public static final String EXT_VERSELECT = "version-select";
- public static final String EXT_COPYFILE = "copy-file";
- public static final String EXT_MD5HASH = "md5-hash";
- public static final String EXT_MD5HASH_HANDLE = "md5-hash-handle";
- public static final int MD5_QUICK_HASH_SIZE = 2048;
- public static final String EXT_CHKFILE_HANDLE = "check-file-handle";
- public static final String EXT_CHKFILE_NAME = "check-file-name";
- public static final int MIN_CHKFILE_BLOCKSIZE = 256;
- public static final String EXT_CHKFILE_RESPONSE = "check-file";
- public static final String EXT_COPYDATA = "copy-data";
+ public static final String EXT_TEXT_SEEK = "text-seek";
+ public static final String EXT_VERSION_SELECT = "version-select";
+ public static final String EXT_COPY_FILE = "copy-file";
+ public static final String EXT_MD5_HASH = "md5-hash";
+ public static final String EXT_MD5_HASH_HANDLE = "md5-hash-handle";
+ public static final int MD5_QUICK_HASH_SIZE = 2048;
+ public static final String EXT_CHECK_FILE_HANDLE = "check-file-handle";
+ public static final String EXT_CHECK_FILE_NAME = "check-file-name";
+ public static final int MIN_CHKFILE_BLOCKSIZE = 256;
+ public static final String EXT_CHECK_FILE = "check-file";
+ public static final String EXT_COPY_DATA = "copy-data";
public static final String EXT_SPACE_AVAILABLE = "space-available";
private SftpConstants() {
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/AbstractParser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/AbstractParser.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/AbstractParser.java
index da94d10..39d2240 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/AbstractParser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/AbstractParser.java
@@ -41,9 +41,9 @@ public abstract class AbstractParser<T> implements ExtensionParser<T> {
public T transform(byte[] input) {
return parse(input);
}
-
+
@Override // TODO in JDK-8 make this a default method
public T parse(byte[] input) {
return parse(input, 0, GenericUtils.length(input));
- }
+ }
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ExtensionParser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ExtensionParser.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ExtensionParser.java
index d158554..fd2b130 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ExtensionParser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ExtensionParser.java
@@ -27,5 +27,6 @@ import org.apache.sshd.common.util.Transformer;
*/
public interface ExtensionParser<T> extends NamedResource, Transformer<byte[], T> {
T parse(byte[] input);
+
T parse(byte[] input, int offset, int len);
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/NewlineParser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/NewlineParser.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/NewlineParser.java
index d29e0ac..99658da 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/NewlineParser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/NewlineParser.java
@@ -33,11 +33,14 @@ public class NewlineParser extends AbstractParser<Newline> {
/**
* The "newline" extension information as per
* <A HREF="http://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/draft-ietf-secsh-filexfer-09.txt">DRAFT 09 Section 4.3</A>
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public static class Newline {
+ // CHECKSTYLE:OFF
public String newline;
-
+ // CHECKSTYLE:ON
+
@Override
public String toString() {
if (GenericUtils.isEmpty(newline)) {
@@ -47,13 +50,13 @@ public class NewlineParser extends AbstractParser<Newline> {
}
}
}
-
+
public static final NewlineParser INSTANCE = new NewlineParser();
public NewlineParser() {
super(SftpConstants.EXT_NEWLINE);
}
-
+
@Override
public Newline parse(byte[] input, int offset, int len) {
return parse(new String(input, offset, len, StandardCharsets.UTF_8));
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ParserUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ParserUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ParserUtils.java
index e390f80..693d033 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ParserUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/ParserUtils.java
@@ -60,15 +60,18 @@ public final class ParserUtils {
FsyncExtensionParser.INSTANCE
));
- private static final Map<String,ExtensionParser<?>> parsersMap = new TreeMap<String,ExtensionParser<?>>(String.CASE_INSENSITIVE_ORDER) {
- private static final long serialVersionUID = 1L; // we're not serializing it
-
- {
- for (ExtensionParser<?> p : BUILT_IN_PARSERS) {
- put(p.getName(), p);
- }
- }
- };
+ private static final Map<String, ExtensionParser<?>> PARSERS_MAP;
+
+ static {
+ PARSERS_MAP = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+ for (ExtensionParser<?> p : BUILT_IN_PARSERS) {
+ PARSERS_MAP.put(p.getName(), p);
+ }
+ }
+
+ private ParserUtils() {
+ throw new UnsupportedOperationException("No instance");
+ }
/**
* @param parser The {@link ExtensionParser} to register
@@ -77,9 +80,9 @@ public final class ParserUtils {
*/
public static ExtensionParser<?> registerParser(ExtensionParser<?> parser) {
ValidateUtils.checkNotNull(parser, "No parser instance");
-
- synchronized(parsersMap) {
- return parsersMap.put(parser.getName(), parser);
+
+ synchronized (PARSERS_MAP) {
+ return PARSERS_MAP.put(parser.getName(), parser);
}
}
@@ -93,8 +96,8 @@ public final class ParserUtils {
return null;
}
- synchronized(parsersMap) {
- return parsersMap.remove(name);
+ synchronized (PARSERS_MAP) {
+ return PARSERS_MAP.remove(name);
}
}
@@ -108,36 +111,36 @@ public final class ParserUtils {
return null;
}
- synchronized(parsersMap) {
- return parsersMap.get(name);
+ synchronized (PARSERS_MAP) {
+ return PARSERS_MAP.get(name);
}
}
public static Set<String> getRegisteredParsersNames() {
- synchronized(parsersMap) {
- if (parsersMap.isEmpty()) {
+ synchronized (PARSERS_MAP) {
+ if (PARSERS_MAP.isEmpty()) {
return Collections.emptySet();
} else { // return a copy in order to avoid concurrent modification issues
- return GenericUtils.asSortedSet(String.CASE_INSENSITIVE_ORDER, parsersMap.keySet());
+ return GenericUtils.asSortedSet(String.CASE_INSENSITIVE_ORDER, PARSERS_MAP.keySet());
}
}
}
public static List<ExtensionParser<?>> getRegisteredParsers() {
- synchronized(parsersMap) {
- if (parsersMap.isEmpty()) {
+ synchronized (PARSERS_MAP) {
+ if (PARSERS_MAP.isEmpty()) {
return Collections.emptyList();
} else { // return a copy in order to avoid concurrent modification issues
- return new ArrayList<ExtensionParser<?>>(parsersMap.values());
+ return new ArrayList<ExtensionParser<?>>(PARSERS_MAP.values());
}
}
}
- public static Set<String> supportedExtensions(Map<String,?> parsed) {
+ public static Set<String> supportedExtensions(Map<String, ?> parsed) {
if (GenericUtils.isEmpty(parsed)) {
return Collections.emptySet();
}
-
+
Supported sup = (Supported) parsed.get(SupportedParser.INSTANCE.getName());
Collection<String> extra = (sup == null) ? null : sup.extensionNames;
Supported2 sup2 = (Supported2) parsed.get(Supported2Parser.INSTANCE.getName());
@@ -147,7 +150,7 @@ public final class ParserUtils {
} else if (GenericUtils.isEmpty(extra2)) {
return GenericUtils.asSortedSet(String.CASE_INSENSITIVE_ORDER, extra);
}
-
+
Set<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
result.addAll(extra);
result.addAll(extra2);
@@ -163,13 +166,13 @@ public final class ParserUtils {
* @see #getRegisteredParser(String)
* @see ExtensionParser#transform(Object)
*/
- public static Map<String,Object> parse(Map<String,byte[]> extensions) {
+ public static Map<String, Object> parse(Map<String, byte[]> extensions) {
if (GenericUtils.isEmpty(extensions)) {
return Collections.emptyMap();
}
-
- Map<String,Object> data = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
- for (Map.Entry<String,byte[]> ee : extensions.entrySet()) {
+
+ Map<String, Object> data = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+ for (Map.Entry<String, byte[]> ee : extensions.entrySet()) {
String name = ee.getKey();
Object result = parse(name, ee.getValue());
if (result == null) {
@@ -177,11 +180,11 @@ public final class ParserUtils {
}
data.put(name, result);
}
-
+
return data;
}
- public static Object parse(String name, byte ... encoded) {
+ public static Object parse(String name, byte... encoded) {
ExtensionParser<?> parser = getRegisteredParser(name);
if (parser == null) {
return null;
@@ -189,8 +192,5 @@ public final class ParserUtils {
return parser.transform(encoded);
}
}
-
- private ParserUtils() {
- throw new UnsupportedOperationException("No instance");
- }
+
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SpaceAvailableExtensionInfo.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SpaceAvailableExtensionInfo.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SpaceAvailableExtensionInfo.java
index 003116c..a0b4791 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SpaceAvailableExtensionInfo.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SpaceAvailableExtensionInfo.java
@@ -30,11 +30,13 @@ import org.apache.sshd.common.util.buffer.Buffer;
* @see <A HREF="http://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/draft-ietf-secsh-filexfer-09.txt">DRAFT 09 section 9.2</A>
*/
public class SpaceAvailableExtensionInfo implements Cloneable {
+ // CHECKSTYLE:OFF
public long bytesOnDevice;
public long unusedBytesOnDevice;
public long bytesAvailableToUser;
public long unusedBytesAvailableToUser;
public int bytesPerAllocationUnit;
+ // CHECKSTYLE:ON
public SpaceAvailableExtensionInfo() {
super();
@@ -46,21 +48,22 @@ public class SpaceAvailableExtensionInfo implements Cloneable {
public SpaceAvailableExtensionInfo(FileStore store) throws IOException {
bytesOnDevice = store.getTotalSpace();
-
- long unallocated = store.getUnallocatedSpace(), usable = store.getUsableSpace();
+
+ long unallocated = store.getUnallocatedSpace();
+ long usable = store.getUsableSpace();
unusedBytesOnDevice = Math.max(unallocated, usable);
-
+
// the rest are intentionally left zero indicating "UNKNOWN"
}
@Override
public int hashCode() {
- return GenericUtils.hashCode(bytesOnDevice)
- + GenericUtils.hashCode(unusedBytesOnDevice)
- + GenericUtils.hashCode(bytesAvailableToUser)
- + GenericUtils.hashCode(unusedBytesAvailableToUser)
- + bytesPerAllocationUnit
- ;
+ int result = GenericUtils.hashCode(bytesOnDevice);
+ result = 31 * result + GenericUtils.hashCode(unusedBytesOnDevice);
+ result = 31 * result + GenericUtils.hashCode(bytesAvailableToUser);
+ result = 31 * result + GenericUtils.hashCode(unusedBytesAvailableToUser);
+ result = 31 * result + bytesPerAllocationUnit;
+ return result;
}
@Override
@@ -76,22 +79,18 @@ public class SpaceAvailableExtensionInfo implements Cloneable {
}
SpaceAvailableExtensionInfo other = (SpaceAvailableExtensionInfo) obj;
- if ((this.bytesOnDevice == other.bytesOnDevice)
- && (this.unusedBytesOnDevice == other.unusedBytesOnDevice)
- && (this.bytesAvailableToUser == other.bytesAvailableToUser)
- && (this.unusedBytesAvailableToUser == other.unusedBytesAvailableToUser)
- && (this.bytesPerAllocationUnit == other.bytesPerAllocationUnit)) {
- return true;
- } else {
- return false; // debug breakpoint
- }
+ return this.bytesOnDevice == other.bytesOnDevice
+ && this.unusedBytesOnDevice == other.unusedBytesOnDevice
+ && this.bytesAvailableToUser == other.bytesAvailableToUser
+ && this.unusedBytesAvailableToUser == other.unusedBytesAvailableToUser
+ && this.bytesPerAllocationUnit == other.bytesPerAllocationUnit;
}
@Override
public SpaceAvailableExtensionInfo clone() {
try {
return getClass().cast(super.clone());
- } catch(CloneNotSupportedException e) {
+ } catch (CloneNotSupportedException e) {
throw new RuntimeException("Failed to close " + toString() + ": " + e.getMessage());
}
}
@@ -99,13 +98,12 @@ public class SpaceAvailableExtensionInfo implements Cloneable {
@Override
public String toString() {
return "bytesOnDevice=" + bytesOnDevice
- + ",unusedBytesOnDevice=" + unusedBytesOnDevice
- + ",bytesAvailableToUser=" + bytesAvailableToUser
- + ",unusedBytesAvailableToUser=" + unusedBytesAvailableToUser
- + ",bytesPerAllocationUnit=" + bytesPerAllocationUnit
- ;
+ + ",unusedBytesOnDevice=" + unusedBytesOnDevice
+ + ",bytesAvailableToUser=" + bytesAvailableToUser
+ + ",unusedBytesAvailableToUser=" + unusedBytesAvailableToUser
+ + ",bytesPerAllocationUnit=" + bytesPerAllocationUnit;
}
-
+
public static SpaceAvailableExtensionInfo decode(Buffer buffer) {
SpaceAvailableExtensionInfo info = new SpaceAvailableExtensionInfo();
decode(buffer, info);
@@ -119,7 +117,7 @@ public class SpaceAvailableExtensionInfo implements Cloneable {
info.unusedBytesAvailableToUser = buffer.getLong();
info.bytesPerAllocationUnit = buffer.getInt();
}
-
+
public static void encode(Buffer buffer, SpaceAvailableExtensionInfo info) {
buffer.putLong(info.bytesOnDevice);
buffer.putLong(info.unusedBytesOnDevice);
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/Supported2Parser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/Supported2Parser.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/Supported2Parser.java
index f8e3fba..7014cf3 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/Supported2Parser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/Supported2Parser.java
@@ -27,8 +27,9 @@ import org.apache.sshd.common.util.buffer.Buffer;
import org.apache.sshd.common.util.buffer.ByteArrayBuffer;
/**
- * Parses the "supported2" extension as defined in
+ * Parses the "supported2" extension as defined in
* <A HREF="https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#page-10">DRAFT 13 section 5.4</A>
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class Supported2Parser extends AbstractParser<Supported2> {
@@ -37,6 +38,7 @@ public class Supported2Parser extends AbstractParser<Supported2> {
* @see <A HREF="https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#page-10">DRAFT 13 section 5.4</A>
*/
public static class Supported2 {
+ // CHECKSTYLE:OFF
public int supportedAttributeMask;
public int supportedAttributeBits;
public int supportedOpenFlags;
@@ -44,26 +46,26 @@ public class Supported2Parser extends AbstractParser<Supported2> {
public int maxReadSize;
public short supportedOpenBlockVector;
public short supportedBlock;
-// uint32 attrib-extension-count
+ // uint32 attrib-extension-count
public Collection<String> attribExtensionNames;
-// uint32 extension-count
+ // uint32 extension-count
public Collection<String> extensionNames;
-
+ // CHECKSTYLE:ON
+
@Override
public String toString() {
return "attrsMask=0x" + Integer.toHexString(supportedAttributeMask)
- + ",attrsBits=0x" + Integer.toHexString(supportedAttributeBits)
- + ",openFlags=0x" + Integer.toHexString(supportedOpenFlags)
- + ",accessMask=0x" + Integer.toHexString(supportedAccessMask)
- + ",maxRead=" + maxReadSize
- + ",openBlock=0x" + Integer.toHexString(supportedOpenBlockVector & 0xFFFF)
- + ",block=" + Integer.toHexString(supportedBlock & 0xFFFF)
- + ",attribs=" + attribExtensionNames
- + ",exts=" + extensionNames
- ;
+ + ",attrsBits=0x" + Integer.toHexString(supportedAttributeBits)
+ + ",openFlags=0x" + Integer.toHexString(supportedOpenFlags)
+ + ",accessMask=0x" + Integer.toHexString(supportedAccessMask)
+ + ",maxRead=" + maxReadSize
+ + ",openBlock=0x" + Integer.toHexString(supportedOpenBlockVector & 0xFFFF)
+ + ",block=" + Integer.toHexString(supportedBlock & 0xFFFF)
+ + ",attribs=" + attribExtensionNames
+ + ",exts=" + extensionNames;
}
}
-
+
public static final Supported2Parser INSTANCE = new Supported2Parser();
public Supported2Parser() {
@@ -74,7 +76,7 @@ public class Supported2Parser extends AbstractParser<Supported2> {
public Supported2 parse(byte[] input, int offset, int len) {
return parse(new ByteArrayBuffer(input, offset, len));
}
-
+
public Supported2 parse(Buffer buffer) {
Supported2 sup2 = new Supported2();
sup2.supportedAttributeMask = buffer.getInt();
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SupportedParser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SupportedParser.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SupportedParser.java
index fc13c49..f9bb5e9 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SupportedParser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/SupportedParser.java
@@ -29,6 +29,7 @@ import org.apache.sshd.common.util.buffer.ByteArrayBuffer;
/**
* Parses the "supported" extension as defined in
* <A HREF="http://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/draft-ietf-secsh-filexfer-05.txt">DRAFT 05 - section 4.4</A>
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public class SupportedParser extends AbstractParser<Supported> {
@@ -37,22 +38,23 @@ public class SupportedParser extends AbstractParser<Supported> {
* @see <A HREF="http://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/draft-ietf-secsh-filexfer-05.txt">DRAFT 05 - section 4.4</A>
*/
public static class Supported {
+ // CHECKSTYLE:OFF
public int supportedAttributeMask;
public int supportedAttributeBits;
public int supportedOpenFlags;
public int supportedAccessMask;
public int maxReadSize;
public Collection<String> extensionNames;
-
+ // CHECKSTYLE:ON
+
@Override
public String toString() {
return "attrsMask=0x" + Integer.toHexString(supportedAttributeMask)
- + ",attrsBits=0x" + Integer.toHexString(supportedAttributeBits)
- + ",openFlags=0x" + Integer.toHexString(supportedOpenFlags)
- + ",accessMask=0x" + Integer.toHexString(supportedAccessMask)
- + ",maxReadSize=" + maxReadSize
- + ",extensions=" + extensionNames
- ;
+ + ",attrsBits=0x" + Integer.toHexString(supportedAttributeBits)
+ + ",openFlags=0x" + Integer.toHexString(supportedOpenFlags)
+ + ",accessMask=0x" + Integer.toHexString(supportedAccessMask)
+ + ",maxReadSize=" + maxReadSize
+ + ",extensions=" + extensionNames;
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VendorIdParser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VendorIdParser.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VendorIdParser.java
index d68d862..cf48e03 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VendorIdParser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VendorIdParser.java
@@ -30,14 +30,17 @@ import org.apache.sshd.common.util.buffer.ByteArrayBuffer;
public class VendorIdParser extends AbstractParser<VendorId> {
/**
* The "vendor-id" information as per
- * <A HREF="http://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/draft-ietf-secsh-filexfer-09.txt">DRAFT 09 - section 4.4</A>
+ * <A HREF="http://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/draft-ietf-secsh-filexfer-09.txt">DRAFT 09 - section 4.4</A>
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public static class VendorId {
+ // CHECKSTYLE:OFF
public String vendorName;
public String productName;
public String productVersion;
public long productBuildNumber;
+ // CHECKSTYLE:ON
@Override
public String toString() {
@@ -48,7 +51,7 @@ public class VendorIdParser extends AbstractParser<VendorId> {
public static final VendorIdParser INSTANCE = new VendorIdParser();
public VendorIdParser() {
- super(SftpConstants.EXT_VENDORID);
+ super(SftpConstants.EXT_VENDOR_ID);
}
@Override
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VersionsParser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VersionsParser.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VersionsParser.java
index bb720ef..7dc0107 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VersionsParser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/VersionsParser.java
@@ -35,25 +35,28 @@ public class VersionsParser extends AbstractParser<Versions> {
/**
* The "versions" extension data as per
* <A HREF="http://tools.ietf.org/wg/secsh/draft-ietf-secsh-filexfer/draft-ietf-secsh-filexfer-09.txt">DRAFT 09 Section 4.6</A>
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public static class Versions {
public static final char SEP = ',';
+ // CHECKSTYLE:OFF
public Collection<String> versions;
+ // CHECKSTYLE:ON
@Override
public String toString() {
return GenericUtils.join(versions, ',');
}
}
-
+
public static final VersionsParser INSTANCE = new VersionsParser();
public VersionsParser() {
super(SftpConstants.EXT_VERSIONS);
}
-
+
@Override
public Versions parse(byte[] input, int offset, int len) {
return parse(new String(input, offset, len, StandardCharsets.UTF_8));
@@ -63,8 +66,8 @@ public class VersionsParser extends AbstractParser<Versions> {
String[] comps = GenericUtils.split(value, Versions.SEP);
Versions v = new Versions();
v.versions = GenericUtils.isEmpty(comps)
- ? Collections.<String>emptyList()
- : Arrays.asList(comps);
+ ? Collections.<String>emptyList()
+ : Arrays.asList(comps);
return v;
}
}
http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/17f2d627/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/openssh/AbstractOpenSSHExtensionParser.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/openssh/AbstractOpenSSHExtensionParser.java b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/openssh/AbstractOpenSSHExtensionParser.java
index d408e3b..182c5d4 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/openssh/AbstractOpenSSHExtensionParser.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/subsystem/sftp/extensions/openssh/AbstractOpenSSHExtensionParser.java
@@ -25,11 +25,11 @@ import java.util.Objects;
import org.apache.sshd.common.NamedResource;
import org.apache.sshd.common.subsystem.sftp.extensions.AbstractParser;
import org.apache.sshd.common.subsystem.sftp.extensions.openssh.AbstractOpenSSHExtensionParser.OpenSSHExtension;
-import org.apache.sshd.common.util.GenericUtils;
import org.apache.sshd.common.util.ValidateUtils;
/**
* Base class for various {@code XXX@openssh.com} extension data reports
+ *
* @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
*/
public abstract class AbstractOpenSSHExtensionParser extends AbstractParser<OpenSSHExtension> {
@@ -75,21 +75,17 @@ public abstract class AbstractOpenSSHExtensionParser extends AbstractParser<Open
if (getClass() != obj.getClass()) {
return false;
}
-
+
OpenSSHExtension other = (OpenSSHExtension) obj;
- if (Objects.equals(getName(), other.getName())
- && Objects.equals(getVersion(), other.getVersion())) {
- return true;
- } else {
- return false;
- }
+ return Objects.equals(getName(), other.getName())
+ && Objects.equals(getVersion(), other.getVersion());
}
@Override
public OpenSSHExtension clone() {
try {
return getClass().cast(super.clone());
- } catch(CloneNotSupportedException e) {
+ } catch (CloneNotSupportedException e) {
throw new RuntimeException("Unexpected clone exception " + toString() + ": " + e.getMessage());
}
}
@@ -99,7 +95,7 @@ public abstract class AbstractOpenSSHExtensionParser extends AbstractParser<Open
return getName() + " " + getVersion();
}
}
-
+
protected AbstractOpenSSHExtensionParser(String name) {
super(name);
}
@@ -108,7 +104,7 @@ public abstract class AbstractOpenSSHExtensionParser extends AbstractParser<Open
public OpenSSHExtension parse(byte[] input, int offset, int len) {
return parse(new String(input, offset, len, StandardCharsets.UTF_8));
}
-
+
public OpenSSHExtension parse(String version) {
return new OpenSSHExtension(getName(), version);
}