Добавлена опция игнорирования пустых пакетов

This commit is contained in:
serega6531
2019-05-01 21:10:36 +03:00
parent b4a9903d1b
commit bcc1221cbe
3 changed files with 20 additions and 5 deletions

View File

@@ -130,14 +130,14 @@ public class PcapWorker {
ack = header.getAck();
fin = header.getFin();
rst = header.getRst();
content = packet.getRawData();
content = packet.getPayload() != null ? packet.getPayload().getRawData() : new byte[0];
protocol = Protocol.TCP;
} else if (rawPacket.contains(UdpPacket.class)) {
final UdpPacket packet = rawPacket.get(UdpPacket.class);
final UdpPacket.UdpHeader header = packet.getHeader();
sourcePort = header.getSrcPort().valueAsInt();
destPort = header.getDstPort().valueAsInt();
content = packet.getRawData();
content = packet.getPayload() != null ? packet.getPayload().getRawData() : new byte[0];
protocol = Protocol.UDP;
}
@@ -157,9 +157,11 @@ public class PcapWorker {
.content(content)
.build();
if (unfinishedStreams.containsKey(stream)) {
unfinishedStreams.get(stream).add(packet);
} else {
log.info("Начат новый стрим");
List<ru.serega6531.packmate.model.Packet> packets = new ArrayList<>();
packets.add(packet);
unfinishedStreams.put(stream, packets);

View File

@@ -23,6 +23,7 @@ public class StreamService {
private final StreamSubscriptionService subscriptionService;
private final String localIp;
private final boolean ignoreEmptyPackets;
@Autowired
public StreamService(StreamRepository repository,
@@ -30,13 +31,15 @@ public class StreamService {
ServicesService servicesService,
PacketService packetService,
StreamSubscriptionService subscriptionService,
@Value("${local-ip}") String localIp) {
@Value("${local-ip}") String localIp,
@Value("${ignore-empty-packets}") boolean ignoreEmptyPackets) {
this.repository = repository;
this.patternService = patternService;
this.servicesService = servicesService;
this.packetService = packetService;
this.subscriptionService = subscriptionService;
this.localIp = localIp;
this.ignoreEmptyPackets = ignoreEmptyPackets;
}
@Transactional
@@ -61,6 +64,15 @@ public class StreamService {
stream.setEndTimestamp(packets.get(packets.size() - 1).getTimestamp());
stream.setService(serviceOptional.get());
if(ignoreEmptyPackets) {
packets.removeIf(packet -> packet.getContent().length == 0);
if(packets.isEmpty()) {
log.info("Стрим состоит только из пустых пакетов и не будет сохранен");
return;
}
}
Stream savedStream = save(stream);
List<ru.serega6531.packmate.model.Packet> savedPackets = new ArrayList<>();