亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? propertiesusermanager.java

?? 一個(gè)利用Java語言實(shí)現(xiàn)的ftp程序
?? JAVA
字號:
/*
 * Copyright (C) The Apache Software Foundation. All rights reserved.
 *
 * This software is published under the terms of the Apache Software License
 * version 1.1, a copy of which has been included with this distribution in
 * the LICENSE file.
 */
package server.ftp.usermanager;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;

import io.IoUtils;
import server.ftp.FtpConfig;
import util.BaseProperties;
import util.EncryptUtils;

/**
 * Properties file based <code>UserManager</code>
 * implementation. We use <code>user.properties</code> file
 * to store user data.
 * 
 * @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a>
 */
public
class PropertiesUserManager extends UserManager  {

    private final static String PREFIX    = "FtpServer.user.";
    private final static String USER_PROP = "user.properties";

    private BaseProperties mUserData;
    private File       mUserDataFile;
    private boolean    mbEncrypt;
    
    private long mlLastModified;
    
    /**
     * Instantiate user manager.
     *
     * @param cfg Ftp config object.
     */
    public PropertiesUserManager(FtpConfig cfg) throws IOException {
        super(cfg);
        
        mUserDataFile = new File(mConfig.getDataDir(), USER_PROP);
        mUserDataFile.createNewFile();
        mUserData = new BaseProperties(mUserDataFile);
        mbEncrypt = cfg.getBoolean(FtpConfig.PREFIX + "prop.encrypt", false);
        mlLastModified = mUserDataFile.lastModified();
        cfg.getLogger().info("Loaded user data file " + mUserDataFile.getAbsolutePath());
    }


    /**
     * Save user data. Store the properties.
     */
    public synchronized void save(User usr) throws IOException {

       // null value check
       if(usr.getName() == null) {
           throw new NullPointerException("User name is null.");
       }
       String thisPrefix = PREFIX + usr.getName() + '.';
       
       // set other properties
       mUserData.setProperty(thisPrefix+"password", getPassword(usr));
       mUserData.setProperty(thisPrefix+"home",     usr.getVirtualDirectory().getRootDirectory());
       mUserData.setProperty(thisPrefix+"enabled",  usr.getEnabled());
       mUserData.setProperty(thisPrefix+"write",    usr.getVirtualDirectory().getWritePermission());
       mUserData.setProperty(thisPrefix+"idle",     usr.getMaxIdleTime());
       mUserData.setProperty(thisPrefix+"upload",   usr.getMaxUploadRate());
       mUserData.setProperty(thisPrefix+"download", usr.getMaxDownloadRate());
   
       // save user data
       FileOutputStream fos = null;
       try {
           fos = new FileOutputStream(mUserDataFile);
           mUserData.store(fos, "Generated file - don't edit (please)");
           mlLastModified = mUserDataFile.lastModified();
       }
       finally {
           IoUtils.close(fos);
       }
    }
     

    /**
     * Delete an user. Removes all this user entries from the properties.
     * After removing the corresponding from the properties, save the data.
     */
    public synchronized void delete(String usrName) throws IOException {
        
        // remove entries from properties
        String thisPrefix = PREFIX + usrName + '.';
        Enumeration propNames = mUserData.propertyNames();
        ArrayList remKeys = new ArrayList();
        while(propNames.hasMoreElements()) {
            String thisKey = propNames.nextElement().toString();
            if(thisKey.startsWith(thisPrefix)) {
                remKeys.add(thisKey);
            }
        }
        Iterator remKeysIt = remKeys.iterator();
        while (remKeysIt.hasNext()) {
            mUserData.remove(remKeysIt.next().toString());
        }
        
        // save user data
        FileOutputStream fos = null;
        try {    
            fos = new FileOutputStream(mUserDataFile);
            mUserData.store(fos, "Generated file - don't edit (please)");
            mlLastModified = mUserDataFile.lastModified();
        }
        finally {
            IoUtils.close(fos);
        }
    }
    
    
    /**
     * Get user password. Returns the encrypted value.
     * <pre>
     * If the password value is not null
     *    password = new password 
     * else 
     *   if user does exist
     *     password = old password
     *   else 
     *     password = ""
     * </pre>
     */
    private String getPassword(User usr) {
        String password = usr.getPassword();
        if (password != null) {
            if (mbEncrypt) {
                password = EncryptUtils.encryptMD5(password);
            }
        }
        else if ( doesExist(usr.getName()) ) {
            String key = PREFIX + usr.getName() + ".password";
            password = mUserData.getProperty(key, "");
        }
        
        if (password == null) {
            password = "";
        }
        
        return password;
    } 
    
    
    /**
     * Get all user names.
     */
    public synchronized Collection getAllUserNames() {

        // get all user names
        ArrayList ulst = new ArrayList();
        Enumeration allKeys = mUserData.propertyNames();
        while(allKeys.hasMoreElements()) {
            String key = (String)allKeys.nextElement();
            if(key.endsWith(".home")) {
                String name = key.substring(PREFIX.length());
                int endIndex = name.length() - ".home".length();
                name = name.substring(0, endIndex);
                ulst.add(name);
            }
        }
        
        Collections.sort(ulst);
        return ulst;
    }


