Author: jbonofre
Date: Tue Nov 8 22:20:45 2011
New Revision: 1199493
URL: http://svn.apache.org/viewvc?rev=1199493&view=rev
Log:
[KARAF-987] Add scp support
Added:
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemFactory.java
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemView.java
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafSshFile.java
Modified:
karaf/branches/karaf-2.2.x/shell/ssh/src/main/resources/OSGI-INF/blueprint/shell-ssh.xml
Added:
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemFactory.java
URL:
http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemFactory.java?rev=1199493&view=auto
==============================================================================
---
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemFactory.java
(added)
+++
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemFactory.java
Tue Nov 8 22:20:45 2011
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.karaf.shell.ssh;
+
+import org.apache.sshd.server.FileSystemFactory;
+import org.apache.sshd.server.FileSystemView;
+
+/**
+ * SSHd file system factory to reduce the visibility to the KARAF_BASE.
+ */
+public class KarafFileSystemFactory implements FileSystemFactory {
+
+ public FileSystemView createFileSystemView(String s) {
+ return new KarafFileSystemView();
+ }
+
+}
Added:
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemView.java
URL:
http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemView.java?rev=1199493&view=auto
==============================================================================
---
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemView.java
(added)
+++
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafFileSystemView.java
Tue Nov 8 22:20:45 2011
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.karaf.shell.ssh;
+
+import org.apache.sshd.server.FileSystemView;
+import org.apache.sshd.server.SshFile;
+import org.apache.sshd.server.filesystem.NativeSshFile;
+
+import java.io.File;
+
+/**
+ * Karaf file system view reduced to the KARAF_BASE location
+ */
+public class KarafFileSystemView implements FileSystemView {
+
+ private String location;
+
+ public KarafFileSystemView() {
+ location = System.getProperty("karaf.base");
+ }
+
+ public SshFile getFile(String file) {
+ return getFile(location, file);
+ }
+
+ public SshFile getFile(SshFile baseDir, String file) {
+ return getFile(baseDir.getAbsolutePath(), file);
+ }
+
+ protected SshFile getFile(String dir, String file) {
+ // get actual file object
+ String physicalName = NativeSshFile.getPhysicalName("/", dir, file,
false);
+
+ if (!physicalName.startsWith(location)) {
+ throw new IllegalArgumentException("The path is not relative to
KARAF_BASE. For security reason, it's not allowed.");
+ }
+
+ File fileObj = new File(physicalName);
+
+ // strip the root directory and return
+ String karafFileName = physicalName.substring("/".length() - 1);
+ return new KarafSshFile(karafFileName, fileObj);
+ }
+
+}
Added:
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafSshFile.java
URL:
http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafSshFile.java?rev=1199493&view=auto
==============================================================================
---
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafSshFile.java
(added)
+++
karaf/branches/karaf-2.2.x/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/KarafSshFile.java
Tue Nov 8 22:20:45 2011
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.karaf.shell.ssh;
+
+import org.apache.sshd.server.filesystem.NativeSshFile;
+
+import java.io.File;
+
+/**
+ * Karaf ssh file support.
+ */
+public class KarafSshFile extends NativeSshFile {
+
+ /**
+ * Constructor, internal do not use directly.
+ */
+ public KarafSshFile(String fileName, final File file) {
+ super(fileName, file, null);
+ }
+
+}
\ No newline at end of file
Modified:
karaf/branches/karaf-2.2.x/shell/ssh/src/main/resources/OSGI-INF/blueprint/shell-ssh.xml
URL:
http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/ssh/src/main/resources/OSGI-INF/blueprint/shell-ssh.xml?rev=1199493&r1=1199492&r2=1199493&view=diff
==============================================================================
---
karaf/branches/karaf-2.2.x/shell/ssh/src/main/resources/OSGI-INF/blueprint/shell-ssh.xml
(original)
+++
karaf/branches/karaf-2.2.x/shell/ssh/src/main/resources/OSGI-INF/blueprint/shell-ssh.xml
Tue Nov 8 22:20:45 2011
@@ -73,12 +73,19 @@
</bean>
</property>
<property name="commandFactory">
- <bean class="org.apache.karaf.shell.ssh.ShellCommandFactory">
- <property name="commandProcessor" ref="commandProcessor"/>
+ <bean class="org.apache.sshd.server.command.ScpCommandFactory">
+ <argument>
+ <bean
class="org.apache.karaf.shell.ssh.ShellCommandFactory">
+ <property name="commandProcessor"
ref="commandProcessor"/>
+ </bean>
+ </argument>
</bean>
</property>
<property name="keyPairProvider" ref="keyPairProvider"/>
<property name="passwordAuthenticator" ref="passwordAuthenticator"/>
+ <property name="fileSystemFactory">
+ <bean class="org.apache.karaf.shell.ssh.KarafFileSystemFactory"/>
+ </property>
</bean>
<bean id="keyPairProvider"
class="org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider">