<?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.

-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:jaas="http://servicemix.apache.org/jaas"
       xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util.xsd
  http://www.springframework.org/schema/osgi
  http://www.springframework.org/schema/osgi/spring-osgi.xsd
  http://servicemix.apache.org/jaas
  http://servicemix.apache.org/schema/servicemix-jaas.xsd"
       default-autowire="no"
       default-dependency-check="none"
       default-init-method="init"
       default-destroy-method="destroy">

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

    <bean name="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 bean="commandsCompleter"/>
                        <ref bean="aliasNameCompleter"/>
                    </list>
                </property>
                <property name="executor" ref="commandLineExecutor" />
                <property name="prompter">
                    <bean class="org.apache.geronimo.gshell.wisdom.shell.ConsolePrompterImpl">
                        <constructor-arg 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">
                        <constructor-arg 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 name="keyPairProvider" class="org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider">
        <property name="path" value="${hostKey}" />
    </bean>
    <bean name="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">
        <constructor-arg ref="sshServer" />
        <property name="start" value="${karaf.startRemoteShell}" />
    </bean>

    <!--
    <jaas:config id="SshServer" rank="-1">
        <jaas:module className="org.apache.geronimo.gshell.remote.server.auth.BogusLoginModule" flags="required" />
    </jaas:config>
    -->

</beans>
