Выбор сервиса в паттернах

This commit is contained in:
serega6531
2021-01-12 22:32:10 +03:00
parent 8c752f1d44
commit f5dc4b7b6f
7 changed files with 26 additions and 12 deletions

View File

@@ -6,6 +6,7 @@ import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import ru.serega6531.packmate.model.CtfService;
import ru.serega6531.packmate.model.FoundPattern;
import ru.serega6531.packmate.model.Pattern;
import ru.serega6531.packmate.model.enums.PatternActionType;
@@ -27,17 +28,19 @@ public class PatternService {
private final PatternRepository repository;
private final StreamService streamService;
private final SubscriptionService subscriptionService;
private final ModelMapper modelMapper;
private final Map<Integer, Pattern> patterns = new HashMap<>();
private final ModelMapper modelMapper = new ModelMapper();
@Autowired
public PatternService(PatternRepository repository,
@Lazy StreamService streamService,
SubscriptionService subscriptionService) {
SubscriptionService subscriptionService,
ModelMapper modelMapper) {
this.repository = repository;
this.streamService = streamService;
this.subscriptionService = subscriptionService;
this.modelMapper = modelMapper;
repository.findAll().forEach(p -> patterns.put(p.getId(), p));
log.info("Loaded {} patterns", patterns.size());
@@ -51,9 +54,10 @@ public class PatternService {
return patterns.values();
}
public Set<FoundPattern> findMatches(byte[] bytes, PatternDirectionType directionType, PatternActionType actionType) {
public Set<FoundPattern> findMatches(byte[] bytes, CtfService service, PatternDirectionType directionType, PatternActionType actionType) {
final List<Pattern> list = patterns.values().stream()
.filter(Pattern::isEnabled)
.filter(p -> p.getServiceId() == null || p.getServiceId() == service.getPort())
.filter(p -> p.getActionType() == actionType)
.filter(p -> p.getDirectionType() == directionType || p.getDirectionType() == PatternDirectionType.BOTH)
.collect(Collectors.toList());