Исправлено сохранение данных
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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)));
|
||||||
|
|||||||
Reference in New Issue
Block a user