in src/main/java/co/elastic/support/diagnostics/commands/RunKibanaQueries.java [264:307]
public void filterActionsHeaders(DiagnosticContext context) {
try {
JsonNode actions = JsonYamlUtils.createJsonNodeFromFileName(context.tempDir, "kibana_actions.json");
Boolean headerRemoved = false;
if (actions.size() > 0) {
for (int i = 0; i < actions.size(); i++) {
JsonNode config = actions.get(i).get("config");
// API webhook format can change, and maybe we have a webhook without config
if (!(config == null || config.isNull())) {
// Not all the webhook need to have headers, so we need to be sure the data was set by the customer.
JsonNode headers = actions.get(i).get("config").get("headers");
if (!(headers == null || headers.isNull())) {
Iterator<Map.Entry<String, JsonNode>> iter = actions.get(i).get("config").get("headers").fields();
while (iter.hasNext()) {
Map.Entry<String, JsonNode> entry = iter.next();
String key = entry.getKey().toLowerCase();
if (!key.equals("kbn-xsrf") && !key.equals("content-type")) {
iter.remove();
headerRemoved = true;
}
}
}
}
}
// If any headers were removed, we need to rewrite the file to remove them
if (headerRemoved == true) {
String fileName = context.tempDir + SystemProperties.fileSeparator + "kibana_actions.json";
try (FileWriter fileWriter = new FileWriter(fileName)) {
ObjectMapper mapper = new ObjectMapper();
fileWriter.write(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(actions));
fileWriter.flush();
} catch (IOException e) {
logger.error("Unexpected error while writing [kibana_actions.json]", e);
}
}
}
} catch (RuntimeException e) {
logger.error("Kibana actions file is empty, we have nothing to filter.", e);
}
}