@Override
public void allow(final String hostname, final PublicKey key, final boolean persist) {
if(null == database) {
super.allow(hostname, key, persist);
}
else {
try {
final OpenSSHKnownHosts.HostEntry entry
= new OpenSSHKnownHosts.HostEntry(null, PreferencesFactory.get().getBoolean(
"ssh.knownhosts.hostname.hash") ? hash(hostname) : hostname,
KeyType.fromKey(key), key);
database.entries().add(entry);
if(persist) {
if(file.attributes().getPermission().isWritable()) {
database.write(entry);
}
}
}
catch(IOException e) {
log.error(String.format("Failure adding host key to database: %s", e.getMessage()));
super.allow(hostname, key, persist);
}
}
}