defaultftpservercontext.java

来自「JAVA FTP 上传下载 的源文件」· Java 代码 · 共 248 行

JAVA
248
字号
/* * 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. */package org.apache.ftpserver.impl;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.ftpserver.ConnectionConfig;import org.apache.ftpserver.ConnectionConfigFactory;import org.apache.ftpserver.command.CommandFactory;import org.apache.ftpserver.command.CommandFactoryFactory;import org.apache.ftpserver.filesystem.nativefs.NativeFileSystemFactory;import org.apache.ftpserver.ftplet.Authority;import org.apache.ftpserver.ftplet.FileSystemFactory;import org.apache.ftpserver.ftplet.FtpStatistics;import org.apache.ftpserver.ftplet.Ftplet;import org.apache.ftpserver.ftplet.UserManager;import org.apache.ftpserver.ftpletcontainer.FtpletContainer;import org.apache.ftpserver.ftpletcontainer.impl.DefaultFtpletContainer;import org.apache.ftpserver.listener.Listener;import org.apache.ftpserver.listener.ListenerFactory;import org.apache.ftpserver.message.MessageResource;import org.apache.ftpserver.message.MessageResourceFactory;import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;import org.apache.ftpserver.usermanager.impl.BaseUser;import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;import org.apache.ftpserver.usermanager.impl.TransferRatePermission;import org.apache.ftpserver.usermanager.impl.WritePermission;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * <strong>Internal class, do not use directly.</strong> *  * FTP server configuration implementation. It holds all the components used. * * @author The Apache MINA Project (dev@mina.apache.org) * @version $Rev$, $Date$ */public class DefaultFtpServerContext implements FtpServerContext {    private final Logger LOG = LoggerFactory            .getLogger(DefaultFtpServerContext.class);    private MessageResource messageResource = new MessageResourceFactory().createMessageResource();    private UserManager userManager = new PropertiesUserManagerFactory().createUserManager();    private FileSystemFactory fileSystemManager = new NativeFileSystemFactory();    private FtpletContainer ftpletContainer = new DefaultFtpletContainer();    private FtpStatistics statistics = new DefaultFtpStatistics();    private CommandFactory commandFactory = new CommandFactoryFactory().createCommandFactory();    private ConnectionConfig connectionConfig = new ConnectionConfigFactory().createConnectionConfig();    private Map<String, Listener> listeners = new HashMap<String, Listener>();    private static final List<Authority> ADMIN_AUTHORITIES = new ArrayList<Authority>();    private static final List<Authority> ANON_AUTHORITIES = new ArrayList<Authority>();    static {        ADMIN_AUTHORITIES.add(new WritePermission());                ANON_AUTHORITIES.add(new ConcurrentLoginPermission(20, 2));        ANON_AUTHORITIES.add(new TransferRatePermission(4800, 4800));    }        public DefaultFtpServerContext() {        // create the default listener        listeners.put("default", new ListenerFactory().createListener());    }    /**     * Create default users.     */    public void createDefaultUsers() throws Exception {        UserManager userManager = getUserManager();        // create admin user        String adminName = userManager.getAdminName();        if (!userManager.doesExist(adminName)) {            LOG.info("Creating user : " + adminName);            BaseUser adminUser = new BaseUser();            adminUser.setName(adminName);            adminUser.setPassword(adminName);            adminUser.setEnabled(true);            adminUser.setAuthorities(ADMIN_AUTHORITIES);            adminUser.setHomeDirectory("./res/home");            adminUser.setMaxIdleTime(0);            userManager.save(adminUser);        }        // create anonymous user        if (!userManager.doesExist("anonymous")) {            LOG.info("Creating user : anonymous");            BaseUser anonUser = new BaseUser();            anonUser.setName("anonymous");            anonUser.setPassword("");            anonUser.setAuthorities(ANON_AUTHORITIES);            anonUser.setEnabled(true);            anonUser.setHomeDirectory("./res/home");            anonUser.setMaxIdleTime(300);            userManager.save(anonUser);        }    }    /**     * Get user manager.     */    public UserManager getUserManager() {        return userManager;    }    /**     * Get file system manager.     */    public FileSystemFactory getFileSystemManager() {        return fileSystemManager;    }    /**     * Get message resource.     */    public MessageResource getMessageResource() {        return messageResource;    }    /**     * Get ftp statistics.     */    public FtpStatistics getFtpStatistics() {        return statistics;    }    public void setFtpStatistics(FtpStatistics statistics) {        this.statistics = statistics;    }    /**     * Get ftplet handler.     */    public FtpletContainer getFtpletContainer() {        return ftpletContainer;    }    /**     * Get the command factory.     */    public CommandFactory getCommandFactory() {        return commandFactory;    }    /**     * Get Ftplet.     */    public Ftplet getFtplet(String name) {        return ftpletContainer.getFtplet(name);    }    /**     * Close all the components.     */    public void dispose() {        listeners.clear();        ftpletContainer.getFtplets().clear();    }    public Listener getListener(String name) {        return listeners.get(name);    }    public void setListener(String name, Listener listener) {        listeners.put(name, listener);    }    public Map<String, Listener> getListeners() {        return listeners;    }    public void setListeners(Map<String, Listener> listeners) {        this.listeners = listeners;    }    public void addListener(String name, Listener listener) {        listeners.put(name, listener);    }    public Listener removeListener(String name) {        return listeners.remove(name);    }    public void setCommandFactory(CommandFactory commandFactory) {        this.commandFactory = commandFactory;    }    public void setFileSystemManager(FileSystemFactory fileSystemManager) {        this.fileSystemManager = fileSystemManager;    }    public void setFtpletContainer(FtpletContainer ftpletContainer) {        this.ftpletContainer = ftpletContainer;    }    public void setMessageResource(MessageResource messageResource) {        this.messageResource = messageResource;    }    public void setUserManager(UserManager userManager) {        this.userManager = userManager;    }    public ConnectionConfig getConnectionConfig() {        return connectionConfig;    }    public void setConnectionConfig(ConnectionConfig connectionConfig) {        this.connectionConfig = connectionConfig;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?