<?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="com.google.code.sshd.SshClient" factory-method="setUpDefaultClient" scope="prototype">
    </bean>

    <bean name="sshServer" class="com.google.code.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="com.google.code.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider"/>

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