use of org.opendaylight.netconf.callhome.protocol.CallHomeAuthorization.Builder in project netconf by opendaylight.
the class CallHomeAuthProviderImpl method provideAuth.
@Override
public CallHomeAuthorization provideAuth(final SocketAddress remoteAddress, final PublicKey serverKey) {
Device deviceSpecific = deviceConfig.get(serverKey);
String sessionName;
Credentials deviceCred;
if (deviceSpecific != null) {
sessionName = deviceSpecific.getUniqueId();
if (deviceSpecific.getTransport() instanceof Ssh) {
final SshClientParams clientParams = ((Ssh) deviceSpecific.getTransport()).getSshClientParams();
deviceCred = clientParams.getCredentials();
} else {
deviceCred = deviceSpecific.getCredentials();
}
} else {
String syntheticId = fromRemoteAddress(remoteAddress);
if (globalConfig.allowedUnknownKeys()) {
sessionName = syntheticId;
deviceCred = null;
statusReporter.asForceListedDevice(syntheticId, serverKey);
} else {
Device opDevice = deviceOp.get(serverKey);
if (opDevice == null) {
statusReporter.asUnlistedDevice(syntheticId, serverKey);
} else {
LOG.info("Repeating rejection of unlisted device with id of {}", opDevice.getUniqueId());
}
return CallHomeAuthorization.rejected();
}
}
final Credentials credentials = deviceCred != null ? deviceCred : globalConfig.getCredentials();
if (credentials == null) {
LOG.info("No credentials found for {}, rejecting.", remoteAddress);
return CallHomeAuthorization.rejected();
}
Builder authBuilder = CallHomeAuthorization.serverAccepted(sessionName, credentials.getUsername());
for (String password : credentials.getPasswords()) {
authBuilder.addPassword(password);
}
return authBuilder.build();
}
Aggregations