-
Notifications
You must be signed in to change notification settings - Fork 96
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Gitignore error, matched target payloads
- Loading branch information
1 parent
6382f94
commit 6ee675e
Showing
12 changed files
with
764 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
package de.codewhite.jmet.target; | ||
|
||
import de.codewhite.jmet.types.DestType; | ||
import de.codewhite.jmet.types.MessageType; | ||
import de.codewhite.jmet.types.ModeType; | ||
|
||
/** | ||
* Created by kaimatt | ||
*/ | ||
public abstract class BaseTarget implements Target { | ||
private String host; | ||
private int port; | ||
private String destination; | ||
private String user; | ||
private String password; | ||
private ModeType mode; | ||
private String cmd; | ||
private MessageType type; | ||
|
||
private String vhost; | ||
|
||
public String getVhost() { | ||
return vhost; | ||
} | ||
|
||
public void setVhost(String vhost) { | ||
this.vhost = vhost; | ||
} | ||
|
||
|
||
public DestType getDestType() { | ||
return destType; | ||
} | ||
|
||
public void setDestType(DestType destType) { | ||
this.destType = destType; | ||
} | ||
|
||
private DestType destType; | ||
|
||
|
||
public String getHost() { | ||
return host; | ||
} | ||
|
||
public void setHost(String host) { | ||
this.host = host; | ||
} | ||
|
||
public int getPort() { | ||
return port; | ||
} | ||
|
||
public void setPort(int port) { | ||
this.port = port; | ||
} | ||
|
||
public String getDestination() { | ||
return destination; | ||
} | ||
|
||
public void setDestination(String destination) { | ||
this.destination = destination; | ||
} | ||
|
||
public String getUser() { | ||
return user; | ||
} | ||
|
||
public void setUser(String user) { | ||
this.user = user; | ||
} | ||
|
||
public String getPassword() { | ||
return password; | ||
} | ||
|
||
public void setPassword(String password) { | ||
this.password = password; | ||
} | ||
|
||
public ModeType getMode() { | ||
return mode; | ||
} | ||
|
||
public void setMode(ModeType mode) { | ||
this.mode = mode; | ||
} | ||
|
||
public String getCmd() { | ||
return cmd; | ||
} | ||
|
||
public void setCmd(String cmd) { | ||
this.cmd = cmd; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,176 @@ | ||
package de.codewhite.jmet.target; | ||
|
||
import de.codewhite.jmet.exceptions.CheckException; | ||
import de.codewhite.jmet.exceptions.SendException; | ||
import de.codewhite.jmet.exceptions.ShutdownException; | ||
import de.codewhite.jmet.filter.ScriptMesageFilter; | ||
import de.codewhite.jmet.payload.impl.BytesPayloadItem; | ||
import de.codewhite.jmet.payload.impl.ObjectPayloadItem; | ||
import de.codewhite.jmet.payload.impl.TextPayloadItem; | ||
import org.apache.logging.log4j.LogManager; | ||
import org.apache.logging.log4j.Logger; | ||
|
||
import javax.jms.*; | ||
import javax.script.ScriptException; | ||
import java.io.Serializable; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
/** | ||
* Created by kaimatt. | ||
*/ | ||
public abstract class JMSTarget extends BaseTarget { | ||
|
||
protected final Logger logger = LogManager.getLogger(this.getClass().getName()); | ||
protected ConnectionFactory factory; | ||
protected Connection connection; | ||
protected Session session; | ||
protected Destination dest; | ||
protected MessageProducer producer; | ||
|
||
protected List<ObjectPayloadItem> objectPayloads = new ArrayList<>(); | ||
protected List<TextPayloadItem> textPayloads = new ArrayList<>(); | ||
protected List<BytesPayloadItem> bytesPayloads = new ArrayList<>(); | ||
protected ScriptMesageFilter filter; | ||
|
||
protected boolean gadgetWrapping = false; | ||
|
||
public boolean isGadgetWrapping() { | ||
return gadgetWrapping; | ||
} | ||
|
||
public void setGadgetWrapping(boolean gadgetWrapping) { | ||
this.gadgetWrapping = gadgetWrapping; | ||
} | ||
|
||
public void addObjectPayloads(List<ObjectPayloadItem> payload) { | ||
objectPayloads.addAll(payload); | ||
} | ||
|
||
public void addTextPayloads(List<TextPayloadItem> payload) { | ||
textPayloads.addAll(payload); | ||
} | ||
|
||
public void addBytesPayloads(List<BytesPayloadItem> payload) { | ||
bytesPayloads.addAll(payload); | ||
} | ||
|
||
public void addObjectPayload(String type, String command, Serializable payload) { | ||
objectPayloads.add(new ObjectPayloadItem(type, command, payload)); | ||
|
||
} | ||
|
||
public void addTextPayload(String payloadName, String payloadText) { | ||
textPayloads.add(new TextPayloadItem(payloadName, payloadText)); | ||
|
||
} | ||
|
||
public void addBytesPayload(String payloadName, Object[] payloadBytes) { | ||
bytesPayloads.add(new BytesPayloadItem(payloadName, payloadBytes)); | ||
|
||
} | ||
|
||
public List<ObjectPayloadItem> getObjectPayloads() { | ||
return objectPayloads; | ||
} | ||
|
||
public List<TextPayloadItem> getTextPayloads() { | ||
return textPayloads; | ||
} | ||
|
||
public List<BytesPayloadItem> getBytesPayloads() { | ||
return bytesPayloads; | ||
} | ||
|
||
public ScriptMesageFilter getFilter() { | ||
return filter; | ||
} | ||
|
||
public void sendPayloads() throws SendException, ScriptException, NoSuchMethodException { | ||
|
||
|
||
for (ObjectPayloadItem pay : objectPayloads) { | ||
|
||
try { | ||
ObjectMessage msg = session.createObjectMessage(pay.getPayload()); | ||
if (filter != null) { | ||
|
||
msg = (ObjectMessage) filter.filter(msg); | ||
|
||
} | ||
producer.send(msg); | ||
logger.info("Sent gadget \"{}\" with command: \"{}\"", pay.getType(), pay.getCommand()); | ||
} catch (JMSException e) { | ||
throw new SendException("Sending ObjectMessage failed", e); | ||
} | ||
|
||
} | ||
|
||
for (TextPayloadItem pay : textPayloads) { | ||
|
||
TextMessage msg; | ||
try { | ||
msg = session.createTextMessage(pay.getPayloadText()); | ||
if (filter != null) { | ||
msg = (TextMessage) filter.filter(msg); | ||
} | ||
producer.send(msg); | ||
logger.info("Sent TextMessage with payload \"{}\"", pay.getPayloadName()); | ||
} catch (JMSException e) { | ||
throw new SendException("Sending TextMessage failed", e); | ||
} | ||
|
||
|
||
} | ||
|
||
for (BytesPayloadItem pay : bytesPayloads) { | ||
|
||
try { | ||
BytesMessage msg = session.createBytesMessage(); | ||
if (filter != null) { | ||
msg = (BytesMessage) filter.filter(msg); | ||
} | ||
msg.writeObject(pay.getPayloadBytes()); | ||
producer.send(msg); | ||
logger.info("Sent BytesMessage: Payload name: \"{}\"", pay.getPayloadName()); | ||
} catch (JMSException e) { | ||
throw new SendException("Sending BytesMessage failed", e); | ||
} | ||
|
||
|
||
} | ||
|
||
} | ||
|
||
|
||
public void check() throws CheckException { | ||
|
||
String id; | ||
try { | ||
id = connection.getClientID(); | ||
logger.info("Connected with ID: {}", id); | ||
} catch (JMSException e) { | ||
throw new CheckException("Connecting failed", e); | ||
} | ||
|
||
|
||
} | ||
|
||
|
||
public void shutdown() throws ShutdownException { | ||
|
||
|
||
try { | ||
logger.info("Shutting down connection {}", connection.getClientID()); | ||
connection.close(); | ||
} catch (JMSException e) { | ||
throw new ShutdownException("Shutdown failed", e); | ||
} | ||
|
||
|
||
} | ||
|
||
public void setFilter(ScriptMesageFilter filter) { | ||
this.filter = filter; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package de.codewhite.jmet.target; | ||
|
||
import de.codewhite.jmet.exceptions.CheckException; | ||
import de.codewhite.jmet.exceptions.InitException; | ||
import de.codewhite.jmet.exceptions.SendException; | ||
import de.codewhite.jmet.exceptions.ShutdownException; | ||
import de.codewhite.jmet.payload.impl.BytesPayloadItem; | ||
import de.codewhite.jmet.payload.impl.ObjectPayloadItem; | ||
import de.codewhite.jmet.payload.impl.TextPayloadItem; | ||
import de.codewhite.jmet.types.ModeType; | ||
|
||
import javax.script.ScriptException; | ||
import java.io.Serializable; | ||
import java.util.List; | ||
|
||
/** | ||
* Created by kaimatt | ||
*/ | ||
public interface Target { | ||
|
||
void addObjectPayloads(List<ObjectPayloadItem> payload); | ||
|
||
void addObjectPayload(String type, String command, Serializable payload); | ||
|
||
void addTextPayloads(List<TextPayloadItem> payload); | ||
|
||
void addTextPayload(String payloadName, String payloadText); | ||
|
||
void addBytesPayloads(List<BytesPayloadItem> payload); | ||
|
||
void addBytesPayload(String payloadName, Object[] payloadBytes); | ||
|
||
ModeType[] getSupportedModes(); | ||
|
||
void check() throws CheckException; | ||
|
||
void init() throws InitException; | ||
|
||
void sendPayloads() throws SendException, ScriptException, NoSuchMethodException; | ||
|
||
void shutdown() throws ShutdownException; | ||
} |
49 changes: 49 additions & 0 deletions
49
src/main/java/de/codewhite/jmet/target/impl/ActiveMQTarget.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package de.codewhite.jmet.target.impl; | ||
|
||
import de.codewhite.jmet.exceptions.InitException; | ||
import de.codewhite.jmet.target.JMSTarget; | ||
import de.codewhite.jmet.types.ModeType; | ||
import org.apache.activemq.ActiveMQConnectionFactory; | ||
import org.apache.activemq.ActiveMQSession; | ||
import org.apache.activemq.command.ActiveMQQueue; | ||
import org.apache.activemq.command.ActiveMQTopic; | ||
|
||
import javax.jms.JMSException; | ||
|
||
/** | ||
* Created by kaimatt. | ||
*/ | ||
public class ActiveMQTarget extends JMSTarget { | ||
|
||
public ModeType[] getSupportedModes() { | ||
return new ModeType[]{ModeType.OPENWIRE}; | ||
} | ||
|
||
|
||
public void init() throws InitException { | ||
|
||
try { | ||
factory = new ActiveMQConnectionFactory("tcp://" + getHost() + ":" + getPort()); | ||
connection = factory.createConnection(getUser(), getPassword()); | ||
|
||
session = connection.createSession(false, ActiveMQSession.AUTO_ACKNOWLEDGE); | ||
|
||
switch (getDestType()) { | ||
case QUEUE: | ||
dest = new ActiveMQQueue(getDestination()); | ||
break; | ||
case TOPIC: | ||
dest = new ActiveMQTopic(getDestination()); | ||
break; | ||
} | ||
|
||
|
||
producer = session.createProducer(dest); | ||
connection.start(); | ||
} catch (JMSException e) { | ||
throw new InitException(e.fillInStackTrace()); | ||
} | ||
} | ||
|
||
|
||
} |
Oops, something went wrong.