Refactor code
This commit is contained in:
@@ -1,13 +1,18 @@
|
||||
package ru.serega6531.packmate.controller;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import ru.serega6531.packmate.model.Pattern;
|
||||
import ru.serega6531.packmate.model.pojo.PatternDto;
|
||||
import ru.serega6531.packmate.service.PatternService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/pattern/")
|
||||
@@ -24,7 +29,7 @@ public class PatternController {
|
||||
public List<PatternDto> getPatterns() {
|
||||
return service.findAll()
|
||||
.stream().map(service::toDto)
|
||||
.collect(Collectors.toList());
|
||||
.toList();
|
||||
}
|
||||
|
||||
@PostMapping("/{id}")
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
package ru.serega6531.packmate.controller;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import ru.serega6531.packmate.model.CtfService;
|
||||
import ru.serega6531.packmate.model.pojo.ServiceDto;
|
||||
import ru.serega6531.packmate.service.ServicesService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/service/")
|
||||
@@ -24,7 +29,7 @@ public class ServiceController {
|
||||
public List<ServiceDto> getServices() {
|
||||
return service.findAll().stream()
|
||||
.map(service::toDto)
|
||||
.collect(Collectors.toList());
|
||||
.toList();
|
||||
}
|
||||
|
||||
@DeleteMapping("/{port}")
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
package ru.serega6531.packmate.controller;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import ru.serega6531.packmate.model.pojo.StreamPagination;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import ru.serega6531.packmate.model.pojo.StreamDto;
|
||||
import ru.serega6531.packmate.model.pojo.StreamPagination;
|
||||
import ru.serega6531.packmate.service.StreamService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/stream/")
|
||||
@@ -25,14 +28,14 @@ public class StreamController {
|
||||
public List<StreamDto> getStreams(@RequestBody StreamPagination pagination) {
|
||||
return service.findAll(pagination, Optional.empty(), pagination.isFavorites()).stream()
|
||||
.map(service::streamToDto)
|
||||
.collect(Collectors.toList());
|
||||
.toList();
|
||||
}
|
||||
|
||||
@PostMapping("/{port}")
|
||||
public List<StreamDto> getStreams(@PathVariable int port, @RequestBody StreamPagination pagination) {
|
||||
return service.findAll(pagination, Optional.of(port), pagination.isFavorites()).stream()
|
||||
.map(service::streamToDto)
|
||||
.collect(Collectors.toList());
|
||||
.toList();
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/favorite")
|
||||
|
||||
@@ -1,23 +1,8 @@
|
||||
package ru.serega6531.packmate.model.pojo;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Getter
|
||||
public class CountersHolder {
|
||||
|
||||
private final Map<Integer, Integer> servicesPackets;
|
||||
private final Map<Integer, Integer> servicesStreams;
|
||||
|
||||
private final int totalPackets;
|
||||
private final int totalStreams;
|
||||
|
||||
public CountersHolder(Map<Integer, Integer> servicesPackets, Map<Integer, Integer> servicesStreams,
|
||||
public record CountersHolder(Map<Integer, Integer> servicesPackets, Map<Integer, Integer> servicesStreams,
|
||||
int totalPackets, int totalStreams) {
|
||||
this.servicesPackets = servicesPackets;
|
||||
this.servicesStreams = servicesStreams;
|
||||
this.totalPackets = totalPackets;
|
||||
this.totalStreams = totalStreams;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,29 +1,18 @@
|
||||
package ru.serega6531.packmate.model.pojo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import ru.serega6531.packmate.model.enums.Protocol;
|
||||
|
||||
import java.net.InetAddress;
|
||||
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class UnfinishedStream {
|
||||
|
||||
private final InetAddress firstIp;
|
||||
private final InetAddress secondIp;
|
||||
private final int firstPort;
|
||||
private final int secondPort;
|
||||
private final Protocol protocol;
|
||||
public record UnfinishedStream(InetAddress firstIp, InetAddress secondIp, int firstPort, int secondPort,
|
||||
Protocol protocol) {
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (!(obj instanceof UnfinishedStream)) {
|
||||
if (!(obj instanceof UnfinishedStream o)) {
|
||||
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;
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
package ru.serega6531.packmate.pcap;
|
||||
|
||||
import org.pcap4j.core.PcapNativeException;
|
||||
import ru.serega6531.packmate.model.enums.Protocol;
|
||||
|
||||
public class NoOpPcapWorker implements PcapWorker {
|
||||
@Override
|
||||
public void start() throws PcapNativeException {
|
||||
public void start() {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.serega6531.packmate.service;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -15,11 +16,13 @@ import ru.serega6531.packmate.model.pojo.PatternDto;
|
||||
import ru.serega6531.packmate.model.pojo.SubscriptionMessage;
|
||||
import ru.serega6531.packmate.repository.PatternRepository;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import java.time.Instant;
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -63,7 +66,7 @@ public class PatternService {
|
||||
.filter(p -> p.getServiceId() == null || p.getServiceId().equals(service.getPort()))
|
||||
.filter(p -> p.getActionType() == actionType)
|
||||
.filter(p -> p.getDirectionType() == directionType || p.getDirectionType() == PatternDirectionType.BOTH)
|
||||
.collect(Collectors.toList());
|
||||
.toList();
|
||||
return new PatternMatcher(bytes, list).findMatches();
|
||||
}
|
||||
|
||||
|
||||
@@ -13,11 +13,19 @@ import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import ru.serega6531.packmate.model.*;
|
||||
import ru.serega6531.packmate.model.CtfService;
|
||||
import ru.serega6531.packmate.model.FoundPattern;
|
||||
import ru.serega6531.packmate.model.Packet;
|
||||
import ru.serega6531.packmate.model.Pattern;
|
||||
import ru.serega6531.packmate.model.Stream;
|
||||
import ru.serega6531.packmate.model.enums.PatternActionType;
|
||||
import ru.serega6531.packmate.model.enums.PatternDirectionType;
|
||||
import ru.serega6531.packmate.model.enums.SubscriptionMessageType;
|
||||
import ru.serega6531.packmate.model.pojo.*;
|
||||
import ru.serega6531.packmate.model.pojo.PacketDto;
|
||||
import ru.serega6531.packmate.model.pojo.StreamDto;
|
||||
import ru.serega6531.packmate.model.pojo.StreamPagination;
|
||||
import ru.serega6531.packmate.model.pojo.SubscriptionMessage;
|
||||
import ru.serega6531.packmate.model.pojo.UnfinishedStream;
|
||||
import ru.serega6531.packmate.repository.StreamRepository;
|
||||
import ru.serega6531.packmate.service.optimization.RsaKeysHolder;
|
||||
import ru.serega6531.packmate.service.optimization.StreamOptimizer;
|
||||
@@ -28,7 +36,6 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -71,15 +78,15 @@ public class StreamService {
|
||||
@Transactional(propagation = Propagation.NEVER)
|
||||
public boolean saveNewStream(UnfinishedStream unfinishedStream, List<Packet> packets) {
|
||||
final var serviceOptional = servicesService.findService(
|
||||
unfinishedStream.getFirstIp(),
|
||||
unfinishedStream.getFirstPort(),
|
||||
unfinishedStream.getSecondIp(),
|
||||
unfinishedStream.getSecondPort()
|
||||
unfinishedStream.firstIp(),
|
||||
unfinishedStream.firstPort(),
|
||||
unfinishedStream.secondIp(),
|
||||
unfinishedStream.secondPort()
|
||||
);
|
||||
|
||||
if (serviceOptional.isEmpty()) {
|
||||
log.warn("Failed to save the stream: service at port {} or {} does not exist",
|
||||
unfinishedStream.getFirstPort(), unfinishedStream.getSecondPort());
|
||||
unfinishedStream.firstPort(), unfinishedStream.secondPort());
|
||||
return false;
|
||||
}
|
||||
CtfService service = serviceOptional.get();
|
||||
@@ -107,7 +114,7 @@ public class StreamService {
|
||||
.findFirst();
|
||||
|
||||
final Stream stream = new Stream();
|
||||
stream.setProtocol(unfinishedStream.getProtocol());
|
||||
stream.setProtocol(unfinishedStream.protocol());
|
||||
stream.setTtl(firstIncoming.map(Packet::getTtl).orElse(0));
|
||||
stream.setStartTimestamp(packets.get(0).getTimestamp());
|
||||
stream.setEndTimestamp(packets.get(packets.size() - 1).getTimestamp());
|
||||
@@ -190,7 +197,7 @@ public class StreamService {
|
||||
foundPatterns.addAll(matches.stream()
|
||||
.map(FoundPattern::getPatternId)
|
||||
.map(patternService::find)
|
||||
.collect(Collectors.toList()));
|
||||
.toList());
|
||||
}
|
||||
|
||||
return foundPatterns;
|
||||
@@ -245,7 +252,6 @@ public class StreamService {
|
||||
}
|
||||
|
||||
public List<Packet> getPackets(long streamId, @Nullable Long startingFrom, int pageSize) {
|
||||
// long safeStartingFrom = startingFrom != null ? startingFrom : 0;
|
||||
return repository.getPackets(streamId, startingFrom, Pageable.ofSize(pageSize));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user