Добавлена опция игнорирования пустых пакетов
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -12,10 +12,11 @@ spring:
|
||||
temp:
|
||||
use_jdbc_metadata_defaults: false
|
||||
|
||||
enable-capture: false
|
||||
enable-capture: true
|
||||
interface-name: enp0s31f6
|
||||
local-ip: "192.168.0.125"
|
||||
account-login: BinaryBears
|
||||
account-password: 123456
|
||||
udp-stream-timeout: 20 # секунд
|
||||
udp-stream-check-interval: 10
|
||||
udp-stream-check-interval: 10
|
||||
ignore-empty-packets: true
|
||||
Reference in New Issue
Block a user