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

<!-- $Rev$ $Date$ -->

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

    <gshell:plugin name="gshell-ssh">
        <gshell:command-bundle name="default">
            <gshell:command name="ssh">
                <gshell:action class="org.apache.geronimo.gshell.commands.ssh.SshAction"/>
            </gshell:command>

            <gshell:command name="ssh-server">
                <gshell:action class="org.apache.geronimo.gshell.commands.ssh.SshServerAction"/>
            </gshell:command>

            <gshell:link name="sshd" target="ssh-server"/>
        </gshell:command-bundle>
    </gshell:plugin>

    <bean name="sshClient" class="org.apache.sshd.SshClient" factory-method="setUpDefaultClient" scope="prototype">
    </bean>

    <bean name="sshServer" class="org.apache.sshd.SshServer" factory-method="setUpDefaultServer" scope="prototype">
        <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="org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider"/>

    <bean name="passwordAuthenticator" class="org.apache.geronimo.gshell.commands.ssh.JSecurityPasswordAuthenticator">
        <constructor-arg ref="securityManager"/>
    </bean>
    
</beans>