You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2013/02/25 15:31:00 UTC
svn commit: r1449721 -
/karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java
Author: jbonofre
Date: Mon Feb 25 14:31:00 2013
New Revision: 1449721
URL: http://svn.apache.org/r1449721
Log:
[KARAF-1327] Load command aliases (defined in shell.init.script) in SSH
Modified:
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java
Modified: karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java?rev=1449721&r1=1449720&r2=1449721&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java (original)
+++ karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellCommandFactory.java Mon Feb 25 14:31:00 2013
@@ -18,11 +18,7 @@
*/
package org.apache.karaf.shell.ssh;
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
+import java.io.*;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Map;
@@ -46,6 +42,8 @@ import org.slf4j.LoggerFactory;
public class ShellCommandFactory implements CommandFactory {
+ public static final String SHELL_INIT_SCRIPT = "karaf.shell.init.script";
+
private static final Logger LOGGER = LoggerFactory.getLogger(ShellCommandFactory.class);
private CommandProcessor commandProcessor;
@@ -104,6 +102,8 @@ public class ShellCommandFactory impleme
Object result;
if (subject != null) {
try {
+ String scriptFileName = System.getProperty(SHELL_INIT_SCRIPT);
+ executeScript(scriptFileName, session);
result = Subject.doAs(subject, new PrivilegedExceptionAction<Object>() {
public Object run() throws Exception {
return session.execute(command);
@@ -113,6 +113,8 @@ public class ShellCommandFactory impleme
throw e.getException();
}
} else {
+ String scriptFileName = System.getProperty(SHELL_INIT_SCRIPT);
+ executeScript(scriptFileName, session);
result = session.execute(command);
}
if (result != null)
@@ -191,4 +193,32 @@ public class ShellCommandFactory impleme
}
}
}
+
+ private void executeScript(String scriptFileName, CommandSession session) {
+ if (scriptFileName != null) {
+ Reader r = null;
+ try {
+ File scriptFile = new File(scriptFileName);
+ r = new InputStreamReader(new FileInputStream(scriptFile));
+ CharArrayWriter w = new CharArrayWriter();
+ int n;
+ char[] buf = new char[8192];
+ while ((n = r.read(buf)) > 0) {
+ w.write(buf, 0, n);
+ }
+ session.execute(new String(w.toCharArray()));
+ } catch (Exception e) {
+ LOGGER.debug("Error in initialization script", e);
+ } finally {
+ if (r != null) {
+ try {
+ r.close();
+ } catch (IOException e) {
+ // Ignore
+ }
+ }
+ }
+ }
+ }
+
}