diff --git a/openbas-framework/src/main/java/io/openbas/integrations/InjectorService.java b/openbas-framework/src/main/java/io/openbas/integrations/InjectorService.java index 9f7cb076b9..2be34847ff 100644 --- a/openbas-framework/src/main/java/io/openbas/integrations/InjectorService.java +++ b/openbas-framework/src/main/java/io/openbas/integrations/InjectorService.java @@ -95,7 +95,7 @@ public void register( } } // Check error to avoid changing ID - List contracts = contractor.contracts(); + List contractSTATIQUE = contractor.contracts(); if (injector != null) { injector.setName(name); injector.setExternal(false); @@ -112,43 +112,53 @@ public void register( injector .getContracts() .forEach( - contract -> { + contractDB -> { + + // Contractor -> code static + // Injector -> code DB + + // 1. contrat statique a changé + // 2. contrat dynamique a changé Optional current = - contracts.stream().filter(c -> c.getId().equals(contract.getId())).findFirst(); + contractSTATIQUE.stream() + .filter(cSTATIQUE -> cSTATIQUE.getId().equals(contractDB.getId())) + .findFirst(); if (current.isPresent()) { - existing.add(contract.getId()); - contract.setManual(current.get().isManual()); - contract.setAtomicTesting(current.get().isAtomicTesting()); - contract.setPlatforms(current.get().getPlatforms().toArray(new PLATFORM_TYPE[0])); - contract.setNeedsExecutor(current.get().isNeedsExecutor()); + existing.add(contractDB.getId()); + contractDB.setManual(current.get().isManual()); + contractDB.setAtomicTesting(current.get().isAtomicTesting()); + contractDB.setPlatforms( + current.get().getPlatforms().toArray(new PLATFORM_TYPE[0])); + contractDB.setNeedsExecutor(current.get().isNeedsExecutor()); Map labels = current.get().getLabel().entrySet().stream() .collect( Collectors.toMap(e -> e.getKey().toString(), Map.Entry::getValue)); - contract.setLabels(labels); + contractDB.setLabels(labels); // If no override of TTPs, retrieve those of the contract - if (contract.getAttackPatterns().isEmpty()) { + if (contractDB.getAttackPatterns().isEmpty()) { if (!current.get().getAttackPatternsExternalIds().isEmpty()) { List attackPatterns = fromIterable( attackPatternRepository.findAllByExternalIdInIgnoreCase( current.get().getAttackPatternsExternalIds())); - contract.setAttackPatterns(attackPatterns); + contractDB.setAttackPatterns(attackPatterns); } } try { - contract.setContent(mapper.writeValueAsString(current.get())); + contractDB.setContent(mapper.writeValueAsString(current.get())); } catch (JsonProcessingException e) { throw new RuntimeException(e); } - toUpdates.add(contract); - } else if (!contract.getCustom() - && (!injector.isPayloads() || contract.getPayload() == null)) { - toDeletes.add(contract.getId()); + toUpdates.add(contractDB); + // pas custom && (pas de payloads OU payload est null) + } else if (!contractDB.getCustom() + && (!injector.isPayloads() || contractDB.getPayload() == null)) { + toDeletes.add(contractDB.getId()); } }); List toCreates = - contracts.stream() + contractSTATIQUE.stream() .filter(c -> !existing.contains(c.getId())) .map( in -> { @@ -199,7 +209,7 @@ public void register( Injector savedInjector = injectorRepository.save(newInjector); // Save the contracts List injectorContracts = - contracts.stream() + contractSTATIQUE.stream() .map( in -> { InjectorContract injectorContract = new InjectorContract();