Untitled
unknown
plain_text
5 months ago
4.9 kB
3
Indexable
public Response handleAsyncConfiguredSoarMultiActionTrigger( String accountId, String triggerSource, SoarMultipleActionTrigger soarMultipleActionTrigger, String userEmail, String userRole ) throws ConfiguredSoarApplicationException, EntityNotFoundException { logger.info("Attempting to validate ConfiguredSoarActionTrigger UI request "); if (Objects.isNull(soarMultipleActionTrigger)) { throw new ConfiguredSoarApplicationException("SoarMultipleActionTrigger User Input is Empty"); } if(soarMultipleActionTrigger.userInputParameters() == null || soarMultipleActionTrigger.userInputParameters().isEmpty() || soarMultipleActionTrigger.assetValues() == null) { throw new ConfiguredSoarApplicationException("User Input Multiple Parameters must not be Empty", LogLevel.ERROR); } Map<String, AssetValues> assetValues = soarMultipleActionTrigger.assetValues(); List<UserInputParameters> userInputParameters = soarMultipleActionTrigger.userInputParameters(); List<String> successActions = new ArrayList<>(); List<String> failedActions = new ArrayList<>(); // Iterate through each asset and trigger action for (String assetId : assetValues.keySet()) { AssetValues asset = assetValues.get(assetId); ConfiguredSoarAction configuredSoarAction = configuredSoarActionRepositoryService.findConfiguredActionById(soarMultipleActionTrigger.actionId()); SoarAction soarAction = soarActionRepositoryService.readById(configuredSoarAction.soarActionId(),rolesService.getAllRoles()); List<SoarActionConfigParameter> customConfig = new ArrayList<>(soarAction.customConfiguration()); // Remove hidden custom config parameters customConfig.removeIf(config -> Boolean.TRUE.equals(config.getHidden())); UserInputParameters inputParameters = null; if (customConfig.isEmpty()) { // If there are no custom config parameters left, follow regular path of execution } else { // Check if any required parameters are empty for (CustomConfigParameter<?> config : customConfig) { if (Boolean.TRUE.equals(config.isRequired()) && CollectionUtils.isEmpty(soarMultipleActionTrigger.userInputParameters())) { throw new ConfiguredSoarApplicationException( "SoarActionTrigger User Input Parameters cannot be Empty"); } if ("hostname".equalsIgnoreCase(config.getName())) { inputParameters = new UserInputParameters(config.getName(), asset.hostname()); } else if ("ip_address".equalsIgnoreCase(config.getName())) { inputParameters = new UserInputParameters(config.getName(), asset.ip_address()); } else if ("mac_address".equalsIgnoreCase(config.getName())) { inputParameters = new UserInputParameters(config.getName(), asset.mac_address()); } } if(inputParameters == null && userInputParameters != null) { inputParameters = userInputParameters.get(0); } SoarActionTrigger soarActionTrigger = new SoarActionTrigger( soarMultipleActionTrigger.soarApplicationId(), soarMultipleActionTrigger.actionId(), soarMultipleActionTrigger.userId(), Arrays.asList(inputParameters) ); try { Response response = handleAsyncConfiguredSoarActionTrigger( accountId, assetId, triggerSource, soarActionTrigger, userEmail, userRole ); // If response indicates success, add to success list if (response.getStatus() == Response.Status.OK.getStatusCode()) { successActions.add(assetId); } else { failedActions.add(assetId); } } catch (Exception ex) { logger.error("Error triggering action for assetId {}: {}", assetId, ex.getMessage()); failedActions.add(assetId); } } } Map<String, Object> result = new HashMap<>(); result.put("success", successActions); result.put("failed", failedActions); return Response.status(Response.Status.OK) .entity(result) .build(); }
Editor is loading...
Leave a Comment