You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2013/10/17 17:20:09 UTC
svn commit: r1533110 - in /karaf/trunk/client: pom.xml
src/main/java/org/apache/karaf/client/ClientConfig.java
src/main/java/org/apache/karaf/client/Main.java
Author: gnodet
Date: Thu Oct 17 15:20:09 2013
New Revision: 1533110
URL: http://svn.apache.org/r1533110
Log:
[KARAF-2521] The client script should find better default values
Modified:
karaf/trunk/client/pom.xml
karaf/trunk/client/src/main/java/org/apache/karaf/client/ClientConfig.java
karaf/trunk/client/src/main/java/org/apache/karaf/client/Main.java
Modified: karaf/trunk/client/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/client/pom.xml?rev=1533110&r1=1533109&r2=1533110&view=diff
==============================================================================
--- karaf/trunk/client/pom.xml (original)
+++ karaf/trunk/client/pom.xml Thu Oct 17 15:20:09 2013
@@ -31,7 +31,7 @@
<artifactId>org.apache.karaf.client</artifactId>
<name>Apache Karaf :: Client</name>
<description>Karaf client to connect remotely to a running Karaf instance.</description>
- <packaging>jar</packaging>
+ <packaging>bundle</packaging>
<properties>
<appendedResourcesDirectory>${basedir}/../etc/appended-resources</appendedResourcesDirectory>
@@ -50,6 +50,10 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.utils</artifactId>
+ </dependency>
</dependencies>
<build>
@@ -61,6 +65,30 @@
</resources>
<plugins>
<plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <_donotcopy>(CVS|.svn|config.properties)</_donotcopy>
+ <Main-Class>org.apache.karaf.client.Main</Main-Class>
+ <Bundle-Name>Apache Karaf Shell Client</Bundle-Name>
+ <Bundle-Description>Shell client bundle for Apache Karaf.</Bundle-Description>
+ <Private-Package>
+ org.apache.karaf.client;
+ org.slf4j.impl;
+ org.apache.felix.utils.properties;-split-package:=merge-first,
+ META-INF;-split-package:=merge-first
+ </Private-Package>
+ <Include-Resource>
+ ../shell/ssh/src/main/resources/karaf.key,
+ {maven-resources}
+ </Include-Resource>
+ <Import-Package>!*</Import-Package>
+ </instructions>
+ <unpackBundle>true</unpackBundle>
+ </configuration>
+ </plugin>
+ <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
Modified: karaf/trunk/client/src/main/java/org/apache/karaf/client/ClientConfig.java
URL: http://svn.apache.org/viewvc/karaf/trunk/client/src/main/java/org/apache/karaf/client/ClientConfig.java?rev=1533110&r1=1533109&r2=1533110&view=diff
==============================================================================
--- karaf/trunk/client/src/main/java/org/apache/karaf/client/ClientConfig.java (original)
+++ karaf/trunk/client/src/main/java/org/apache/karaf/client/ClientConfig.java Thu Oct 17 15:20:09 2013
@@ -16,13 +16,21 @@
*/
package org.apache.karaf.client;
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.felix.utils.properties.Properties;
+
import org.slf4j.impl.SimpleLogger;
public class ClientConfig {
-
+
+ private static final String ROLE_DELIMITER = ",";
+
private String host;
private int port;
private String user;
+ private String password;
private int level;
private int retryAttempts;
private int retryDelay;
@@ -30,15 +38,20 @@ public class ClientConfig {
private String file = null;
private String command;
- public ClientConfig(String[] args) {
- host = "localhost";
- port = 8101;
- user = "karaf";
+ public ClientConfig(String[] args) throws IOException {
+ Properties shellCfg = new Properties(new File(System.getProperty("karaf.home"), "etc/org.apache.karaf.shell.cfg"));
+
+ host = shellCfg.getProperty("sshHost", "localhost");
+ port = Integer.parseInt(shellCfg.getProperty("sshPort", "8101"));
level = SimpleLogger.WARN;
retryAttempts = 0;
retryDelay = 2;
batch = false;
+ file = null;
+ user = null;
+ password = null;
StringBuilder commandBuilder = new StringBuilder();
+
for (int i = 0; i < args.length; i++) {
if (args[i].charAt(0) == '-') {
if (args[i].equals("-a")) {
@@ -70,6 +83,18 @@ public class ClientConfig {
}
}
command = commandBuilder.toString();
+
+ Properties usersCfg = new Properties(new File(System.getProperty("karaf.home") + "/etc/users.properties"));
+ if (!usersCfg.isEmpty()) {
+ if (user == null) {
+ user = (String) usersCfg.keySet().iterator().next();
+ }
+ password = (String) usersCfg.getProperty(user);
+ if (password != null && password.contains(ROLE_DELIMITER)) {
+ password = password.substring(0, password.indexOf(ROLE_DELIMITER));
+ }
+ }
+
}
private static void showHelp() {
@@ -100,6 +125,10 @@ public class ClientConfig {
return user;
}
+ public String getPassword() {
+ return password;
+ }
+
public int getLevel() {
return level;
}
Modified: karaf/trunk/client/src/main/java/org/apache/karaf/client/Main.java
URL: http://svn.apache.org/viewvc/karaf/trunk/client/src/main/java/org/apache/karaf/client/Main.java?rev=1533110&r1=1533109&r2=1533110&view=diff
==============================================================================
--- karaf/trunk/client/src/main/java/org/apache/karaf/client/Main.java (original)
+++ karaf/trunk/client/src/main/java/org/apache/karaf/client/Main.java Thu Oct 17 15:20:09 2013
@@ -35,6 +35,7 @@ import org.apache.sshd.agent.SshAgent;
import org.apache.sshd.agent.local.AgentImpl;
import org.apache.sshd.agent.local.LocalAgentFactory;
import org.apache.sshd.client.channel.ChannelShell;
+import org.apache.sshd.client.future.AuthFuture;
import org.apache.sshd.client.future.ConnectFuture;
import org.apache.sshd.common.RuntimeSshException;
import org.fusesource.jansi.AnsiConsole;
@@ -78,18 +79,31 @@ public class Main {
setupAgent(config.getUser(), client);
client.start();
ClientSession session = connectWithRetries(client, config);
+ Console console = System.console();
+ console.printf("Logging in as %s\n", config.getUser());
if (!session.authAgent(config.getUser()).await().isSuccess()) {
- String password = null;
- Console console = System.console();
- if (console != null) {
- char[] readPassword = console.readPassword("Password: ");
- if (readPassword != null) {
- password = new String(readPassword);
+ AuthFuture authFuture;
+ boolean useDefault = config.getPassword() != null;
+ do {
+ String password;
+ if (useDefault) {
+ password = config.getPassword();
+ useDefault = false;
+ } else {
+ if (console != null) {
+ char[] readPassword = console.readPassword("Password: ");
+ if (readPassword != null) {
+ password = new String(readPassword);
+ } else {
+ return;
+ }
+ } else {
+ throw new Exception("Unable to prompt password: could not get system console");
+ }
}
- } else {
- throw new Exception("Unable to prompt password: could not get system console");
- }
- if (!session.authPassword(config.getUser(), password).await().isSuccess()) {
+ authFuture = session.authPassword(config.getUser(), password);
+ } while (authFuture.await().isFailure());
+ if (!authFuture.isSuccess()) {
throw new Exception("Authentication failure");
}
}