From 73d7560e6e0d9b3dcf2bc877323b3e19b5cd0ef8 Mon Sep 17 00:00:00 2001 From: Jeroen van Erp Date: Mon, 17 Aug 2020 10:23:37 +0200 Subject: [PATCH] Add Reader constructor to OpenSSHKnownHosts (Fixes #626) --- .../verification/OpenSSHKnownHosts.java | 46 +++++++++++++------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java b/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java index 742e5f14..323290fb 100644 --- a/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java +++ b/src/main/java/net/schmizz/sshj/transport/verification/OpenSSHKnownHosts.java @@ -41,6 +41,11 @@ public class OpenSSHKnownHosts protected final File khFile; protected final List entries = new ArrayList(); + public OpenSSHKnownHosts(Reader reader) throws IOException { + this(reader, LoggerFactory.DEFAULT); + } + + public OpenSSHKnownHosts(File khFile) throws IOException { this(khFile, LoggerFactory.DEFAULT); @@ -51,29 +56,40 @@ public class OpenSSHKnownHosts this.khFile = khFile; log = loggerFactory.getLogger(getClass()); if (khFile.exists()) { - final EntryFactory entryFactory = new EntryFactory(); final BufferedReader br = new BufferedReader(new FileReader(khFile)); try { - // Read in the file, storing each line as an entry - String line; - while ((line = br.readLine()) != null) { - try { - KnownHostEntry entry = entryFactory.parseEntry(line); - if (entry != null) { - entries.add(entry); - } - } catch (SSHException ignore) { - log.debug("Bad line ({}): {} ", ignore.toString(), line); - } catch (SSHRuntimeException ignore) { - log.debug("Failed to process line ({}): {} ", ignore.toString(), line); - } - } + readEntries(br); } finally { IOUtils.closeQuietly(br); } } } + public OpenSSHKnownHosts(Reader reader, LoggerFactory loggerFactory) throws IOException { + this.khFile = null; + log = loggerFactory.getLogger(getClass()); + BufferedReader br = new BufferedReader(reader); + readEntries(br); + } + + private void readEntries(BufferedReader br) throws IOException { + final EntryFactory entryFactory = new EntryFactory(); + String line; + while ((line = br.readLine()) != null) { + try { + KnownHostEntry entry = entryFactory.parseEntry(line); + if (entry != null) { + entries.add(entry); + } + } catch (SSHException ignore) { + log.debug("Bad line ({}): {} ", ignore.toString(), line); + } catch (SSHRuntimeException ignore) { + log.debug("Failed to process line ({}): {} ", ignore.toString(), line); + } + } + } + + public File getFile() { return khFile; }