<?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="com.google.code.sshd.SshClient" factory-method="setUpDefaultClient" init-method="start" destroy-method="stop">
    </bean>

    <bean name="sshServer" class="com.google.code.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="keyPairProvider" ref="keyPairProvider" />
        <property name="passwordAuthenticator" ref="passwordAuthenticator" />
    </bean>

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

    <bean id="sshServerFactory" class="org.apache.servicemix.kernel.gshell.core.sshd.SshServerFactory" init-method="start" destroy-method="stop">
        <constructor-arg ref="sshServer" />
        <property name="start" value="${servicemix.startRemoteShell}" />
    </bean>

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

</beans>