<?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:ext="http://geronimo.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0">

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

    <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.geronimo.gshell.commands.ssh.ShellFactoryImpl">
                <property name="application" ref="application" />
                <property name="completers">
                    <list>
                        <ref component-id="commandsCompleter"/>
                        <ref component-id="aliasNameCompleter"/>
                    </list>
                </property>
                <property name="executor" ref="commandLineExecutor" />
                <property name="prompter">
                    <bean class="org.apache.geronimo.gshell.wisdom.shell.ConsolePrompterImpl">
                        <argument ref="application"/>
                    </bean>
                </property>
                <property name="errorHandler">
                    <bean class="org.apache.geronimo.gshell.wisdom.shell.ConsoleErrorHandlerImpl" />
                </property>
                <property name="history">
                    <bean class="org.apache.geronimo.gshell.wisdom.shell.HistoryImpl">
                        <argument ref="application"/>
                    </bean>
                </property>
            </bean>
        </property>
        <property name="commandFactory">
            <bean class="org.apache.felix.karaf.gshell.core.sshd.ShellCommandFactory">
                <property name="executor" ref="commandLineExecutor" />
            </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.core.sshd.SshServerFactory" init-method="start" destroy-method="stop">
        <argument ref="sshServer" />
        <property name="start" value="$[karaf.startRemoteShell]" />
    </bean>

</blueprint>