Добавлена опция игнорирования пустых пакетов
This commit is contained in:
@@ -130,14 +130,14 @@ public class PcapWorker {
|
|||||||
ack = header.getAck();
|
ack = header.getAck();
|
||||||
fin = header.getFin();
|
fin = header.getFin();
|
||||||
rst = header.getRst();
|
rst = header.getRst();
|
||||||
content = packet.getRawData();
|
content = packet.getPayload() != null ? packet.getPayload().getRawData() : new byte[0];
|
||||||
protocol = Protocol.TCP;
|
protocol = Protocol.TCP;
|
||||||
} else if (rawPacket.contains(UdpPacket.class)) {
|
} else if (rawPacket.contains(UdpPacket.class)) {
|
||||||
final UdpPacket packet = rawPacket.get(UdpPacket.class);
|
final UdpPacket packet = rawPacket.get(UdpPacket.class);
|
||||||
final UdpPacket.UdpHeader header = packet.getHeader();
|
final UdpPacket.UdpHeader header = packet.getHeader();
|
||||||
sourcePort = header.getSrcPort().valueAsInt();
|
sourcePort = header.getSrcPort().valueAsInt();
|
||||||
destPort = header.getDstPort().valueAsInt();
|
destPort = header.getDstPort().valueAsInt();
|
||||||
content = packet.getRawData();
|
content = packet.getPayload() != null ? packet.getPayload().getRawData() : new byte[0];
|
||||||
protocol = Protocol.UDP;
|
protocol = Protocol.UDP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,9 +157,11 @@ public class PcapWorker {
|
|||||||
.content(content)
|
.content(content)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
|
||||||
if (unfinishedStreams.containsKey(stream)) {
|
if (unfinishedStreams.containsKey(stream)) {
|
||||||
unfinishedStreams.get(stream).add(packet);
|
unfinishedStreams.get(stream).add(packet);
|
||||||
} else {
|
} else {
|
||||||
|
log.info("Начат новый стрим");
|
||||||
List<ru.serega6531.packmate.model.Packet> packets = new ArrayList<>();
|
List<ru.serega6531.packmate.model.Packet> packets = new ArrayList<>();
|
||||||
packets.add(packet);
|
packets.add(packet);
|
||||||
unfinishedStreams.put(stream, packets);
|
unfinishedStreams.put(stream, packets);
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ public class StreamService {
|
|||||||
private final StreamSubscriptionService subscriptionService;
|
private final StreamSubscriptionService subscriptionService;
|
||||||
|
|
||||||
private final String localIp;
|
private final String localIp;
|
||||||
|
private final boolean ignoreEmptyPackets;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public StreamService(StreamRepository repository,
|
public StreamService(StreamRepository repository,
|
||||||
@@ -30,13 +31,15 @@ public class StreamService {
|
|||||||
ServicesService servicesService,
|
ServicesService servicesService,
|
||||||
PacketService packetService,
|
PacketService packetService,
|
||||||
StreamSubscriptionService subscriptionService,
|
StreamSubscriptionService subscriptionService,
|
||||||
@Value("${local-ip}") String localIp) {
|
@Value("${local-ip}") String localIp,
|
||||||
|
@Value("${ignore-empty-packets}") boolean ignoreEmptyPackets) {
|
||||||
this.repository = repository;
|
this.repository = repository;
|
||||||
this.patternService = patternService;
|
this.patternService = patternService;
|
||||||
this.servicesService = servicesService;
|
this.servicesService = servicesService;
|
||||||
this.packetService = packetService;
|
this.packetService = packetService;
|
||||||
this.subscriptionService = subscriptionService;
|
this.subscriptionService = subscriptionService;
|
||||||
this.localIp = localIp;
|
this.localIp = localIp;
|
||||||
|
this.ignoreEmptyPackets = ignoreEmptyPackets;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -61,6 +64,15 @@ public class StreamService {
|
|||||||
stream.setEndTimestamp(packets.get(packets.size() - 1).getTimestamp());
|
stream.setEndTimestamp(packets.get(packets.size() - 1).getTimestamp());
|
||||||
stream.setService(serviceOptional.get());
|
stream.setService(serviceOptional.get());
|
||||||
|
|
||||||
|
if(ignoreEmptyPackets) {
|
||||||
|
packets.removeIf(packet -> packet.getContent().length == 0);
|
||||||
|
|
||||||
|
if(packets.isEmpty()) {
|
||||||
|
log.info("Стрим состоит только из пустых пакетов и не будет сохранен");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Stream savedStream = save(stream);
|
Stream savedStream = save(stream);
|
||||||
|
|
||||||
List<ru.serega6531.packmate.model.Packet> savedPackets = new ArrayList<>();
|
List<ru.serega6531.packmate.model.Packet> savedPackets = new ArrayList<>();
|
||||||
|
|||||||
@@ -12,10 +12,11 @@ spring:
|
|||||||
temp:
|
temp:
|
||||||
use_jdbc_metadata_defaults: false
|
use_jdbc_metadata_defaults: false
|
||||||
|
|
||||||
enable-capture: false
|
enable-capture: true
|
||||||
interface-name: enp0s31f6
|
interface-name: enp0s31f6
|
||||||
local-ip: "192.168.0.125"
|
local-ip: "192.168.0.125"
|
||||||
account-login: BinaryBears
|
account-login: BinaryBears
|
||||||
account-password: 123456
|
account-password: 123456
|
||||||
udp-stream-timeout: 20 # секунд
|
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