⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftpuserpanel.java

📁 一个利用Java语言实现的ftp程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        add(mjUploadLst, gc);
        
        // user download limit
        JLabel jDownloadLab = new JLabel("Max. Download (bytes/sec)");
        jDownloadLab.setHorizontalAlignment(JLabel.RIGHT);
        jDownloadLab.setForeground(Color.black);
        gc = new GridBagConstraints();
        gc.gridx = 0;
        gc.gridy = ++yindex;
        gc.gridwidth = 1;
        gc.insets = new Insets(3, 0, 0, 3);
        gc.anchor = GridBagConstraints.EAST;
        add(jDownloadLab, gc);
        
        mjDownloadLst = new JComboBox(BYTE_RATES);
        mjDownloadLst.setEditable(true);
        gc = new GridBagConstraints();
        gc.gridx = 1;
        gc.gridy = yindex;
        gc.gridwidth = 2;
        gc.insets = new Insets(3, 0, 0, 3);
        gc.anchor = GridBagConstraints.WEST;
        add(mjDownloadLst, gc);
        
        JPanel btnPane = new JPanel();
        btnPane.setLayout(new FlowLayout(FlowLayout.CENTER));

        // save user
        JButton jSaveBtn = new JButton("Save");
        jSaveBtn.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent evt) {
                save();
             }
        });
        btnPane.add(jSaveBtn);
        
        // delete user
        JButton jDeleteBtn = new JButton("Delete");
        jDeleteBtn.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent evt) {
                delete();
             }
        });
        btnPane.add(jDeleteBtn);
        
        // reload user data
        JButton jReloadBtn = new JButton("Reload");
        jReloadBtn.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent evt) {
                reloadUsers();
             }
        });
        btnPane.add(jReloadBtn);
        
        gc = new GridBagConstraints();
        gc.gridx = 0;
        gc.gridy = ++yindex;
        gc.gridwidth = 3;
        add(btnPane, gc);
    }
    
     
    /**
     * Browse root level directory
     */
    private void browse(ActionEvent evt) {
        String dirName = GuiUtils.getDirName(getTree().getRootPanel());
        if(dirName != null) {
            mjDirectoryTxt.setText(dirName);
        }
    }
        
    /**
     * Save the user object
     */
    private void save() {
        
        // check user name field
        String userName = mjNameTxt.getText().trim();
        if(userName.equals("")) {
            GuiUtils.showErrorMessage(getTree().getRootPanel(), "Please enter an user name");
            return;
        }
        
        try {
            FtpUser user = new FtpUser();
            user.setName(userName);
            if(setPassword(user)) {
              user.getVirtualDirectory().setRootDirectory(new File(mjDirectoryTxt.getText()).getCanonicalFile());
              user.setEnabled(mjEnabledChkBox.isSelected());
              user.getVirtualDirectory().setWritePermission(mjWriteChkBox.isSelected());
              user.setMaxIdleTime(getMaxIdleTime());
              user.setMaxUploadRate(getBytesTransferRate(mjUploadLst));
              user.setMaxDownloadRate(getBytesTransferRate(mjDownloadLst));
              mConfig.getUserManager().save(user);
              refresh(mConfig);
              mConfig.getLogger().info("Saved user - " + user.getName());
            }
        }
        catch(Exception ex) {
            mConfig.getLogger().error(ex);
            GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
        }
    }
    
    
    /**
     * Save the user object
     */
    private void delete() {
        Object selVal = mjUserLst.getSelectedItem();
        if(selVal == null) {
            return;
        }
        
        String userName = selVal.toString();
        boolean bConf = GuiUtils.getConfirmation(getTree().getRootPanel(), "Do you really want to delete user " + userName + "?");
        if(!bConf) {
            return;
        }
        try {
            mConfig.getUserManager().delete(userName);
            refresh(mConfig);
            mConfig.getLogger().info("Deleted user - " + userName);
        }
        catch(Exception ex) {
            mConfig.getLogger().error(ex);
            GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
        }
    }
    
    /**
     * Initialize user list.
     */
    public void reloadUsers() {
        try {
            mConfig.getUserManager().reload();
            refresh(mConfig);
        }
        catch(Exception ex) {
           mConfig.getLogger().error(ex);
           GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage()); 
        }
    }
    
    
    
    /**
     * List selection changed. 
     */
    public void actionPerformed(ActionEvent e) {
        Object selVal = mjUserLst.getSelectedItem();
        if(selVal != null) {
            String userName = selVal.toString();
            User thisUser = mConfig.getUserManager().getUserByName(userName);
            if (thisUser == null) {
                GuiUtils.showErrorMessage(getTree().getRootPanel(), userName + " : does not exist.");
                refresh(mConfig);
            }
            else {
                populateFields(thisUser);
            }
        }
    } 
    
    /**
     * Populate user data fields.
     */
    public void populateFields(User user) {
        mjNameTxt.setText(user.getName());
        mjPasswordTxt.setText("");
        mjRetypePasswordTxt.setText("");
        mjPasswordChkBox.setSelected(false);
        mjDirectoryTxt.setText(user.getVirtualDirectory().getRootDirectory());
        mjEnabledChkBox.setSelected(user.getEnabled());
        mjWriteChkBox.setSelected(user.getVirtualDirectory().getWritePermission());
        setIdleTimeCombo(user.getMaxIdleTime());
        setByteRateCombo(mjUploadLst, user.getMaxUploadRate());
        setByteRateCombo(mjDownloadLst, user.getMaxDownloadRate());
    }
    
    /**
     * Generate random password.
     */
    private void generatePassword() {
        StringBuffer sb = new StringBuffer(8);
        for(int i=0; i<8; i++) {
            int charType = PASS_GEN.nextInt(3);
            switch (charType) {
            
                // number
                case 0:
                    sb.append( (char)('0' + PASS_GEN.nextInt(10)) );
                    break;
                
                // uppercase character    
                case 1:    
                    sb.append( (char)('A' + PASS_GEN.nextInt(26)) );
                    break;
                    
                // lowercase character
                case 2:
                    sb.append( (char)('a' + PASS_GEN.nextInt(26)) );
                    break;
            }
        }
        String password = sb.toString();
        GuiUtils.showInformationMessage(getTree().getRootPanel(), "Generated password: " + password);
        mjPasswordTxt.setText(password);
        mjRetypePasswordTxt.setText(password);
        mjPasswordChkBox.setSelected(true);
    }
    
    
    /**
     * Set password if necessary.
     */
    private boolean setPassword(FtpUser usr) {
        
        String userName = usr.getName();
        boolean bNewUser = !mConfig.getUserManager().doesExist(userName);
        boolean bPassSet = mjPasswordChkBox.isSelected();
        String password = new String(mjPasswordTxt.getPassword());
        String repassword = new String(mjRetypePasswordTxt.getPassword()); 
        
        // new user
        if( bNewUser && (!bPassSet) && (!usr.getIsAnonymous()) ) {
            GuiUtils.showErrorMessage(getTree().getRootPanel(), "New user - password required");
            return false;
        }
        
        // password set 
        if( bPassSet && (!password.equals(repassword)) && (!usr.getIsAnonymous()) ) {
            GuiUtils.showErrorMessage(getTree().getRootPanel(), "Password entries are not equal");
            return false;
        }
        
        // set password if necessary
        if(bPassSet && (!usr.getIsAnonymous())) {
            usr.setPassword(password);
        }
        else {
            usr.setPassword(null);
        }
        return true;
    } 
    
    /**
     * Get max bytes/sec.
     */
    private int getBytesTransferRate(JComboBox byteLst) {
        int rate = 0;
        Object selObj = byteLst.getSelectedItem();
        if (!selObj.equals(BYTE_RATES[0])) {
            try {
                rate = Integer.parseInt(selObj.toString());
            }
            catch(NumberFormatException ex) {
                GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
            }
        }
        
        return rate;
    }
     
    /**
     * Get max idle time in sec.
     */
    private int getMaxIdleTime() {
        int sec = 0;
        Object selObj = mjIdleLst.getSelectedItem();
        if (!selObj.equals(IDLE_SECONDS[0])) {
            try {
                sec = Integer.parseInt(selObj.toString());
            }
            catch(NumberFormatException ex) {
                GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
            }
        }
        
        return sec;
    }
    
    /**
     * Set byte transfer rate combo.
     */
    private void setByteRateCombo(JComboBox combo, int rate) {
        Object selItem = new Integer(rate);
        if (rate == 0) {
            selItem = BYTE_RATES[0];
        }
        combo.setSelectedItem(selItem);
    }
    
    /**
     * Set idle time combo.
     */
    private void setIdleTimeCombo(int idle) {
        Object selItem = new Integer(idle);
        if (idle == 0){
            selItem = IDLE_SECONDS[0];
        }
        mjIdleLst.setSelectedItem(selItem);
    } 
    
    /**
     * Initialize user list.
     */
    public void refresh(FtpConfig cfg) {
        mConfig = cfg;
        mjUserLst.removeAllItems();
        
        if (cfg != null) {
            Iterator userIt = mConfig.getUserManager().getAllUserNames().iterator();
            while(userIt.hasNext()) {
                mjUserLst.addItem(userIt.next());
            }
        }
    }
    
    
    /**
     * Is displayable.
     */
    public boolean isDisplayable() {
        return mConfig != null;
    } 
     
}

⌨️ 快捷键说明

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