    /**
     * Load user data.
     */
    public synchronized User getUserByName(String userName) {
        
        if (!doesExist(userName)) {
            return null;
        }
        
        String baseKey = PREFIX + userName + '.';
        User user = new User();
        user.setName(userName);
        user.setEnabled(mUserData.getBoolean(baseKey + "enabled", true));
        user.getVirtualDirectory().setRootDirectory( mUserData.getFile(baseKey + "home", new File("/")) );
        user.getVirtualDirectory().setWritePermission(mUserData.getBoolean(baseKey + "write", false));
        user.setMaxIdleTime(mUserData.getInteger(baseKey + "idle", 0));
        user.setMaxUploadRate(mUserData.getInteger(baseKey + "upload", 0));
        user.setMaxDownloadRate(mUserData.getInteger(baseKey + "download", 0));
        return user;
    }
    
    
    /**
     * User existance check
     */
    public synchronized boolean doesExist(String name) {
        String key = PREFIX + name + ".home";
        return mUserData.containsKey(key);
    }
    
    
    /**
     * User authenticate method
     */
    public synchronized boolean authenticate(String user, String password) {
        String passVal = mUserData.getProperty(PREFIX + user + ".password");
        if (mbEncrypt) {
            password = EncryptUtils.encryptMD5(password);
        }
        return password.equals(passVal);
    }
    
    /**
     * Reload the user data if necessary
     */
    public synchronized void reload() throws IOException {
        long lastModified = mUserDataFile.lastModified();
        if (lastModified > mlLastModified) {
            FileInputStream fis = new FileInputStream(mUserDataFile);
            mUserData.load(fis);
            fis.close();
            mlLastModified = lastModified;
            getConfig().getLogger().info("File modified - loading " + mUserDataFile.getAbsolutePath());
        }
    }
    
