Untitled
unknown
plain_text
a year ago
4.9 kB
5
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