Исправлено сохранение данных

This commit is contained in:
sshkurov
2022-01-31 02:09:27 +03:00
parent 560e0d444f
commit 3d06b25d7a
8 changed files with 20 additions and 20 deletions

View File

@@ -5,10 +5,10 @@ services:
DB_USER: ${PACKMATE_DB_USER:-packmate} DB_USER: ${PACKMATE_DB_USER:-packmate}
DB_PASSWORD: ${PACKMATE_DB_PASSWORD:-K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb} DB_PASSWORD: ${PACKMATE_DB_PASSWORD:-K604YnL3G1hp2RDkCZNjGpxbyNpNHTRb}
DB_NAME: ${PACKMATE_DB_NAME:-packmate} DB_NAME: ${PACKMATE_DB_NAME:-packmate}
INTERFACE: ${PACKMATE_INTERFACE} INTERFACE: ${PACKMATE_INTERFACE:-}
LOCAL_IP: ${PACKMATE_LOCAL_IP} LOCAL_IP: ${PACKMATE_LOCAL_IP}
MODE: ${PACKMATE_MODE:-LIVE} MODE: ${PACKMATE_MODE:-LIVE}
PCAP_FILE: ${PACKMATE_PCAP_FILE} PCAP_FILE: ${PACKMATE_PCAP_FILE:-}
WEB_LOGIN: ${PACKMATE_WEB_LOGIN:-BinaryBears} WEB_LOGIN: ${PACKMATE_WEB_LOGIN:-BinaryBears}
WEB_PASSWORD: ${PACKMATE_WEB_PASSWORD:-123456} WEB_PASSWORD: ${PACKMATE_WEB_PASSWORD:-123456}
OLD_STREAMS_CLEANUP_ENABLED: ${PACKMATE_OLD_STREAMS_CLEANUP_ENABLED:-false} OLD_STREAMS_CLEANUP_ENABLED: ${PACKMATE_OLD_STREAMS_CLEANUP_ENABLED:-false}

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@@ -26,7 +26,7 @@ public class OldStreamsCleanupTask {
@Scheduled(fixedDelayString = "PT${cleanup-interval}M", initialDelayString = "PT1M") @Scheduled(fixedDelayString = "PT${cleanup-interval}M", initialDelayString = "PT1M")
public void cleanup() { public void cleanup() {
ZonedDateTime before = ZonedDateTime.now().minus(oldStreamsThreshold, ChronoUnit.MINUTES); 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); long deleted = service.cleanupOldStreams(before);
log.info("Deleted {} rows", deleted); log.info("Deleted {} rows", deleted);
} }

View File

@@ -28,7 +28,7 @@ public class FoundPattern {
@GeneratedValue(generator = "found_pattern_generator") @GeneratedValue(generator = "found_pattern_generator")
private Long id; private Long id;
@ManyToOne @ManyToOne(optional = false)
@JoinColumn(name = "packet_id", nullable = false) @JoinColumn(name = "packet_id", nullable = false)
@Setter @Setter
private Packet packet; private Packet packet;

View File

@@ -1,6 +1,5 @@
package ru.serega6531.packmate.model; package ru.serega6531.packmate.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.*; import lombok.*;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.GenericGenerator;
@@ -37,11 +36,11 @@ public class Packet {
@Transient @Transient
private int ttl; private int ttl;
@Column(name = "stream_id") @ManyToOne(optional = false)
@JsonIgnore @JoinColumn(name = "stream_id", nullable = false)
private Long streamId; private Stream stream;
@OneToMany(mappedBy = "packet", cascade = CascadeType.ALL, fetch = FetchType.EAGER) @OneToMany(mappedBy = "packet", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<FoundPattern> matches; private Set<FoundPattern> matches;
private long timestamp; private long timestamp;

View File

@@ -6,10 +6,7 @@ import org.hibernate.annotations.GenericGenerator;
import ru.serega6531.packmate.model.enums.Protocol; import ru.serega6531.packmate.model.enums.Protocol;
import javax.persistence.*; import javax.persistence.*;
import java.util.HashSet; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@Getter @Getter
@Setter @Setter
@@ -36,8 +33,7 @@ public class Stream {
private Protocol protocol; private Protocol protocol;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @OneToMany(mappedBy = "stream", cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "stream_id")
@OrderBy("id") @OrderBy("id")
@ToString.Exclude @ToString.Exclude
private List<Packet> packets; private List<Packet> packets;

View File

@@ -5,6 +5,7 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.concurrent.BasicThreadFactory; import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.pcap4j.core.BpfProgram; import org.pcap4j.core.BpfProgram;
import org.pcap4j.core.PacketListener; import org.pcap4j.core.PacketListener;
import org.pcap4j.core.PcapHandle; import org.pcap4j.core.PcapHandle;
@@ -46,8 +47,8 @@ public abstract class AbstractPcapWorker implements PcapWorker, PacketListener {
private final ListMultimap<UnfinishedStream, ru.serega6531.packmate.model.Packet> unfinishedUdpStreams = ArrayListMultimap.create(); private final ListMultimap<UnfinishedStream, ru.serega6531.packmate.model.Packet> unfinishedUdpStreams = ArrayListMultimap.create();
// в следующих мапах в значениях находится srcIp соответствующего пакета // в следующих мапах в значениях находится srcIp соответствующего пакета
private final SetMultimap<UnfinishedStream, ImmutablePair<InetAddress, Integer>> fins = HashMultimap.create(); private final SetMultimap<UnfinishedStream, Pair<InetAddress, Integer>> fins = HashMultimap.create();
private final SetMultimap<UnfinishedStream, ImmutablePair<InetAddress, Integer>> acks = HashMultimap.create(); private final SetMultimap<UnfinishedStream, Pair<InetAddress, Integer>> acks = HashMultimap.create();
protected AbstractPcapWorker(ServicesService servicesService, protected AbstractPcapWorker(ServicesService servicesService,
StreamService streamService, StreamService streamService,
@@ -182,8 +183,8 @@ public abstract class AbstractPcapWorker implements PcapWorker, PacketListener {
* Udp не имеет фазы закрытия, поэтому закрывается только по таймауту * Udp не имеет фазы закрытия, поэтому закрывается только по таймауту
*/ */
private void checkTcpTermination(boolean ack, boolean fin, boolean rst, private void checkTcpTermination(boolean ack, boolean fin, boolean rst,
ImmutablePair<InetAddress, Integer> sourceIpAndPort, Pair<InetAddress, Integer> sourceIpAndPort,
ImmutablePair<InetAddress, Integer> destIpAndPort, Pair<InetAddress, Integer> destIpAndPort,
UnfinishedStream stream) { UnfinishedStream stream) {
if (fin) { if (fin) {

View File

@@ -118,6 +118,10 @@ public class StreamService {
stream.setFoundPatterns(foundPatterns); stream.setFoundPatterns(foundPatterns);
stream.setPackets(optimizedPackets); stream.setPackets(optimizedPackets);
for (Packet packet : optimizedPackets) {
packet.setStream(stream);
}
Stream savedStream = save(stream); Stream savedStream = save(stream);
subscriptionService.broadcast(new SubscriptionMessage(SubscriptionMessageType.NEW_STREAM, streamToDto(savedStream))); subscriptionService.broadcast(new SubscriptionMessage(SubscriptionMessageType.NEW_STREAM, streamToDto(savedStream)));