diff --git a/docker-compose.yml b/docker-compose.yml index 7ea93d0..26db4b6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,10 +5,10 @@ services: DB_USER: ${PACKMATE_DB_USER:-packmate} DB_PASSWORD: ${PACKMATE_DB_PASSWORD:-K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb} DB_NAME: ${PACKMATE_DB_NAME:-packmate} - INTERFACE: ${PACKMATE_INTERFACE} + INTERFACE: ${PACKMATE_INTERFACE:-} LOCAL_IP: ${PACKMATE_LOCAL_IP} MODE: ${PACKMATE_MODE:-LIVE} - PCAP_FILE: ${PACKMATE_PCAP_FILE} + PCAP_FILE: ${PACKMATE_PCAP_FILE:-} WEB_LOGIN: ${PACKMATE_WEB_LOGIN:-BinaryBears} WEB_PASSWORD: ${PACKMATE_WEB_PASSWORD:-123456} OLD_STREAMS_CLEANUP_ENABLED: ${PACKMATE_OLD_STREAMS_CLEANUP_ENABLED:-false} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4d9ca16..ec991f9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/ru/serega6531/packmate/OldStreamsCleanupTask.java b/src/main/java/ru/serega6531/packmate/OldStreamsCleanupTask.java index 48fd059..729fffd 100644 --- a/src/main/java/ru/serega6531/packmate/OldStreamsCleanupTask.java +++ b/src/main/java/ru/serega6531/packmate/OldStreamsCleanupTask.java @@ -26,7 +26,7 @@ public class OldStreamsCleanupTask { @Scheduled(fixedDelayString = "PT${cleanup-interval}M", initialDelayString = "PT1M") public void cleanup() { ZonedDateTime before = ZonedDateTime.now().minus(oldStreamsThreshold, ChronoUnit.MINUTES); - log.info("Cleaning up old streams (before {})", before); + log.info("Cleaning up old non-favorite streams (before {})", before); long deleted = service.cleanupOldStreams(before); log.info("Deleted {} rows", deleted); } diff --git a/src/main/java/ru/serega6531/packmate/model/FoundPattern.java b/src/main/java/ru/serega6531/packmate/model/FoundPattern.java index 1bb1e02..8ec151a 100644 --- a/src/main/java/ru/serega6531/packmate/model/FoundPattern.java +++ b/src/main/java/ru/serega6531/packmate/model/FoundPattern.java @@ -28,7 +28,7 @@ public class FoundPattern { @GeneratedValue(generator = "found_pattern_generator") private Long id; - @ManyToOne + @ManyToOne(optional = false) @JoinColumn(name = "packet_id", nullable = false) @Setter private Packet packet; diff --git a/src/main/java/ru/serega6531/packmate/model/Packet.java b/src/main/java/ru/serega6531/packmate/model/Packet.java index 6bccc94..6ed12be 100644 --- a/src/main/java/ru/serega6531/packmate/model/Packet.java +++ b/src/main/java/ru/serega6531/packmate/model/Packet.java @@ -1,6 +1,5 @@ package ru.serega6531.packmate.model; -import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.*; import org.hibernate.Hibernate; import org.hibernate.annotations.GenericGenerator; @@ -37,11 +36,11 @@ public class Packet { @Transient private int ttl; - @Column(name = "stream_id") - @JsonIgnore - private Long streamId; + @ManyToOne(optional = false) + @JoinColumn(name = "stream_id", nullable = false) + private Stream stream; - @OneToMany(mappedBy = "packet", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany(mappedBy = "packet", cascade = CascadeType.ALL, orphanRemoval = true) private Set matches; private long timestamp; diff --git a/src/main/java/ru/serega6531/packmate/model/Stream.java b/src/main/java/ru/serega6531/packmate/model/Stream.java index ef8585d..9da546b 100644 --- a/src/main/java/ru/serega6531/packmate/model/Stream.java +++ b/src/main/java/ru/serega6531/packmate/model/Stream.java @@ -6,10 +6,7 @@ import org.hibernate.annotations.GenericGenerator; import ru.serega6531.packmate.model.enums.Protocol; import javax.persistence.*; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; @Getter @Setter @@ -36,8 +33,7 @@ public class Stream { private Protocol protocol; - @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) - @JoinColumn(name = "stream_id") + @OneToMany(mappedBy = "stream", cascade = CascadeType.ALL, orphanRemoval = true) @OrderBy("id") @ToString.Exclude private List packets; diff --git a/src/main/java/ru/serega6531/packmate/pcap/AbstractPcapWorker.java b/src/main/java/ru/serega6531/packmate/pcap/AbstractPcapWorker.java index 1f8eaa8..7056019 100644 --- a/src/main/java/ru/serega6531/packmate/pcap/AbstractPcapWorker.java +++ b/src/main/java/ru/serega6531/packmate/pcap/AbstractPcapWorker.java @@ -5,6 +5,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.concurrent.BasicThreadFactory; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; import org.pcap4j.core.BpfProgram; import org.pcap4j.core.PacketListener; import org.pcap4j.core.PcapHandle; @@ -46,8 +47,8 @@ public abstract class AbstractPcapWorker implements PcapWorker, PacketListener { private final ListMultimap unfinishedUdpStreams = ArrayListMultimap.create(); // в следующих мапах в значениях находится srcIp соответствующего пакета - private final SetMultimap> fins = HashMultimap.create(); - private final SetMultimap> acks = HashMultimap.create(); + private final SetMultimap> fins = HashMultimap.create(); + private final SetMultimap> acks = HashMultimap.create(); protected AbstractPcapWorker(ServicesService servicesService, StreamService streamService, @@ -182,8 +183,8 @@ public abstract class AbstractPcapWorker implements PcapWorker, PacketListener { * Udp не имеет фазы закрытия, поэтому закрывается только по таймауту */ private void checkTcpTermination(boolean ack, boolean fin, boolean rst, - ImmutablePair sourceIpAndPort, - ImmutablePair destIpAndPort, + Pair sourceIpAndPort, + Pair destIpAndPort, UnfinishedStream stream) { if (fin) { diff --git a/src/main/java/ru/serega6531/packmate/service/StreamService.java b/src/main/java/ru/serega6531/packmate/service/StreamService.java index cebba57..5256dde 100644 --- a/src/main/java/ru/serega6531/packmate/service/StreamService.java +++ b/src/main/java/ru/serega6531/packmate/service/StreamService.java @@ -118,6 +118,10 @@ public class StreamService { stream.setFoundPatterns(foundPatterns); stream.setPackets(optimizedPackets); + for (Packet packet : optimizedPackets) { + packet.setStream(stream); + } + Stream savedStream = save(stream); subscriptionService.broadcast(new SubscriptionMessage(SubscriptionMessageType.NEW_STREAM, streamToDto(savedStream)));