From 86999903869910c7915c189dfb21e62f84009ee6 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Fri, 24 May 2019 16:45:16 +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=20ttl=20=D1=81=D1=82=D1=80=D0=B8=D0=BC=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/serega6531/packmate/PcapWorker.java | 3 +++ src/main/java/ru/serega6531/packmate/model/Packet.java | 4 ++++ src/main/java/ru/serega6531/packmate/model/Stream.java | 2 ++ .../java/ru/serega6531/packmate/service/StreamService.java | 7 +++++++ 4 files changed, 16 insertions(+) diff --git a/src/main/java/ru/serega6531/packmate/PcapWorker.java b/src/main/java/ru/serega6531/packmate/PcapWorker.java index 3bb509f..0f1c19d 100644 --- a/src/main/java/ru/serega6531/packmate/PcapWorker.java +++ b/src/main/java/ru/serega6531/packmate/PcapWorker.java @@ -95,6 +95,7 @@ public class PcapWorker implements PacketListener { String destIpString = null; int sourcePort = -1; int destPort = -1; + byte ttl = 0; byte[] content = null; Protocol protocol = null; boolean ack = false; @@ -107,6 +108,7 @@ public class PcapWorker implements PacketListener { destIp = header.getDstAddr(); sourceIpString = header.getSrcAddr().getHostAddress(); destIpString = header.getDstAddr().getHostAddress(); + ttl = header.getTtl(); } if (rawPacket.contains(TcpPacket.class)) { @@ -142,6 +144,7 @@ public class PcapWorker implements PacketListener { ru.serega6531.packmate.model.Packet packet = ru.serega6531.packmate.model.Packet.builder() .tempId(packetIdCounter++) + .ttl(ttl) .timestamp(System.currentTimeMillis()) .incoming(incoming) .content(content) diff --git a/src/main/java/ru/serega6531/packmate/model/Packet.java b/src/main/java/ru/serega6531/packmate/model/Packet.java index 60fbd55..6976e0c 100644 --- a/src/main/java/ru/serega6531/packmate/model/Packet.java +++ b/src/main/java/ru/serega6531/packmate/model/Packet.java @@ -33,6 +33,10 @@ public class Packet { @JsonIgnore private Long tempId; + @Transient + @JsonIgnore + private byte ttl; + @ManyToOne @JoinColumn(name = "stream_id", nullable = false) @JsonIgnore diff --git a/src/main/java/ru/serega6531/packmate/model/Stream.java b/src/main/java/ru/serega6531/packmate/model/Stream.java index 8c5bb65..fcce62f 100644 --- a/src/main/java/ru/serega6531/packmate/model/Stream.java +++ b/src/main/java/ru/serega6531/packmate/model/Stream.java @@ -45,4 +45,6 @@ public class Stream { private boolean favorite; + private byte ttl; + } diff --git a/src/main/java/ru/serega6531/packmate/service/StreamService.java b/src/main/java/ru/serega6531/packmate/service/StreamService.java index 804b5bc..772e516 100644 --- a/src/main/java/ru/serega6531/packmate/service/StreamService.java +++ b/src/main/java/ru/serega6531/packmate/service/StreamService.java @@ -76,8 +76,13 @@ public class StreamService { return false; } + Optional firstIncoming = packets.stream() + .filter(Packet::isIncoming) + .findFirst(); + Stream stream = new Stream(); stream.setProtocol(unfinishedStream.getProtocol()); + stream.setTtl(firstIncoming.isPresent() ? firstIncoming.get().getTtl() : 0); stream.setStartTimestamp(packets.get(0).getTimestamp()); stream.setEndTimestamp(packets.get(packets.size() - 1).getTimestamp()); stream.setService(serviceOptional.get()); @@ -183,6 +188,8 @@ public class StreamService { IOUtils.copy(gzipStream, out); byte[] newContent = ArrayUtils.addAll(httpHeader, out.toByteArray()); + log.debug("Разархивирован gzip: {} -> {} байт", gzipBytes.length, out.size()); + return Packet.builder() .incoming(false) .timestamp(packets.get(0).getTimestamp())