Skip to content

Commit b665e81

Browse files
Initial implementation of CoT -> Mcs in ReceiverPlugin
1 parent 2e83e50 commit b665e81

4 files changed

Lines changed: 48 additions & 14 deletions

File tree

TAK Server Plugin/Plugin/src/takserver-sender-plugin-mcs/src/main/java/tak/server/plugins/McsLoggerReceiverPlugin.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,16 @@ public void onMessage(Message message) {
6969

7070
if(CoTMcsConverter.messageFromSender(message)) {
7171
if (VerboseLogging)
72-
_logger.info("Message is from TAK Plugin");
72+
_logger.info("Message originated from TAK Plugin");
7373
//Bail - TODO it would be nice maybe to check flowtags or something else
7474
return;
7575
}
76+
77+
if(CoTMcsConverter.messageIsPing(message)){
78+
if (VerboseLogging)
79+
_logger.info("Ping message from TAK Client, skipping");
80+
return;
81+
}
7682

7783
_messageProducer.AddMessage(message);
7884
}

TAK Server Plugin/Plugin/src/takserver-sender-plugin-mcs/src/main/java/tak/server/plugins/messagebroker/RabbitMQClient.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.slf4j.LoggerFactory;
1414

1515
import tak.server.plugins.processing.*;
16+
import tak.server.plugins.utilities.McsCoTConverter;
1617
import tak.server.plugins.PluginConfiguration;
1718
import tak.server.plugins.McsSenderPlugin;
1819

@@ -62,6 +63,10 @@ public void SetupConsumption(MessageProducer producer, PluginConfiguration confi
6263
String topic = delivery.getEnvelope().getRoutingKey();
6364
if (McsSenderPlugin.VerboseLogging)
6465
logger.info("Msg Received '" + topic + "':'" + message + "'");
66+
67+
if (McsCoTConverter.messageIsFromPlugin(message))
68+
return;
69+
6570
_producer.AddMessage(topic, message);
6671
};
6772

@@ -93,6 +98,9 @@ public void publishEntityMessage(String message)
9398
if (!_channel.isOpen()) return;
9499

95100
try {
101+
if (McsSenderPlugin.VerboseLogging)
102+
logger.info("Publishing to " + _entityRoutingKey + " message: " + message);
103+
96104
byte[] entityBytes = message.getBytes(StandardCharsets.UTF_8);
97105
_channel.basicPublish(_exchangeName, _entityRoutingKey, null, entityBytes);
98106
}

TAK Server Plugin/Plugin/src/takserver-sender-plugin-mcs/src/main/java/tak/server/plugins/utilities/CoTMcsConverter.java

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
public class CoTMcsConverter {
2727
private static final Logger _logger = LoggerFactory.getLogger(CoTMcsConverter.class);
28+
public static final String FROM_TAK = "fromTAK";
2829

2930
public static EntityDto convertToEntityDto(Message message) {
3031
TakMessage takMessage = message.getPayload();
@@ -53,30 +54,21 @@ public static EntityDto convertToEntityDto(Message message) {
5354
return EntityDto;
5455
}
5556

56-
public static Boolean messageFromSender(Message message) {
57-
Boolean fromSender = false;
58-
try {
59-
TakMessage takMessage = message.getPayload();
60-
CotEvent cotEvent = takMessage.getCotEvent();
61-
fromSender = cotEvent.getDetail().getXmlDetail().contains(McsCoTConverter.FROM_MCS);
62-
} catch (Exception e) {
63-
//Do Nothing
64-
}
65-
return fromSender;
66-
}
67-
6857
public static String convertToJson(EntityDto EntityDto) {
6958
Gson gson = new Gson();
7059
JsonElement element = JsonParser.parseString(gson.toJson(EntityDto));
7160

7261
//Using org.json here for convenient xml-> serialization
7362
JSONObject detailDataJsonObject = XML.toJSONObject(EntityDto.getDetail());
63+
detailDataJsonObject.put(FROM_TAK, "true");
7464
String detailJson = detailDataJsonObject.toString();
7565

7666
//Back to gson
7767
JsonElement detailJobject = JsonParser.parseString(detailJson);
7868
JsonObject jObject = element.getAsJsonObject();
7969
jObject.add("detail", detailJobject);
70+
71+
8072

8173
return jObject.toString();
8274
}
@@ -86,7 +78,7 @@ private static String convertTime(Long time) {
8678
// 1970-01-01 00:00:00 UTC
8779
String timeIso = "1970-01-01 00:00:00 UTC";
8880
try {
89-
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME.withZone(ZoneId.from(ZoneOffset.UTC));
81+
DateTimeFormatter formatter = DateTimeFormatter.ISO_INSTANT;
9082
Instant instant = Instant.ofEpochMilli( time );
9183
timeIso = formatter.format( instant );
9284
} catch (Exception e) {
@@ -95,4 +87,28 @@ private static String convertTime(Long time) {
9587

9688
return timeIso;
9789
}
90+
91+
public static Boolean messageFromSender(Message message) {
92+
Boolean fromSender = false;
93+
try {
94+
TakMessage takMessage = message.getPayload();
95+
CotEvent cotEvent = takMessage.getCotEvent();
96+
fromSender = cotEvent.getDetail().getXmlDetail().contains(McsCoTConverter.FROM_MCS);
97+
} catch (Exception e) {
98+
//Do Nothing
99+
}
100+
return fromSender;
101+
}
102+
103+
public static Boolean messageIsPing(Message message) {
104+
Boolean isPing = false;
105+
try {
106+
TakMessage takMessage = message.getPayload();
107+
CotEvent cotEvent = takMessage.getCotEvent();
108+
isPing = cotEvent.getUid().contains("ping");
109+
} catch (Exception e) {
110+
//Do Nothing
111+
}
112+
return isPing;
113+
}
98114
}

TAK Server Plugin/Plugin/src/takserver-sender-plugin-mcs/src/main/java/tak/server/plugins/utilities/McsCoTConverter.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,4 +176,8 @@ private static Long convertTime(String time) {
176176

177177
return timeMs;
178178
}
179+
180+
public static Boolean messageIsFromPlugin(String message) {
181+
return message.contains(CoTMcsConverter.FROM_TAK);
182+
}
179183
}

0 commit comments

Comments
 (0)