<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:bp="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:cm="http://www.osgi.org/xmlns/blueprint-cm/v1.0.0"
           xmlns:ext="http://geronimo.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0">

    <ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]"/>

    <cm:property-placeholder persistent-id="org.apache.felix.karaf.shell">
        <cm:default-properties>
            <cm:property name="sshPort" value="8101"/>
            <cm:property name="sshRealm" value="karaf"/>
            <cm:property name="hostKey" value="${karaf.base}/etc/host.key"/>
        </cm:default-properties>
    </cm:property-placeholder>

    <command-bundle xmlns="http://felix.apache.org/karaf/xmlns/gshell/v1.0.0">
        <!--
        <command name="ssh/ssh">
            <action class="org.apache.felix.karaf.gshell.ssh.SshAction">
            </action>
        </command>
        -->
        <command name="ssh/sshd">
            <action class="org.apache.felix.karaf.gshell.ssh.SshServerAction">
                <property name="sshServerId">
                    <bp:idref component-id="sshServer"/>
                </property>
            </action>
        </command>
    </command-bundle>

    <bean id="sshClient" class="org.apache.sshd.SshClient" factory-method="setUpDefaultClient" init-method="start"
          destroy-method="stop">
    </bean>

    <bean id="sshServer" class="org.apache.sshd.SshServer" factory-method="setUpDefaultServer" scope="prototype">
        <property name="port" value="${sshPort}"/>
        <property name="shellFactory">
            <bean class="org.apache.felix.karaf.gshell.ssh.ShellFactoryImpl">
                <property name="completers">
                    <list>
                        <ref component-id="commandCompleter"/>
                    </list>
                </property>
                <property name="commandProcessor" ref="commandProcessor"/>
            </bean>
        </property>
        <property name="commandFactory">
            <bean class="org.apache.felix.karaf.gshell.ssh.ShellCommandFactory">
                <property name="commandProcessor" ref="commandProcessor"/>
            </bean>
        </property>
        <property name="keyPairProvider" ref="keyPairProvider"/>
        <property name="passwordAuthenticator" ref="passwordAuthenticator"/>
    </bean>

    <bean id="keyPairProvider" class="org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider">
        <property name="path" value="${hostKey}"/>
    </bean>
    <bean id="passwordAuthenticator" class="org.apache.sshd.server.jaas.JaasPasswordAuthenticator">
        <property name="domain" value="${sshRealm}"/>
    </bean>

    <bean id="sshServerFactory" class="org.apache.felix.karaf.gshell.ssh.SshServerFactory" init-method="start"
          destroy-method="stop">
        <argument ref="sshServer"/>
        <property name="start" value="$[karaf.startRemoteShell]"/>
    </bean>

    <reference id="commandProcessor" interface="org.osgi.service.command.CommandProcessor">
    </reference>

    <reference-list id="functions" filter="(&amp;(osgi.command.scope=*)(osgi.command.function=*))" availability="optional">
        <reference-listener ref="commandCompleter"
                            bind-method="register"
                            unbind-method="unregister"/>
    </reference-list>

    <bean id="commandCompleter" class="org.apache.felix.karaf.gshell.console.completer.CommandsCompleter">
        <property name="bundleContext" ref="blueprintBundleContext" />
    </bean>

</blueprint>
