Добавлен UnfinishedStream

This commit is contained in:
serega6531
2019-04-28 19:08:37 +03:00
parent 5f668baf05
commit 4ada121c9b
4 changed files with 47 additions and 0 deletions

View File

@@ -14,13 +14,16 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.serega6531.packmate.model.CtfService; import ru.serega6531.packmate.model.CtfService;
import ru.serega6531.packmate.model.UnfinishedStream;
import ru.serega6531.packmate.service.PacketService; import ru.serega6531.packmate.service.PacketService;
import ru.serega6531.packmate.service.PatternService; import ru.serega6531.packmate.service.PatternService;
import ru.serega6531.packmate.service.ServicesService; import ru.serega6531.packmate.service.ServicesService;
import ru.serega6531.packmate.service.StreamService; import ru.serega6531.packmate.service.StreamService;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
import java.util.HashSet;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
@@ -40,6 +43,8 @@ public class PcapWorker {
private final String localIp; private final String localIp;
private final Set<UnfinishedStream> unfinishedStreams = new HashSet<>();
@Autowired @Autowired
public PcapWorker(ServicesService servicesService, public PcapWorker(ServicesService servicesService,
StreamService streamService, StreamService streamService,

View File

@@ -0,0 +1,5 @@
package ru.serega6531.packmate;
public enum Protocol {
TCP, UDP
}

View File

@@ -2,6 +2,7 @@ package ru.serega6531.packmate.model;
import lombok.Data; import lombok.Data;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.GenericGenerator;
import ru.serega6531.packmate.Protocol;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
@@ -27,6 +28,8 @@ public class Stream {
@JoinColumn(name = "service_id", nullable = false) @JoinColumn(name = "service_id", nullable = false)
private CtfService service; private CtfService service;
private Protocol protocol;
@OneToMany(mappedBy = "stream", cascade = CascadeType.ALL, orphanRemoval = true) @OneToMany(mappedBy = "stream", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Packet> packets; private List<Packet> packets;

View File

@@ -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;
}
}