This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-wagon.git
The following commit(s) were added to refs/heads/master by this push:
new 2aa1bf5b Update code to work with SSHD 2.13.2 API
2aa1bf5b is described below
commit 2aa1bf5b0ab97b804ba03810950ceeded99d9ec5
Author: Sylwester Lachiewicz <[email protected]>
AuthorDate: Mon Oct 20 07:58:18 2025 +0200
Update code to work with SSHD 2.13.2 API
---------
Co-authored-by: copilot-swe-agent[bot]
<[email protected]>
Co-authored-by: slachiewicz <[email protected]>
---
wagon-providers/wagon-ssh-common-test/pom.xml | 18 +-
.../maven/wagon/providers/ssh/ScpCommand.java | 455 ---------------------
.../wagon/providers/ssh/ScpCommandFactory.java | 93 -----
.../maven/wagon/providers/ssh/ShellCommand.java | 7 +-
.../wagon/providers/ssh/SshServerEmbedded.java | 87 +---
.../providers/ssh/TestPasswordAuthenticator.java | 2 +-
.../providers/ssh/TestPublickeyAuthenticator.java | 6 +-
7 files changed, 37 insertions(+), 631 deletions(-)
diff --git a/wagon-providers/wagon-ssh-common-test/pom.xml
b/wagon-providers/wagon-ssh-common-test/pom.xml
index 23393a3f..106b5d1e 100644
--- a/wagon-providers/wagon-ssh-common-test/pom.xml
+++ b/wagon-providers/wagon-ssh-common-test/pom.xml
@@ -29,6 +29,9 @@ under the License.
<artifactId>wagon-ssh-common-test</artifactId>
<name>Apache Maven Wagon :: Providers :: SSH Common Tests</name>
+ <properties>
+ <sshdVersion>2.13.2</sshdVersion>
+ </properties>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
@@ -54,8 +57,19 @@ under the License.
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
- <!-- lots of changes in later versions, we drop SSH provider in 4.x
version -->
- <version>0.8.0</version>
+ <version>${sshdVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sshd</groupId>
+ <artifactId>sshd-scp</artifactId>
+ <version>${sshdVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sshd</groupId>
+ <artifactId>sshd-sftp</artifactId>
+ <version>${sshdVersion}</version>
<scope>compile</scope>
</dependency>
<dependency>
diff --git
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ScpCommand.java
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ScpCommand.java
deleted file mode 100644
index 2348161d..00000000
---
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ScpCommand.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.wagon.providers.ssh;
-
-import java.io.ByteArrayOutputStream;
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Arrays;
-
-import org.apache.sshd.common.util.DirectoryScanner;
-import org.apache.sshd.server.Command;
-import org.apache.sshd.server.Environment;
-import org.apache.sshd.server.ExitCallback;
-import org.apache.sshd.server.FileSystemAware;
-import org.apache.sshd.server.FileSystemView;
-import org.apache.sshd.server.SshFile;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This commands provide SCP support on both server and client side.
- * Permissions and preservation of access / modification times on files
- * are not supported.
- * olamy : copy of a class from mina for changing return codes in case of file
not found 1 warning instead of 2
- *
- * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a>
- */
-public class ScpCommand implements Command, Runnable, FileSystemAware {
-
- protected static final Logger LOG =
LoggerFactory.getLogger(ScpCommand.class);
-
- protected static final int OK = 0;
-
- protected static final int WARNING = 1;
-
- protected static final int ERROR = 2;
-
- protected String name;
-
- protected boolean optR;
-
- protected boolean optT;
-
- protected boolean optF;
-
- protected boolean optV;
-
- protected boolean optD;
-
- protected boolean optP;
-
- protected FileSystemView root;
-
- protected String path;
-
- protected InputStream in;
-
- protected OutputStream out;
-
- protected OutputStream err;
-
- protected ExitCallback callback;
-
- protected IOException error;
-
- public ScpCommand(String[] args) {
- name = Arrays.asList(args).toString();
- if (LOG.isDebugEnabled()) {
- LOG.debug("Executing command {}", name);
- }
- path = ".";
- for (int i = 1; i < args.length; i++) {
- if (args[i].charAt(0) == '-') {
- for (int j = 1; j < args[i].length(); j++) {
- switch (args[i].charAt(j)) {
- case 'f':
- optF = true;
- break;
- case 'p':
- optP = true;
- break;
- case 'r':
- optR = true;
- break;
- case 't':
- optT = true;
- break;
- case 'v':
- optV = true;
- break;
- case 'd':
- optD = true;
- break;
- default:
- }
- }
- } else if (i == args.length - 1) {
- path = args[args.length - 1];
- }
- }
- if (!optF && !optT) {
- error = new IOException("Either -f or -t option should be set");
- }
- }
-
- public void setInputStream(InputStream in) {
- this.in = in;
- }
-
- public void setOutputStream(OutputStream out) {
- this.out = out;
- }
-
- public void setErrorStream(OutputStream err) {
- this.err = err;
- }
-
- public void setExitCallback(ExitCallback callback) {
- this.callback = callback;
- }
-
- public void start(Environment env) throws IOException {
- if (error != null) {
- throw error;
- }
- new Thread(this, "ScpCommand: " + name).start();
- }
-
- public void destroy() {}
-
- public void run() {
- int exitValue = OK;
- String exitMessage = null;
-
- try {
- if (optT) {
- ack();
- for (; ; ) {
- String line;
- boolean isDir = false;
- int c = readAck(true);
- switch (c) {
- case -1:
- return;
- case 'D':
- isDir = true;
- case 'C':
- line = ((char) c) + readLine();
- break;
- case 'E':
- readLine();
- return;
- default:
- // a real ack that has been acted upon already
- continue;
- }
-
- if (optR && isDir) {
- writeDir(line, root.getFile(path));
- } else {
- writeFile(line, root.getFile(path));
- }
- }
- } else if (optF) {
- String pattern = path;
- int idx = pattern.indexOf('*');
- if (idx >= 0) {
- String basedir = "";
- int lastSep = pattern.substring(0, idx).lastIndexOf('/');
- if (lastSep >= 0) {
- basedir = pattern.substring(0, lastSep);
- pattern = pattern.substring(lastSep + 1);
- }
- String[] included = new DirectoryScanner(basedir,
pattern).scan();
- for (String path : included) {
- SshFile file = root.getFile(basedir + "/" + path);
- if (file.isFile()) {
- readFile(file);
- } else if (file.isDirectory()) {
- if (!optR) {
- out.write(WARNING);
- out.write((path + " not a regular
file\n").getBytes());
- } else {
- readDir(file);
- }
- } else {
- out.write(WARNING);
- out.write((path + " unknown file
type\n").getBytes());
- }
- }
- } else {
- String basedir = "";
- int lastSep = pattern.lastIndexOf('/');
- if (lastSep >= 0) {
- basedir = pattern.substring(0, lastSep);
- pattern = pattern.substring(lastSep + 1);
- }
- SshFile file = root.getFile(basedir + "/" + pattern);
- if (!file.doesExist()) {
- exitValue = WARNING;
- throw new IOException(file + ": no such file or
directory");
- }
- if (file.isFile()) {
- readFile(file);
- } else if (file.isDirectory()) {
- if (!optR) {
- throw new IOException(file + " not a regular
file");
- } else {
- readDir(file);
- }
- } else {
- throw new IOException(file + ": unknown file type");
- }
- }
- } else {
- throw new IOException("Unsupported mode");
- }
- } catch (IOException e) {
- try {
- exitValue = (exitValue != OK ? exitValue : ERROR);
- exitMessage = e.getMessage();
- out.write(exitValue);
- out.write(exitMessage.getBytes());
- out.write('\n');
- out.flush();
- } catch (IOException e2) {
- // Ignore
- }
- LOG.info("Error in scp command", e);
- } finally {
- if (callback != null) {
- callback.onExit(exitValue, exitMessage);
- }
- }
- }
-
- protected void writeDir(String header, SshFile path) throws IOException {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Writing dir {}", path);
- }
- if (!header.startsWith("D")) {
- throw new IOException("Expected a D message but got '" + header +
"'");
- }
-
- int length = Integer.parseInt(header.substring(6, header.indexOf(' ',
6)));
- String name = header.substring(header.indexOf(' ', 6) + 1);
-
- if (length != 0) {
- throw new IOException("Expected 0 length for directory but got " +
length);
- }
- SshFile file;
- if (path.doesExist() && path.isDirectory()) {
- file = root.getFile(path, name);
- } else if (!path.doesExist()
- && path.getParentFile().doesExist()
- && path.getParentFile().isDirectory()) {
- file = path;
- } else {
- throw new IOException("Can not write to " + path);
- }
- if (!(file.doesExist() && file.isDirectory()) && !file.mkdir()) {
- throw new IOException("Could not create directory " + file);
- }
-
- ack();
-
- for (; ; ) {
- header = readLine();
- if (header.startsWith("C")) {
- writeFile(header, file);
- } else if (header.startsWith("D")) {
- writeDir(header, file);
- } else if (header.equals("E")) {
- ack();
- break;
- } else {
- throw new IOException("Unexpected message: '" + header + "'");
- }
- }
- }
-
- protected void writeFile(String header, SshFile path) throws IOException {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Writing file {}", path);
- }
- if (!header.startsWith("C")) {
- throw new IOException("Expected a C message but got '" + header +
"'");
- }
-
- long length = Long.parseLong(header.substring(6, header.indexOf(' ',
6)));
- String name = header.substring(header.indexOf(' ', 6) + 1);
-
- SshFile file;
- if (path.doesExist() && path.isDirectory()) {
- file = root.getFile(path, name);
- } else if (path.doesExist() && path.isFile()) {
- file = path;
- } else if (!path.doesExist()
- && path.getParentFile().doesExist()
- && path.getParentFile().isDirectory()) {
- file = path;
- } else {
- throw new IOException("Can not write to " + path);
- }
- if (file.doesExist() && file.isDirectory()) {
- throw new IOException("File is a directory: " + file);
- } else if (file.doesExist() && !file.isWritable()) {
- throw new IOException("Can not write to file: " + file);
- }
- OutputStream os = file.createOutputStream(0);
- try {
- ack();
-
- byte[] buffer = new byte[8 * 1024];
- while (length > 0) {
- int len = (int) Math.min(length, buffer.length);
- len = in.read(buffer, 0, len);
- if (len <= 0) {
- throw new IOException("End of stream reached");
- }
- os.write(buffer, 0, len);
- length -= len;
- }
- } finally {
- os.close();
- }
-
- ack();
- readAck(false);
- }
-
- protected String readLine() throws IOException {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- for (; ; ) {
- int c = in.read();
- if (c == '\n') {
- return baos.toString();
- } else if (c == -1) {
- throw new IOException("End of stream");
- } else {
- baos.write(c);
- }
- }
- }
-
- protected void readFile(SshFile path) throws IOException {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Reading file {}", path);
- }
- StringBuilder buf = new StringBuilder();
- buf.append("C");
- buf.append("0644"); // what about perms
- buf.append(" ");
- buf.append(path.getSize()); // length
- buf.append(" ");
- buf.append(path.getName());
- buf.append("\n");
- out.write(buf.toString().getBytes());
- out.flush();
- readAck(false);
-
- InputStream is = path.createInputStream(0);
- try {
- byte[] buffer = new byte[8 * 1024];
- for (; ; ) {
- int len = is.read(buffer, 0, buffer.length);
- if (len == -1) {
- break;
- }
- out.write(buffer, 0, len);
- }
- } finally {
- is.close();
- }
- ack();
- readAck(false);
- }
-
- protected void readDir(SshFile path) throws IOException {
- if (LOG.isDebugEnabled()) {
- LOG.debug("Reading directory {}", path);
- }
- StringBuilder buf = new StringBuilder();
- buf.append("D");
- buf.append("0755"); // what about perms
- buf.append(" ");
- buf.append("0"); // length
- buf.append(" ");
- buf.append(path.getName());
- buf.append("\n");
- out.write(buf.toString().getBytes());
- out.flush();
- readAck(false);
-
- for (SshFile child : path.listSshFiles()) {
- if (child.isFile()) {
- readFile(child);
- } else if (child.isDirectory()) {
- readDir(child);
- }
- }
-
- out.write("E\n".getBytes());
- out.flush();
- readAck(false);
- }
-
- protected void ack() throws IOException {
- out.write(0);
- out.flush();
- }
-
- protected int readAck(boolean canEof) throws IOException {
- int c = in.read();
- switch (c) {
- case -1:
- if (!canEof) {
- throw new EOFException();
- }
- break;
- case OK:
- break;
- case WARNING:
- LOG.warn("Received warning: " + readLine());
- break;
- case ERROR:
- throw new IOException("Received nack: " + readLine());
- default:
- break;
- }
- return c;
- }
-
- public void setFileSystemView(FileSystemView view) {
- this.root = view;
- }
-}
diff --git
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ScpCommandFactory.java
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ScpCommandFactory.java
deleted file mode 100644
index 02f022d9..00000000
---
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ScpCommandFactory.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.wagon.providers.ssh;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.sshd.server.Command;
-import org.apache.sshd.server.CommandFactory;
-
-/**
- * This <code>CommandFactory</code> can be used as a standalone command factory
- * or can be used to augment another <code>CommandFactory</code> and provides
- * <code>SCP</code> support.
- *
- * @see ScpCommand
- *
- * @author <a href="mailto:[email protected]">Apache MINA SSHD Project</a>
- */
-public class ScpCommandFactory implements CommandFactory {
-
- private CommandFactory delegate;
-
- public ScpCommandFactory() {}
-
- public ScpCommandFactory(CommandFactory delegate) {
- this.delegate = delegate;
- }
-
- /**
- * Parses a command string and verifies that the basic syntax is
- * correct. If parsing fails the responsibility is delegated to
- * the configured {@link org.apache.sshd.server.CommandFactory} instance;
if one exist.
- *
- * @param command command to parse
- * @return configured {@link org.apache.sshd.server.Command} instance
- * @throws IllegalArgumentException
- */
- public Command createCommand(String command) {
- try {
- return new ScpCommand(splitCommandString(command));
- } catch (IllegalArgumentException iae) {
- if (delegate != null) {
- return delegate.createCommand(command);
- }
- throw iae;
- }
- }
-
- private String[] splitCommandString(String command) {
- if (!command.trim().startsWith("scp")) {
- throw new IllegalArgumentException("Unknown command, does not
begin with 'scp'");
- }
-
- String[] args = command.split(" ");
- List<String> parts = new ArrayList<>();
- parts.add(args[0]);
- for (int i = 1; i < args.length; i++) {
- if (!args[i].trim().startsWith("-")) {
- parts.add(concatenateWithSpace(args, i));
- break;
- } else {
- parts.add(args[i]);
- }
- }
- return parts.toArray(new String[parts.size()]);
- }
-
- private String concatenateWithSpace(String[] args, int from) {
- StringBuilder sb = new StringBuilder();
-
- for (int i = from; i < args.length; i++) {
- sb.append(args[i] + " ");
- }
- return sb.toString().trim();
- }
-}
diff --git
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ShellCommand.java
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ShellCommand.java
index 16becbda..17afa6cd 100644
---
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ShellCommand.java
+++
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ShellCommand.java
@@ -24,9 +24,10 @@
import java.io.OutputStream;
import java.nio.file.Files;
-import org.apache.sshd.server.Command;
import org.apache.sshd.server.Environment;
import org.apache.sshd.server.ExitCallback;
+import org.apache.sshd.server.channel.ChannelSession;
+import org.apache.sshd.server.command.Command;
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.Commandline;
@@ -72,7 +73,7 @@ public void setExitCallback(ExitCallback callback) {
this.callback = callback;
}
- public void start(Environment env) throws IOException {
+ public void start(ChannelSession channel, Environment env) throws
IOException {
File tmpFile = File.createTempFile("wagon", "test-sh");
tmpFile.deleteOnExit();
int exitValue = 0;
@@ -109,7 +110,7 @@ public void start(Environment env) throws IOException {
out.flush();
}
- public void destroy() {}
+ public void destroy(ChannelSession channel) throws Exception {}
private void deleteQuietly(File f) {
diff --git
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java
index eefb64d6..a314869b 100644
---
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java
+++
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/SshServerEmbedded.java
@@ -21,26 +21,14 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
-import org.apache.mina.core.session.IoSession;
-import org.apache.sshd.SshServer;
-import org.apache.sshd.common.Session;
-import org.apache.sshd.common.session.AbstractSession;
-import org.apache.sshd.server.Command;
-import org.apache.sshd.server.CommandFactory;
-import org.apache.sshd.server.FileSystemFactory;
-import org.apache.sshd.server.FileSystemView;
-import org.apache.sshd.server.PasswordAuthenticator;
-import org.apache.sshd.server.SshFile;
-import org.apache.sshd.server.auth.UserAuthPassword;
-import org.apache.sshd.server.auth.UserAuthPublicKey;
-import org.apache.sshd.server.filesystem.NativeSshFile;
-import org.apache.sshd.server.keyprovider.PEMGeneratorHostKeyProvider;
-import org.apache.sshd.server.session.SessionFactory;
+import org.apache.sshd.common.file.nativefs.NativeFileSystemFactory;
+import org.apache.sshd.scp.server.ScpCommandFactory;
+import org.apache.sshd.server.SshServer;
+import org.apache.sshd.server.auth.password.PasswordAuthenticator;
+import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
import org.apache.sshd.server.shell.ProcessShellFactory;
-import org.codehaus.plexus.util.FileUtils;
/**
* @author Olivier Lamy
@@ -84,79 +72,39 @@ public SshServerEmbedded(String wagonProtocol, List<String>
sshKeysResources, bo
public int start() throws IOException {
sshd.setPort(0);
- sshd.setUserAuthFactories(Arrays.asList(new
UserAuthPublicKey.Factory(), new UserAuthPassword.Factory()));
-
sshd.setPublickeyAuthenticator(this.publickeyAuthenticator);
sshd.setPasswordAuthenticator(this.passwordAuthenticator);
- sshd.setUserAuthFactories(Arrays.asList(new
UserAuthPublicKey.Factory(), new UserAuthPassword.Factory()));
-
File path = new File("target/keys");
path.mkdirs();
path = new File(path, "simple.key");
path.delete();
- PEMGeneratorHostKeyProvider provider = new
PEMGeneratorHostKeyProvider();
+ SimpleGeneratorHostKeyProvider provider = new
SimpleGeneratorHostKeyProvider(path.toPath());
provider.setAlgorithm("RSA");
provider.setKeySize(1024);
- provider.setPath(path.getPath());
sshd.setKeyPairProvider(provider);
- SessionFactory sessionFactory = new SessionFactory() {
- @Override
- protected AbstractSession doCreateSession(IoSession ioSession)
throws Exception {
- return super.doCreateSession(ioSession);
- }
- };
- sshd.setSessionFactory(sessionFactory);
// sshd.setFileSystemFactory( );
- final ProcessShellFactory processShellFactory = new
ProcessShellFactory(new String[] {"/bin/sh", "-i", "-l"});
+ final ProcessShellFactory processShellFactory = new
ProcessShellFactory("/bin/sh", "-i", "-l");
sshd.setShellFactory(processShellFactory);
- CommandFactory delegateCommandFactory = new CommandFactory() {
- public Command createCommand(String command) {
- return new ShellCommand(command);
- }
- };
-
- ScpCommandFactory commandFactory = new
ScpCommandFactory(delegateCommandFactory);
+ ScpCommandFactory commandFactory = new ScpCommandFactory.Builder()
+ .withDelegate((channel, command) -> new ShellCommand(command))
+ .build();
sshd.setCommandFactory(commandFactory);
- FileSystemFactory fileSystemFactory = new FileSystemFactory() {
- public FileSystemView createFileSystemView(Session session) throws
IOException {
- return new FileSystemView() {
- public SshFile getFile(String file) {
- file = file.replace("\\", "");
- file = file.replace("\"", "");
- File f = new File(FileUtils.normalize(file));
-
- return new SshServerEmbedded.TestSshFile(
- f.getAbsolutePath(), f,
System.getProperty("user.name"));
- }
-
- public SshFile getFile(SshFile baseDir, String file) {
- file = file.replace("\\", "");
- file = file.replace("\"", "");
- File f = new File(FileUtils.normalize(file));
- return new SshServerEmbedded.TestSshFile(
- f.getAbsolutePath(), f,
System.getProperty("user.name"));
- }
- };
- }
- };
- sshd.setNioWorkers(0);
- // sshd.setScheduledExecutorService( );
- sshd.setFileSystemFactory(fileSystemFactory);
+ sshd.setFileSystemFactory(new NativeFileSystemFactory());
sshd.start();
this.port = sshd.getPort();
return this.port;
}
- public void stop() throws InterruptedException {
- sshd.stop(Boolean.getBoolean("sshd.stopImmediatly"));
+ public void stop() throws IOException {
+ sshd.stop();
}
public int getPort() {
@@ -166,13 +114,4 @@ public int getPort() {
public PasswordAuthenticator getPasswordAuthenticator() {
return passwordAuthenticator;
}
- /**
- *
- */
- public static class TestSshFile extends NativeSshFile {
- public TestSshFile(String fileName, File file, String userName) {
-
- super(FileUtils.normalize(fileName), file, userName);
- }
- }
}
diff --git
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java
index b25f64f4..f987ef19 100644
---
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java
+++
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPasswordAuthenticator.java
@@ -21,7 +21,7 @@
import java.util.ArrayList;
import java.util.List;
-import org.apache.sshd.server.PasswordAuthenticator;
+import org.apache.sshd.server.auth.password.PasswordAuthenticator;
import org.apache.sshd.server.session.ServerSession;
import org.codehaus.plexus.util.StringUtils;
diff --git
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java
index e77bef72..3f387527 100644
---
a/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java
+++
b/wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/TestPublickeyAuthenticator.java
@@ -29,10 +29,10 @@
import java.security.spec.DSAPublicKeySpec;
import java.security.spec.RSAPublicKeySpec;
import java.util.ArrayList;
+import java.util.Base64;
import java.util.List;
-import org.apache.mina.util.Base64;
-import org.apache.sshd.server.PublickeyAuthenticator;
+import org.apache.sshd.server.auth.pubkey.PublickeyAuthenticator;
import org.apache.sshd.server.session.ServerSession;
import org.codehaus.plexus.util.IOUtil;
@@ -111,7 +111,7 @@ public PublicKey decodePublicKey(String keyLine) throws
Exception {
for (String part : keyLine.split(" ")) {
if (part.startsWith("AAAA")) {
- bytes = Base64.decodeBase64(part.getBytes());
+ bytes = Base64.getDecoder().decode(part.getBytes());
break;
}
}