From 5d4ab29f988b3063f007f36d3a92f3e7c0d04109 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Tue, 4 Feb 2020 23:06:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- .../packmate/ApplicationConfiguration.java | 3 ++- .../ru/serega6531/packmate/PcapWorker.java | 2 +- .../packmate/service/StreamOptimizer.java | 19 ++++++++++--------- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index d2fa0cb..170465c 100644 --- a/build.gradle +++ b/build.gradle @@ -27,8 +27,8 @@ dependencies { implementation 'org.springframework.session:spring-session-core' compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7' compile group: 'commons-io', name: 'commons-io', version: '2.6' - compile 'org.pcap4j:pcap4j-core:1.+' - compile 'org.pcap4j:pcap4j-packetfactory-static:1.+' + compile 'org.pcap4j:pcap4j-core:1.8.2' + compile 'org.pcap4j:pcap4j-packetfactory-static:1.8.2' compile group: 'com.google.guava', name: 'guava', version: '28.2-jre' compileOnly 'org.projectlombok:lombok' runtimeOnly 'org.springframework.boot:spring-boot-devtools' diff --git a/src/main/java/ru/serega6531/packmate/ApplicationConfiguration.java b/src/main/java/ru/serega6531/packmate/ApplicationConfiguration.java index f3863d9..ee7e15f 100644 --- a/src/main/java/ru/serega6531/packmate/ApplicationConfiguration.java +++ b/src/main/java/ru/serega6531/packmate/ApplicationConfiguration.java @@ -33,7 +33,8 @@ public class ApplicationConfiguration extends WebSecurityConfigurerAdapter imple @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() - .withUser(login).password(passwordEncoder().encode(password)) + .withUser(login) + .password(passwordEncoder().encode(password)) .authorities("ROLE_USER"); } diff --git a/src/main/java/ru/serega6531/packmate/PcapWorker.java b/src/main/java/ru/serega6531/packmate/PcapWorker.java index 02468a0..b3fb8ac 100644 --- a/src/main/java/ru/serega6531/packmate/PcapWorker.java +++ b/src/main/java/ru/serega6531/packmate/PcapWorker.java @@ -44,7 +44,7 @@ public class PcapWorker implements PacketListener { private final ListMultimap unfinishedStreams = ArrayListMultimap.create(); - // в следующих мапах в Set находится srcIp соответствующего пакета + // в следующих мапах в значениях находится srcIp соответствующего пакета private final SetMultimap> fins = HashMultimap.create(); private final SetMultimap> acks = HashMultimap.create(); diff --git a/src/main/java/ru/serega6531/packmate/service/StreamOptimizer.java b/src/main/java/ru/serega6531/packmate/service/StreamOptimizer.java index 482d702..301e5fb 100644 --- a/src/main/java/ru/serega6531/packmate/service/StreamOptimizer.java +++ b/src/main/java/ru/serega6531/packmate/service/StreamOptimizer.java @@ -58,8 +58,7 @@ class StreamOptimizer { Packet packet = packets.get(i); if (packet.isIncoming() != incoming) { if (packetsInRow > 1) { - final List cut = packets.subList(start, i); - compress(cut, incoming); + compress(start, i); i++; // продвигаем указатель на следующий после склеенного блок } @@ -73,17 +72,18 @@ class StreamOptimizer { } if (packetsInRow > 1) { - final List cut = packets.subList(start, packets.size()); - compress(cut, incoming); + compress(start, packets.size()); } } /** - * Сжать кусок cut в один пакет + * Сжать кусок со start по end в один пакет */ - private void compress(List cut, boolean incoming) { + private void compress(int start, int end) { + final List cut = packets.subList(start, end); final long timestamp = cut.get(0).getTimestamp(); final boolean ungzipped = cut.stream().anyMatch(Packet::isUngzipped); + boolean incoming = cut.get(0).isIncoming(); //noinspection OptionalGetWithoutIsPresent final byte[] content = cut.stream() .map(Packet::getContent) @@ -91,7 +91,7 @@ class StreamOptimizer { .get(); packets.removeAll(cut); - packets.add(Packet.builder() + packets.add(start, Packet.builder() .incoming(incoming) .timestamp(timestamp) .ungzipped(ungzipped) @@ -140,7 +140,7 @@ class StreamOptimizer { if (packet.isIncoming() && gzipStarted) { // поток gzip закончился gzipEndPacket = i - 1; - if(extractGzip(gzipStartPacket, gzipEndPacket)) { + if (extractGzip(gzipStartPacket, gzipEndPacket)) { gzipStarted = false; i = gzipStartPacket + 1; // продвигаем указатель на следующий после склеенного блок } @@ -152,7 +152,7 @@ class StreamOptimizer { if (http && gzipStarted) { // начался новый http пакет, заканчиваем старый gzip поток gzipEndPacket = i - 1; - if(extractGzip(gzipStartPacket, gzipEndPacket)) { + if (extractGzip(gzipStartPacket, gzipEndPacket)) { gzipStarted = false; i = gzipStartPacket + 1; // продвигаем указатель на следующий после склеенного блок } @@ -176,6 +176,7 @@ class StreamOptimizer { /** * Попытаться распаковать кусок пакетов с gzip body и вставить результат на их место + * * @return получилось ли распаковать */ private boolean extractGzip(int gzipStartPacket, int gzipEndPacket) {