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

<server id="server" xmlns="http://mina.apache.org/ftpserver/spring/v1"
  xmlns:beans="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://mina.apache.org/ftpserver/spring/v1 
     https://mina.apache.org/ftpserver-project/ftpserver-1.0.xsd"
     max-logins="500"
     anon-enabled="false"
     max-anon-logins="123"
     max-login-failures="124"
     login-failure-delay="125"
     >

  <listeners>
    <nio-listener name="listener0" port="2222" local-address="1.2.3.4">
      <ssl>
        <keystore file="src/test/resources/ftpserver.jks" password="password"/>
      </ssl>

      <data-connection idle-timeout="100" implicit-ssl="true">
        <active enabled="true" local-address="1.2.3.4"/>
        <passive ports="123-125"/>
      </data-connection>
      <blacklist>1.2.3.0/16, 1.2.4.0/16, 1.2.3.4</blacklist>        
    </nio-listener>
    
    <listener name="listener1">
      <beans:bean id="listener1" class="org.apache.ftpserver.config.spring.MyCustomListener">
        <beans:property name="port" value="2223"/>
      </beans:bean>
    </listener>
    
    <listener name="listener2">
      <beans:bean class="org.apache.ftpserver.config.spring.MyCustomListener">
        <beans:property name="port" value="2224"/>
      </beans:bean>
    </listener>
  </listeners>

  <ftplets>
    <ftplet name="ftplet1">
      <beans:bean class="org.apache.ftpserver.config.spring.TestFtplet">
        <beans:property name="foo" value="123"/>
      </beans:bean>
    </ftplet>

    <ftplet name="ftplet2">
      <beans:bean class="org.apache.ftpserver.config.spring.TestFtplet">
        <beans:property name="foo" value="223"/>
      </beans:bean>
    </ftplet>
  </ftplets>

  <!--<file-user-manager file="src/test/resources/users.properties" encrypt-passwords="true" />-->
  <user-manager>
    <beans:bean class="org.apache.ftpserver.config.spring.MockUserManager"/>
  </user-manager>
  
  <native-filesystem case-insensitive="true" create-home="true" />
  
  <commands use-default="false">
    <command name="FOO">
      <beans:bean class="org.apache.ftpserver.command.impl.HELP" />
    </command>

    <command name="FOO2">
      <beans:bean class="org.apache.ftpserver.command.impl.STAT" />
    </command>
  </commands>
  <messages languages="en zh-tw" />
</server>

