/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.embedded.ssh.internal; import org.apache.sshd.common.Factory; import org.apache.sshd.server.Command; import org.apache.sshd.server.CommandFactory; import de.rcenvironment.core.command.api.CommandExecutionService; import de.rcenvironment.core.embedded.ssh.api.ScpContextManager; /** * The Shell and Command Factory for the SshConsole. Used to create SshcommandHandler instances to handle the given commands. * * @author Sebastian Holtappels * @author Robert Mischke */ public class CustomSshCommandFactory implements Factory<Command>, CommandFactory { private CommandExecutionService commandExecutionService; private SshAuthenticationManager authenticationManager; private ScpContextManager scpContextManager; private SshConfiguration sshConfiguration; // ShellFactory - Methods public CustomSshCommandFactory(SshAuthenticationManager authenticationManager, ScpContextManager scpContextManager, CommandExecutionService commandExecutionService, SshConfiguration sshConfiguration) { this.sshConfiguration = sshConfiguration; this.authenticationManager = authenticationManager; this.scpContextManager = scpContextManager; this.commandExecutionService = commandExecutionService; } @Override public Command create() { return createCommand(null); } // CommandFactory - Methods @Override public Command createCommand(String command) { Command result = null; if (command != null && command.trim().startsWith(SshConstants.SCP_COMMAND)) { result = new ScpCommandWrapper(command, scpContextManager); } else { result = new SshCommandHandler(command, authenticationManager, commandExecutionService, sshConfiguration); } return result; } }