in src/main/java/co/elastic/support/scrub/ScrubProcessor.java [215:266]
public String processContentWithTokens(String content, String entry) {
for (ScrubTokenEntry token : tokens) {
if (!token.include.isEmpty()) {
boolean filtered = true;
for (String inc : token.include) {
if (entry.matches(inc)) {
logger.info(Constants.CONSOLE, "Include rule applied for: {}.", entry);
filtered = false;
break;
}
}
if (filtered) {
continue;
}
}
if (!token.exclude.isEmpty()) {
boolean filtered = false;
for (String exc : token.exclude) {
if (entry.matches(exc)) {
logger.info(Constants.CONSOLE, "Exclude rule applied for: {}.", entry);
filtered = true;
break;
}
}
if (filtered) {
continue;
}
}
Matcher matcher = token.pattern.matcher(content);
Set<String> tokenHits = new HashSet<>();
while(matcher.find()){
tokenHits.add(matcher.group());
}
for(String hit: tokenHits){
String replacement = tokenCache.computeIfAbsent(hit, k -> generateToken(k));
logger.debug("Entry: {} - Pattern:{} Found:{} Replacement: {}", entry, token.pattern.toString(), hit, replacement);
content = content.replaceAll(hit, replacement );
}
/* while (matcher.find()) {
String group = matcher.group();
String replacement = tokenCache.computeIfAbsent(group, k -> generateToken(k));
logger.debug("Entry: {} - Pattern:{} Found:{} Replacement: {}", entry, token.pattern.toString(), group, replacement);
content = content.replaceFirst(group, replacement);
}*/
}
return content;
}