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

📄 usermanagerpanel.java

📁 用java写的ftp服务器程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        
        // user download limit
        JLabel jDownloadLab = new JLabel("Max. Download (bytes/sec) :: ");
        jDownloadLab.setHorizontalAlignment(JLabel.RIGHT);
        jDownloadLab.setForeground(Color.black);
        gc.gridx = 0;
        gc.gridy = ++yindex;
        gc.gridwidth = 1;
        gc.anchor = GridBagConstraints.EAST;
        topPanel.add(jDownloadLab, gc);
        
        m_downloadLst = new JComboBox(BYTE_RATES);
        m_downloadLst.setPreferredSize(new Dimension(130, 22));
        m_downloadLst.setEditable(true);
        gc.gridx = 1;
        gc.gridy = yindex;
        gc.gridwidth = 2;
        gc.anchor = GridBagConstraints.WEST;
        topPanel.add(m_downloadLst, gc);
        
        JPanel btnPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        add(btnPanel, BorderLayout.SOUTH);
        
        // save user
        JButton saveBtn = new JButton("Save");
        saveBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                save();
            }
        });
        btnPanel.add(saveBtn);
        
        // delete user
        JButton deleteBtn = new JButton("Delete");
        deleteBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                delete();
            }
        });
        btnPanel.add(deleteBtn);
        
        // reload user data
        JButton reloadBtn = new JButton("Reload");
        reloadBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                refresh(m_fconfig);
            }
        });
        btnPanel.add(reloadBtn);
    }
    
    /**
     * 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();
        int option = JOptionPane.showConfirmDialog(this, 
                                                   "Generated password: " + password, 
                                                   "Password Generation", 
                                                   JOptionPane.OK_CANCEL_OPTION,
                                                   JOptionPane.INFORMATION_MESSAGE);
        if(option == JOptionPane.OK_OPTION) {
            m_passwordTxt.setText(password);
            m_retypePasswordTxt.setText(password);
            m_passwordChkBox.setSelected(true);
        }
    }

    
    /**
     * Refresh the panel - set the ftp config.
     */
    public void refresh(IFtpConfig config) {
        m_fconfig = config;
        m_userLst.removeAllItems();
        if(m_fconfig == null) {
            return;
        }
        
        UserManager userManager = m_fconfig.getUserManager();
        try {
            Iterator userIt = userManager.getAllUserNames().iterator();
            boolean hasUser = false;
            while(userIt.hasNext()) {
                hasUser = true;
                m_userLst.addItem(userIt.next());
            }
            if(hasUser) {
                m_userLst.setSelectedIndex(0);
            }
        }
        catch(Exception ex) {
            ex.printStackTrace();
            GuiUtils.showErrorMessage(this, "Cannot load user list.");
        }
    }
    
    /**
     * List selection changed. 
     */
    public void actionPerformed(ActionEvent e) {
        Object selVal = m_userLst.getSelectedItem();
        try {      
            if(selVal != null) {
                String userName = selVal.toString();
                User user = m_fconfig.getUserManager().getUserByName(userName);
                if (user == null) {
                    GuiUtils.showErrorMessage(this, userName + " : does not exist.");
                    refresh(m_fconfig);
                }
                else {
                    
                    // populate UI components
                    m_nameTxt.setText(user.getName());
                    m_passwordTxt.setText("");
                    m_retypePasswordTxt.setText("");
                    m_passwordChkBox.setSelected(false);
                    m_directoryTxt.setText(user.getHomeDirectory());
                    m_enabledChkBox.setSelected(user.getEnabled());
                    m_writeChkBox.setSelected(user.getWritePermission());
                    setIdleTimeCombo(m_idleLst, user.getMaxIdleTime());
                    setByteRateCombo(m_uploadLst, user.getMaxUploadRate());
                    setByteRateCombo(m_downloadLst, user.getMaxDownloadRate());
                }
            }
        }
        catch(FtpException ex) {
            GuiUtils.showErrorMessage(this, "Cannot fetch user information : " + selVal);
        }
    } 

        
    /**
     * Save user.
     */
    private void save() {
        // check user name field
        String userName = m_nameTxt.getText().trim();
        if(userName.equals("")) {
            GuiUtils.showErrorMessage(this, "Please enter an user name");
            return;
        }
        
        try {
            BaseUser user = new BaseUser();
            user.setName(userName);
            if(setPassword(user)) {
                user.setHomeDirectory(new File(m_directoryTxt.getText()).getCanonicalPath());
                user.setEnabled(m_enabledChkBox.isSelected());
                user.setWritePermission(m_writeChkBox.isSelected());
                user.setMaxIdleTime(getMaxIdleTime(m_uploadLst));
                user.setMaxUploadRate(getBytesTransferRate(m_uploadLst));
                user.setMaxDownloadRate(getBytesTransferRate(m_downloadLst));
                m_fconfig.getUserManager().save(user);
                refresh(m_fconfig);
                GuiUtils.showInformationMessage(this, "Saved user - " + user.getName());
            }
        }
        catch(Exception ex) {
            GuiUtils.showErrorMessage(this, ex.getMessage());
        }
    }
    
    
    /**
     * Set password if necessary.
     */
    private boolean setPassword(BaseUser usr) throws FtpException {
        
        String userName = usr.getName();
        boolean bNewUser = !m_fconfig.getUserManager().doesExist(userName);
        boolean bPassSet = m_passwordChkBox.isSelected();
        String password = new String(m_passwordTxt.getPassword());
        String repassword = new String(m_retypePasswordTxt.getPassword()); 
        boolean bAnonymous = userName.equals("anonymous");
        
        // new user
        if( bNewUser && (!bPassSet) && (!bAnonymous) ) {
            GuiUtils.showErrorMessage(this, "New user - password required");
            return false;
        }
        
        // password set 
        if( bPassSet && (!password.equals(repassword)) && (!bAnonymous) ) {
            GuiUtils.showErrorMessage(this, "Password entries are not equal");
            return false;
        }
        
        // set password if necessary
        if(bPassSet && (!bAnonymous)) {
            usr.setPassword(password);
        }
        else {
            usr.setPassword(null);
        }
        return true;
    } 

    /**
     * Get max bytes/sec.
     */
    private int getBytesTransferRate(JComboBox combo) {
        int rate = 0;
        Object selObj = combo.getSelectedItem();
        if (!selObj.equals(BYTE_RATES[0])) {
            try {
                rate = Integer.parseInt(selObj.toString());
            }
            catch(NumberFormatException ex) {
                GuiUtils.showErrorMessage(this, ex.getMessage());
            }
        }
        
        return rate;
    }
     
    /**
     * Get max idle time in sec.
     */
    private int getMaxIdleTime(JComboBox combo) {
        int sec = 0;
        Object selObj = combo.getSelectedItem();
        if (!selObj.equals(IDLE_SECONDS[0])) {
            try {
                sec = Integer.parseInt(selObj.toString());
            }
            catch(NumberFormatException ex) {
                GuiUtils.showErrorMessage(this, 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(JComboBox combo, int idle) {
        Object selItem = new Integer(idle);
        if (idle == 0){
            selItem = IDLE_SECONDS[0];
        }
        combo.setSelectedItem(selItem);
    }

    
    /**
     * Delete user.
     */
    private void delete() {
        Object selVal = m_userLst.getSelectedItem();
        if(selVal == null) {
            return;
        }
        
        String userName = selVal.toString();
        if(!GuiUtils.getConfirmation(this, "Do you really want to delete user " + userName + "?")) {
            return;
        }
        
        try {
            m_fconfig.getUserManager().delete(userName);
            refresh(m_fconfig);
            GuiUtils.showInformationMessage(this, "Deleted user - " + userName);
        }
        catch(Exception ex) {
            GuiUtils.showErrorMessage(this, "User delete error : " + userName);
        }
    }
    
    
    /**
     * Can this panel be displayed.
     */
    public boolean canBeDisplayed() {
        return (m_fconfig != null);
    }
    
    
    /**
     * String representation of this panel.
     */
    public String toString() {
        return "Users";
    }
}

⌨️ 快捷键说明

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