package com.netifera.platform.demo.ui.internal; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.jface.action.IAction; import com.netifera.platform.api.iterables.ListIndexedIterable; import com.netifera.platform.api.model.IShadowEntity; import com.netifera.platform.demo.ExploitTestService; import com.netifera.platform.net.model.ServiceEntity; import com.netifera.platform.tools.options.IterableOption; import com.netifera.platform.tools.options.StringOption; import com.netifera.platform.ui.actions.ToolAction; import com.netifera.platform.ui.api.actions.IEntityActionProvider; import com.netifera.platform.util.addresses.inet.InternetAddress; import com.netifera.platform.util.locators.TCPSocketLocator; public class EntityActionProvider implements IEntityActionProvider { public List<IAction> getActions(IShadowEntity entity) { List<IAction> answer = new ArrayList<IAction>(); if (entity instanceof ServiceEntity) { ServiceEntity serviceEntity = (ServiceEntity) entity; if (serviceEntity.getServiceType().equals("TEST")) { TCPSocketLocator tcpLocator = (TCPSocketLocator) entity.getAdapter(TCPSocketLocator.class); if (tcpLocator != null) { ListIndexedIterable<InternetAddress> addresses = new ListIndexedIterable<InternetAddress>(tcpLocator.getAddress()); assert addresses.itemAt(0).isUniCast(); ToolAction exploit = new ToolAction("Exploit Test Service At "+tcpLocator, ExploitTestService.class.getName()); exploit.addFixedOption(new IterableOption(InternetAddress.class, "target", "Target", "Target addresses", addresses)); exploit.addFixedOption(new StringOption("port", "Port", "Ports to exploit", ((Integer)tcpLocator.getPort()).toString())); answer.add(exploit); } } } return answer; } public List<IAction> getQuickActions(IShadowEntity entity) { return Collections.emptyList(); } }