package com.sequenceiq.cloudbreak.service.stack.flow; import java.util.HashSet; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class FingerprintParserUtil { private static final Logger LOGGER = LoggerFactory.getLogger(FingerprintParserUtil.class); private static final Pattern[] FINGERPRINT_PATTERNS = { Pattern.compile("(?<fingerprint>([a-f0-9]{2}:){15,}[a-f0-9]{2}).*ECDSA"), Pattern.compile("(?<fingerprint>([a-f0-9]{2}:){15,}[a-f0-9]{2}).*RSA") }; private FingerprintParserUtil() { } public static Set<String> parseFingerprints(String consoleLog) { LOGGER.debug("Received console log: {}", consoleLog); Set<String> matchedFingerprints = new HashSet<>(); String[] lines = consoleLog.split("\n"); for (String line : lines) { for (Pattern pattern : FINGERPRINT_PATTERNS) { Matcher m = pattern.matcher(line); if (m.find()) { matchedFingerprints.add(m.group("fingerprint")); } } } return matchedFingerprints; } }