    /**
     * Close the user manager - remove existing entries.
     */
    public synchronized void dispose() {
        if (mUserData != null) {
            mUserData.clear();
            mUserData = null;
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一二三精品| 国产高清不卡二三区| 精品999在线播放| 96av麻豆蜜桃一区二区| 美女视频黄免费的久久 | 国产日韩欧美激情| 91精品国产综合久久婷婷香蕉| 丁香啪啪综合成人亚洲小说| 久久精品国产精品亚洲红杏| 又紧又大又爽精品一区二区| 久久久综合精品| 欧美一区二区性放荡片| 91美女片黄在线观看91美女| 国产在线精品免费| 日本麻豆一区二区三区视频| 亚洲成人1区2区| 一区二区三区中文免费| 国产精品视频一区二区三区不卡| 日韩午夜精品电影| 欧美伦理电影网| 在线欧美一区二区| 色婷婷av一区二区三区gif| 国产sm精品调教视频网站| 狠狠网亚洲精品| 秋霞电影一区二区| 欧美a一区二区| 国产成人精品免费| 国产美女在线精品| 久久不见久久见中文字幕免费| 视频精品一区二区| 一区二区三区国产精华| 一区二区三区四区在线| 亚洲视频一二区| 亚洲欧美日韩电影| 亚洲精品综合在线| 亚洲色图在线播放| 亚洲精品国产高清久久伦理二区| 国产精品久久久久影院| 国产精品美女久久久久久2018 | 欧美一级艳片视频免费观看| 在线成人免费观看| 91精品在线麻豆| 日韩欧美色电影| 日韩一区二区精品在线观看| 欧美一区二区三区在线电影| 日韩欧美在线一区二区三区| 精品国产伦理网| 国产色一区二区| 成人免费在线观看入口| 亚洲蜜臀av乱码久久精品蜜桃| 一区二区三区91| 日韩国产在线一| 精品一区二区三区av| 国产成人午夜片在线观看高清观看| 成人午夜激情在线| 色诱视频网站一区| 欧美久久婷婷综合色| 欧美一级精品大片| 久久九九久精品国产免费直播| 国产精品天天看| 亚洲一级电影视频| 老司机精品视频在线| 风间由美中文字幕在线看视频国产欧美| 国产成人99久久亚洲综合精品| www.66久久| 欧美日韩视频在线第一区| 日韩欧美激情在线| 亚洲国产成人自拍| 亚洲精品国产第一综合99久久| 日韩av中文在线观看| 久久99国产精品久久99果冻传媒| 成人久久18免费网站麻豆| 欧美视频第二页| 久久女同精品一区二区| 成人欧美一区二区三区视频网页| 婷婷亚洲久悠悠色悠在线播放| 久久99国产精品尤物| 91在线视频播放| 欧美一卡二卡在线观看| 欧美韩日一区二区三区| 99国产精品久久久久久久久久| 欧美日韩一区二区三区在线看| 精品国产成人在线影院| 亚洲免费观看高清完整版在线观看| 免费成人在线网站| jiyouzz国产精品久久| 4438x亚洲最大成人网| 国产精品国产三级国产aⅴ原创 | 成人h动漫精品一区二| 欧美撒尿777hd撒尿| 国产亚洲精品aa午夜观看| 亚洲动漫第一页| 国产成人亚洲精品青草天美| 在线成人小视频| 亚洲欧美偷拍三级| 国产一区二区免费在线| 欧美日韩国产一二三| 久久精品视频一区二区三区| 天天色天天操综合| 成人高清在线视频| 精品成人一区二区三区四区| 亚洲一级不卡视频| av电影一区二区| 国产婷婷一区二区| 奇米在线7777在线精品| 欧美性生活影院| 国产精品第五页| 国产精品一区二区三区乱码| 日韩一区二区在线免费观看| 亚洲成人av电影在线| 91免费版pro下载短视频| 26uuu国产一区二区三区| 日韩精品一二区| 在线观看精品一区| 亚洲人成伊人成综合网小说| 国产凹凸在线观看一区二区| 精品久久久久久久久久久久久久久| 五月天精品一区二区三区| 色吊一区二区三区| 亚洲欧美在线高清| 99久久婷婷国产综合精品| 国产日韩欧美精品在线| 国产乱淫av一区二区三区| 久久夜色精品国产噜噜av| 蜜臀精品一区二区三区在线观看 | 久久精品无码一区二区三区| 精品在线你懂的| 精品久久国产字幕高潮| 麻豆久久一区二区| 日韩欧美中文字幕一区| 蜜桃av一区二区在线观看| 日韩午夜电影在线观看| 日韩电影在线观看网站| 国产精品成人免费在线| 成人免费精品视频| 亚洲视频免费看| 在线看国产一区| 亚洲大片在线观看| 欧美视频一区二| 日韩av一级片| 日韩一区二区麻豆国产| 韩国三级在线一区| 国产色91在线| 9久草视频在线视频精品| 中文字幕一区二区在线观看| 91网站视频在线观看| 尤物av一区二区| 欧美精品一二三区| 久久精品国产色蜜蜜麻豆| 日韩免费高清电影| 国产一区二区免费看| 国产精品成人一区二区艾草 | 国产成人无遮挡在线视频| 久久精品一区蜜桃臀影院| 不卡区在线中文字幕| 亚洲日本一区二区| 欧美午夜精品一区| 日本少妇一区二区| 久久久久高清精品| 99精品视频一区| 亚洲成av人片www| 久久伊99综合婷婷久久伊| 成人美女视频在线观看| 亚洲综合在线电影| 日韩精品中文字幕在线不卡尤物 | 91免费国产在线观看| 亚洲一区二区精品久久av| 日韩女优制服丝袜电影| 丁香激情综合国产| 亚洲第一电影网| 久久久国际精品| 欧美视频三区在线播放| 国产综合色产在线精品| 亚洲欧美日韩国产一区二区三区 | 欧美一区二区播放| 懂色av一区二区三区蜜臀| 亚洲一区二区三区美女| 精品国产人成亚洲区| 91视视频在线观看入口直接观看www| 亚洲成在线观看| 国产精品全国免费观看高清| 欧美性生交片4| 粉嫩嫩av羞羞动漫久久久| 亚洲成人资源网| 国产精品欧美一级免费| 欧美一级电影网站| bt7086福利一区国产| 人人爽香蕉精品| 亚洲人成亚洲人成在线观看图片 | 欧美精品一区二区精品网| 色婷婷一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 国产色91在线| 欧美一区二区三区在线电影 | 欧美大片在线观看一区二区| 色女孩综合影院| 国产传媒久久文化传媒| 日韩不卡一二三区| 亚洲男人的天堂一区二区| 久久这里都是精品|