adduser.java

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

JAVA
187
字号
/* * 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.main;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import org.apache.ftpserver.FtpServer;import org.apache.ftpserver.ftplet.Authority;import org.apache.ftpserver.ftplet.UserManager;import org.apache.ftpserver.impl.DefaultFtpServer;import org.apache.ftpserver.usermanager.impl.BaseUser;import org.apache.ftpserver.usermanager.impl.ConcurrentLoginPermission;import org.apache.ftpserver.usermanager.impl.PropertiesUserManager;import org.apache.ftpserver.usermanager.impl.TransferRatePermission;import org.apache.ftpserver.usermanager.impl.WritePermission;/** * Used to add users to the user manager for a particular FtpServer configuration * * @author The Apache MINA Project (dev@mina.apache.org) * @version $Rev$, $Date$ */public class AddUser extends CommandLine {    /**     * Instance methods only used internaly     */    protected AddUser() {    }    /**     * Used to add users to the user manager for a particular FtpServer configuration     *      * @param args     *            The first element of this array must specify the kind of     *            configuration to be used to start the server.     */    public static void main(String args[]) {        AddUser addUser = new AddUser();                try {            // get configuration            FtpServer server = addUser.getConfiguration(args);            if (server == null) {                return;            }                         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));                        UserManager um = ((DefaultFtpServer)server).getUserManager();                        BaseUser user = new BaseUser();            System.out.println("Asking for details of the new user");                        System.out.println();            String userName = askForString(in, "User name:", "User name is mandatory");            if(userName == null) {                return;            }            user.setName(userName);                        user.setPassword(askForString(in, "Password:"));                        String home = askForString(in, "Home directory:", "Home directory is mandatory");            if(home == null) {                return;                        }            user.setHomeDirectory(home);                        user.setEnabled(askForBoolean(in, "Enabled (Y/N):"));            user.setMaxIdleTime(askForInt(in, "Max idle time in seconds (0 for none):"));                        List<Authority> authorities = new ArrayList<Authority>();                        if(askForBoolean(in, "Write permission (Y/N):")) {                authorities.add(new WritePermission());            }            int maxLogins = askForInt(in, "Maximum number of concurrent logins (0 for no restriction)");            int maxLoginsPerIp = askForInt(in, "Maximum number of concurrent logins per IP (0 for no restriction)");                        authorities.add(new ConcurrentLoginPermission(maxLogins, maxLoginsPerIp));                        int downloadRate = askForInt(in, "Maximum download rate (0 for no restriction)");            int uploadRate = askForInt(in, "Maximum upload rate (0 for no restriction)");                        authorities.add(new TransferRatePermission(downloadRate, uploadRate));                        user.setAuthorities(authorities);                        um.save(user);                        if(um instanceof PropertiesUserManager) {                File file = ((PropertiesUserManager) um).getFile();                                if(file != null) {                    System.out.println("User saved to file: " + file.getAbsolutePath());                } else {                    System.err.println("User manager does not have a file configured, will not save user to file");                }            } else {                System.out.println("User saved");            }        } catch (Exception ex) {            ex.printStackTrace();        }    }    private static String askForString(BufferedReader in, String question) throws IOException {        System.out.println(question);        return in.readLine();    }    private static String askForString(BufferedReader in, String question, String mandatoryMessage) throws IOException {        String s = askForString(in, question);        if(isEmpty(s)) {            System.err.println(mandatoryMessage);            return null;        } else {            return s;        }    }        private static int askForInt(BufferedReader in, String question) throws IOException {        System.out.println(question);        String intValue = in.readLine();        return Integer.parseInt(intValue);    }    private static boolean askForBoolean(BufferedReader in, String question) throws IOException {        System.out.println(question);        String boolValue = in.readLine();        return "Y".equalsIgnoreCase(boolValue);    }        private static boolean isEmpty(String s) {        if(s == null) {            return true;        } else {            return s.trim().length() == 0;        }    }        /**     * Print the usage message.     */    protected void usage() {        System.err.println("Usage: java " + AddUser.class.getName() + " [OPTION] [CONFIGFILE]");        System.err                .println("Starts the user management application, asking for user settings");        System.err.println("");        System.err                .println("      --default              use the default configuration, ");        System.err                .println("                             also used if no command line argument is given ");        System.err.println("  -?, --help                 print this message");    }}

⌨️ 快捷键说明

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