From bcc1221cbe249470a04af1738984d189967dcf72 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Wed, 1 May 2019 21:10:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BE=D0=BF=D1=86=D0=B8=D1=8F=20=D0=B8=D0=B3?= =?UTF-8?q?=D0=BD=D0=BE=D1=80=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=83=D1=81=D1=82=D1=8B=D1=85=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=BA=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ru/serega6531/packmate/PcapWorker.java | 6 ++++-- .../serega6531/packmate/service/StreamService.java | 14 +++++++++++++- src/main/resources/application.yml | 5 +++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/ru/serega6531/packmate/PcapWorker.java b/src/main/java/ru/serega6531/packmate/PcapWorker.java index 5106e62..be69232 100644 --- a/src/main/java/ru/serega6531/packmate/PcapWorker.java +++ b/src/main/java/ru/serega6531/packmate/PcapWorker.java @@ -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 packets = new ArrayList<>(); packets.add(packet); unfinishedStreams.put(stream, packets); diff --git a/src/main/java/ru/serega6531/packmate/service/StreamService.java b/src/main/java/ru/serega6531/packmate/service/StreamService.java index 2ce84af..061f2c9 100644 --- a/src/main/java/ru/serega6531/packmate/service/StreamService.java +++ b/src/main/java/ru/serega6531/packmate/service/StreamService.java @@ -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 savedPackets = new ArrayList<>(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 33dbc83..cba2233 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -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 \ No newline at end of file +udp-stream-check-interval: 10 +ignore-empty-packets: true \ No newline at end of file