Исправлено сохранение данных
This commit is contained in:
@@ -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}
|
||||
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<FoundPattern> matches;
|
||||
|
||||
private long timestamp;
|
||||
|
||||
@@ -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<Packet> packets;
|
||||
|
||||
@@ -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<UnfinishedStream, ru.serega6531.packmate.model.Packet> unfinishedUdpStreams = ArrayListMultimap.create();
|
||||
|
||||
// в следующих мапах в значениях находится srcIp соответствующего пакета
|
||||
private final SetMultimap<UnfinishedStream, ImmutablePair<InetAddress, Integer>> fins = HashMultimap.create();
|
||||
private final SetMultimap<UnfinishedStream, ImmutablePair<InetAddress, Integer>> acks = HashMultimap.create();
|
||||
private final SetMultimap<UnfinishedStream, Pair<InetAddress, Integer>> fins = HashMultimap.create();
|
||||
private final SetMultimap<UnfinishedStream, Pair<InetAddress, Integer>> 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<InetAddress, Integer> sourceIpAndPort,
|
||||
ImmutablePair<InetAddress, Integer> destIpAndPort,
|
||||
Pair<InetAddress, Integer> sourceIpAndPort,
|
||||
Pair<InetAddress, Integer> destIpAndPort,
|
||||
UnfinishedStream stream) {
|
||||
|
||||
if (fin) {
|
||||
|
||||
@@ -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)));
|
||||
|
||||
Reference in New Issue
Block a user