import com.google.common.base.Optional;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.net.InetSocketAddress;
import org.opendaylight.controller.netconf.ssh.NetconfSSHServer;
import org.opendaylight.controller.netconf.ssh.authentication.AuthProvider;
if (path.equals("")){
throw new Exception("Missing netconf.ssh.pk.path key in configuration file.");
}
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(path);
- } catch (FileNotFoundException e){
- throw new Exception("Missing file described by netconf.ssh.pk.path key in configuration file.");
- } catch (SecurityException e){
- throw new Exception("Read access denied to file described by netconf.ssh.pk.path key in configuration file.");
- }
- AuthProvider authProvider = null;
- try {
- authProvider = new AuthProvider(iUserManager,fis);
- } catch (Exception e){
- if (fis!=null){
- fis.close();
- }
- throw (e);
+
+ try (FileInputStream fis = new FileInputStream(path)){
+ AuthProvider authProvider = new AuthProvider(iUserManager,fis);
+ this.server = NetconfSSHServer.start(sshSocketAddressOptional.get().getPort(),tcpSocketAddress,authProvider);
}
- this.server = NetconfSSHServer.start(sshSocketAddressOptional.get().getPort(),tcpSocketAddress,authProvider);
+
Thread serverThread = new Thread(server,"netconf SSH server thread");
serverThread.setDaemon(true);
serverThread.start();
*/
package org.opendaylight.controller.netconf.ssh.authentication;
+import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
private static IUserManager um;
private static final String DEFAULT_USER = "netconf";
private static final String DEFAULT_PASSWORD = "netconf";
- private static InputStream privateKeyFileInputStream;
+ private String PEM;
private static final Logger logger = LoggerFactory.getLogger(AuthProvider.class);
throw new Exception("No usermanager service available.");
}
- this.privateKeyFileInputStream = privateKeyFileInputStream;
-
List<String> roles = new ArrayList<String>(1);
roles.add(UserLevel.SYSTEMADMIN.toString());
this.um.addLocalUser(new UserConfig(DEFAULT_USER, DEFAULT_PASSWORD, roles));
+
+ try {
+ PEM = IOUtils.toString(privateKeyFileInputStream);
+ } catch (IOException e) {
+ logger.error("Error reading RSA key from file.");
+ throw new IllegalStateException("Error reading RSA key from file.");
+ }
}
@Override
public boolean authenticated(String username, String password) throws Exception {
@Override
public char[] getPEMAsCharArray() throws Exception {
- char [] PEM = IOUtils.toCharArray(privateKeyFileInputStream);
- privateKeyFileInputStream.close();
- return PEM;
+ if (null == PEM){
+ logger.error("Missing RSA key string.");
+ throw new Exception("Missing RSA key.");
+ }
+ return PEM.toCharArray();
}
@Override