package com.netifera.platform.net.ssh.internal.ui; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.action.IAction; import com.netifera.platform.api.model.IShadowEntity; import com.netifera.platform.api.tools.IToolConfiguration; import com.netifera.platform.host.filesystem.IFileSystem; import com.netifera.platform.host.filesystem.ui.OpenFileSystemViewAction; import com.netifera.platform.host.terminal.ui.OpenTerminalAction; import com.netifera.platform.net.model.ServiceEntity; import com.netifera.platform.net.services.credentials.UsernameAndPassword; import com.netifera.platform.net.services.ssh.SSH; import com.netifera.platform.net.ssh.filesystem.SFTPFileSystem; import com.netifera.platform.tools.options.GenericOption; import com.netifera.platform.tools.options.IntegerOption; import com.netifera.platform.tools.options.StringOption; import com.netifera.platform.ui.actions.SpaceAction; import com.netifera.platform.ui.api.actions.IEntityActionProvider; public class EntityActionProvider implements IEntityActionProvider { public List<IAction> getActions(IShadowEntity entity) { List<IAction> answer = new ArrayList<IAction>(); SSH ssh = (SSH) entity.getAdapter(SSH.class); if (ssh != null) { // ToolAction sshAuthBruteforcer = new ToolAction("Bruteforce authentication", FTPAuthBruteforcer.class.getName()); // ftpAuthBruteforcer.setSummary("Try credentials on FTP service."); // ftpAuthBruteforcer.addFixedOption(new GenericOption(TCPSocketLocator.class, "target", "Target", "Target FTP service", ftp.getLocator())); // ftpAuthBruteforcer.addOption(new IterableOption(UsernameAndPassword.class, "credentials", "Credentials", "List of credentials to try", null)); // answer.add(ftpAuthBruteforcer); } return answer; } public List<IAction> getQuickActions(IShadowEntity entity) { List<IAction> answer = new ArrayList<IAction>(); if (entity instanceof ServiceEntity) { SSH ssh = (SSH) entity.getAdapter(SSH.class); if (ssh != null) { SpaceAction action = new OpenFileSystemViewAction("Browse File System") { @Override public IFileSystem createFileSystem() { IToolConfiguration config = getConfiguration(); return new SFTPFileSystem((SSH)config.get("ssh"), new UsernameAndPassword((String)config.get("username"),(String)config.get("password"))); } }; action.addFixedOption(new GenericOption(SSH.class, "ssh", "SSH", "SSH server to connect to", ssh)); action.addOption(new StringOption("username", "Username", "", "root")); action.addOption(new StringOption("password", "Password", "", "")); answer.add(action); action = new OpenTerminalAction("Open SSH Terminal", ((ServiceEntity)entity).getAddress().getHost()); action.addFixedOption(new StringOption("connector", "Connector", "", "com.netifera.platform.net.ssh.terminal.SSHConnector")); action.addOption(new StringOption("host", "Host", "Host to connect to", ssh.getLocator().getAddress().toString())); action.addOption(new IntegerOption("port", "Port", "Port to connect to", ssh.getLocator().getPort(), 0xFFFF)); action.addOption(new StringOption("username", "Username", "", "root")); action.addOption(new StringOption("password", "Password", "", "", true)); action.addOption(new StringOption("key", "Public Key", "Public Key to use in the authentication", "", true)); answer.add(action); } } return answer; } }