You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/01/18 22:01:38 UTC
svn commit: r1233068 - in /openejb/trunk/openejb/server:
openejb-common-cli/src/main/java/org/apache/openejb/server/cli/
openejb-ssh/src/main/java/org/apache/openejb/server/ssh/
Author: rmannibucau
Date: Wed Jan 18 21:01:37 2012
New Revision: 1233068
URL: http://svn.apache.org/viewvc?rev=1233068&view=rev
Log:
trying to keep username in openejb-ssh
Added:
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBJaasPasswordAuthenticator.java
Modified:
openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java
openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java
Modified: openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java?rev=1233068&r1=1233067&r2=1233068&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java (original)
+++ openejb/trunk/openejb/server/openejb-common-cli/src/main/java/org/apache/openejb/server/cli/CliRunnable.java Wed Jan 18 21:01:37 2012
@@ -33,7 +33,8 @@ public class CliRunnable implements Runn
private static final String WELCOME = "Welcome on your $bind:$port $name server";
private static final String OS_LINE_SEP = System.getProperty("line.separator");
private static final String NAME;
- private static final String PROMPT = "openejb> ";
+ private static final String PROMPT;
+ private static final String PROMPT_SUFFIX = "> ";
private static final List<Class<? extends AbstractCommand>> COMMAND_CLASSES
= Arrays.asList(GroovyCommand.class, GroovyFileCommand.class,
ListCommand.class, PropertiesCommand.class,
@@ -49,6 +50,7 @@ public class CliRunnable implements Runn
// ignored, we are using a simple OpenEJB server
}
NAME = name;
+ PROMPT = NAME.toLowerCase() + PROMPT_SUFFIX;
}
public String lineSep;
@@ -57,18 +59,20 @@ public class CliRunnable implements Runn
private OutputStream err;
private OutputStream out;
private InputStream sin;
+ private String username;
private String bind;
private int port;
private Map<String, Class<?>> commands;
public CliRunnable(String bind, int port) {
- this(bind, port, null);
+ this(bind, port, PROMPT, null);
}
- public CliRunnable(String bind, int port, String sep) {
+ public CliRunnable(String bind, int port, String username, String sep) {
this.bind = bind;
this.port = port;
+ this.username = username;
if (sep != null) { // workaround to force ConsoleReader to use another line.separator
lineSep = sep;
@@ -136,7 +140,8 @@ public class CliRunnable implements Runn
.replace("$bind", bind)
.replace("$port", Integer.toString(port))
.replace("$name", NAME));
- while ((line = reader.readLine(PROMPT)) != null) {
+
+ while ((line = reader.readLine(prompt())) != null) {
// exit simply let us go out of the loop
// do we need a command for it?
if (EXIT_COMMAND.equals(line)) {
@@ -177,6 +182,19 @@ public class CliRunnable implements Runn
}
}
+ private String prompt() {
+ final StringBuilder prompt = new StringBuilder("");
+ if (username != null) {
+ prompt.append(username);
+ } else {
+ prompt.append(PROMPT);
+ }
+ prompt.append(" @ ")
+ .append(bind).append(":").append(port)
+ .append(PROMPT_SUFFIX);
+ return prompt.toString();
+ }
+
private void properties() {
final OpenEjbConfiguration config = SystemInstance.get().getComponent(OpenEjbConfiguration.class);
Info2Properties.printConfig(config, new PrintStream(out), lineSep);
Modified: openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java?rev=1233068&r1=1233067&r2=1233068&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java (original)
+++ openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java Wed Jan 18 21:01:37 2012
@@ -12,8 +12,8 @@ import java.io.OutputStream;
public class OpenEJBCommands extends CliRunnable implements Command, Runnable {
private ExitCallback cbk;
- public OpenEJBCommands(String bind, int port) {
- super(bind, port, "\r\n"); // don't use os line.separator
+ public OpenEJBCommands(String bind, int port, String username) {
+ super(bind, port, username, "\r\n"); // don't use os line.separator
}
@Override
Added: openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBJaasPasswordAuthenticator.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBJaasPasswordAuthenticator.java?rev=1233068&view=auto
==============================================================================
--- openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBJaasPasswordAuthenticator.java (added)
+++ openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBJaasPasswordAuthenticator.java Wed Jan 18 21:01:37 2012
@@ -0,0 +1,20 @@
+package org.apache.openejb.server.ssh;
+
+import org.apache.sshd.server.jaas.JaasPasswordAuthenticator;
+
+public class OpenEJBJaasPasswordAuthenticator extends JaasPasswordAuthenticator {
+ private OpenEJBShellFactory shellFactory;
+
+ public OpenEJBJaasPasswordAuthenticator(OpenEJBShellFactory sf) {
+ this.shellFactory = sf;
+ }
+
+ @Override
+ public boolean authenticate(final String username, final String password) {
+ if (super.authenticate(username, password)) {
+ shellFactory.setUsername(username);
+ return true;
+ }
+ return false;
+ }
+}
Modified: openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java?rev=1233068&r1=1233067&r2=1233068&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java (original)
+++ openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBShellFactory.java Wed Jan 18 21:01:37 2012
@@ -6,6 +6,7 @@ import org.apache.sshd.server.Command;
public class OpenEJBShellFactory implements Factory<Command> {
private String bind;
private int port;
+ private ThreadLocal<String> username = new ThreadLocal<String>();
public OpenEJBShellFactory(String bind, int port) {
this.bind = bind;
@@ -14,6 +15,10 @@ public class OpenEJBShellFactory impleme
@Override
public Command create() {
- return new OpenEJBCommands(bind, port);
+ return new OpenEJBCommands(bind, port, username.get());
+ }
+
+ public void setUsername(String username) {
+ this.username.set(username);
}
}
Modified: openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java?rev=1233068&r1=1233067&r2=1233068&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java (original)
+++ openejb/trunk/openejb/server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/SSHServer.java Wed Jan 18 21:01:37 2012
@@ -43,13 +43,9 @@ public class SSHServer implements Server
@Override
public void start() throws ServiceException {
- final JaasPasswordAuthenticator authenticator = new JaasPasswordAuthenticator();
- authenticator.setDomain(domain);
-
sshServer = SshServer.setUpDefaultServer();
sshServer.setPort(port);
sshServer.setHost(bind);
- sshServer.setPasswordAuthenticator(authenticator);
final String basePath = SystemInstance.get().getBase().getDirectory().getAbsolutePath();
if (SecurityUtils.isBouncyCastleRegistered()) {
@@ -58,7 +54,12 @@ public class SSHServer implements Server
sshServer.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(new File(basePath, KEY_NAME + ".ser").getPath()));
}
- sshServer.setShellFactory(new OpenEJBShellFactory(bind, port));
+ final OpenEJBShellFactory sf = new OpenEJBShellFactory(bind, port);
+ sshServer.setShellFactory(sf);
+
+ final JaasPasswordAuthenticator authenticator = new OpenEJBJaasPasswordAuthenticator(sf);
+ authenticator.setDomain(domain);
+ sshServer.setPasswordAuthenticator(authenticator);
try {
sshServer.start();