From 4ada121c9babcfe8b54033bd080fea79c17011c9 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Sun, 28 Apr 2019 19:08:37 +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=20UnfinishedStream?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/serega6531/packmate/PcapWorker.java | 5 +++ .../java/ru/serega6531/packmate/Protocol.java | 5 +++ .../ru/serega6531/packmate/model/Stream.java | 3 ++ .../packmate/model/UnfinishedStream.java | 34 +++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 src/main/java/ru/serega6531/packmate/Protocol.java create mode 100644 src/main/java/ru/serega6531/packmate/model/UnfinishedStream.java diff --git a/src/main/java/ru/serega6531/packmate/PcapWorker.java b/src/main/java/ru/serega6531/packmate/PcapWorker.java index 62fd253..cbcb01d 100644 --- a/src/main/java/ru/serega6531/packmate/PcapWorker.java +++ b/src/main/java/ru/serega6531/packmate/PcapWorker.java @@ -14,13 +14,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import ru.serega6531.packmate.model.CtfService; +import ru.serega6531.packmate.model.UnfinishedStream; import ru.serega6531.packmate.service.PacketService; import ru.serega6531.packmate.service.PatternService; import ru.serega6531.packmate.service.ServicesService; import ru.serega6531.packmate.service.StreamService; import javax.annotation.PreDestroy; +import java.util.HashSet; import java.util.Optional; +import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeoutException; @@ -40,6 +43,8 @@ public class PcapWorker { private final String localIp; + private final Set unfinishedStreams = new HashSet<>(); + @Autowired public PcapWorker(ServicesService servicesService, StreamService streamService, diff --git a/src/main/java/ru/serega6531/packmate/Protocol.java b/src/main/java/ru/serega6531/packmate/Protocol.java new file mode 100644 index 0000000..9ceecc6 --- /dev/null +++ b/src/main/java/ru/serega6531/packmate/Protocol.java @@ -0,0 +1,5 @@ +package ru.serega6531.packmate; + +public enum Protocol { + TCP, UDP +} diff --git a/src/main/java/ru/serega6531/packmate/model/Stream.java b/src/main/java/ru/serega6531/packmate/model/Stream.java index 25c94e2..d034305 100644 --- a/src/main/java/ru/serega6531/packmate/model/Stream.java +++ b/src/main/java/ru/serega6531/packmate/model/Stream.java @@ -2,6 +2,7 @@ package ru.serega6531.packmate.model; import lombok.Data; import org.hibernate.annotations.GenericGenerator; +import ru.serega6531.packmate.Protocol; import javax.persistence.*; import java.util.List; @@ -27,6 +28,8 @@ public class Stream { @JoinColumn(name = "service_id", nullable = false) private CtfService service; + private Protocol protocol; + @OneToMany(mappedBy = "stream", cascade = CascadeType.ALL, orphanRemoval = true) private List packets; diff --git a/src/main/java/ru/serega6531/packmate/model/UnfinishedStream.java b/src/main/java/ru/serega6531/packmate/model/UnfinishedStream.java new file mode 100644 index 0000000..cf264fd --- /dev/null +++ b/src/main/java/ru/serega6531/packmate/model/UnfinishedStream.java @@ -0,0 +1,34 @@ +package ru.serega6531.packmate.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import ru.serega6531.packmate.Protocol; + +import java.net.Inet4Address; + +@AllArgsConstructor +@Getter +public class UnfinishedStream { + + private Inet4Address firstIp; + private Inet4Address secondIp; + private int firstPort; + private int secondPort; + private Protocol protocol; + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof UnfinishedStream)) { + return false; + } + + UnfinishedStream o = (UnfinishedStream) obj; + + boolean ipEq1 = firstIp.equals(o.firstIp) && secondIp.equals(o.secondIp); + boolean ipEq2 = firstIp.equals(o.secondIp) && secondIp.equals(o.firstIp); + boolean portEq1 = firstPort == o.firstPort && secondPort == o.secondPort; + boolean portEq2 = firstPort == o.secondPort && secondPort == o.firstPort; + + return (ipEq1 || ipEq2) && (portEq1 || portEq2) && protocol == o.protocol; + } +}