📄 dbusermanager.java
字号:
/**
* Get the user object. Fetch the row from the table.
*/
public synchronized User getUserByName(String name) throws FtpException {
Statement stmt = null;
ResultSet rs = null;
try {
// create sql query
HashMap map = new HashMap();
map.put( BaseUser.ATTR_LOGIN, escapeString(name) );
String sql = StringUtils.replaceString(m_selectUserStmt, map);
m_log.info(sql);
// execute query
prepareConnection();
stmt = m_connection.createStatement();
rs = stmt.executeQuery(sql);
// populate user object
BaseUser thisUser = null;
String trueStr = Boolean.TRUE.toString();
if(rs.next()) {
thisUser = new BaseUser();
thisUser.setName(rs.getString(BaseUser.ATTR_LOGIN));
thisUser.setHomeDirectory(rs.getString(BaseUser.ATTR_HOME));
thisUser.setEnabled(trueStr.equalsIgnoreCase(rs.getString(BaseUser.ATTR_ENABLE)));
thisUser.setWritePermission(trueStr.equalsIgnoreCase(rs.getString(BaseUser.ATTR_WRITE_PERM)));
thisUser.setMaxIdleTime(rs.getInt(BaseUser.ATTR_MAX_IDLE_TIME));
thisUser.setMaxUploadRate(rs.getInt(BaseUser.ATTR_MAX_UPLOAD_RATE));
thisUser.setMaxDownloadRate(rs.getInt(BaseUser.ATTR_MAX_DOWNLOAD_RATE));
}
return thisUser;
}
catch(SQLException ex) {
m_log.error("DbUserManager.getUserByName()", ex);
throw new FtpException("DbUserManager.getUserByName()", ex);
}
finally {
if(rs != null) {
try {
rs.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.getUserByName()", ex);
}
}
if(stmt != null) {
try {
stmt.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.getUserByName()", ex);
}
}
}
}
/**
* User existance check.
*/
public synchronized boolean doesExist(String name) throws FtpException {
Statement stmt = null;
ResultSet rs = null;
try {
// create the sql
HashMap map = new HashMap();
map.put( BaseUser.ATTR_LOGIN, escapeString(name) );
String sql = StringUtils.replaceString(m_selectUserStmt, map);
m_log.info(sql);
// execute query
prepareConnection();
stmt = m_connection.createStatement();
rs = stmt.executeQuery(sql);
return rs.next();
}
catch(SQLException ex) {
m_log.error("DbUserManager.doesExist()", ex);
throw new FtpException("DbUserManager.doesExist()", ex);
}
finally {
if(rs != null) {
try {
rs.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.doesExist()", ex);
}
}
if(stmt != null) {
try {
stmt.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.doesExist()", ex);
}
}
}
}
/**
* Get all user names from the database.
*/
public synchronized Collection getAllUserNames() throws FtpException {
Statement stmt = null;
ResultSet rs = null;
try {
// create sql query
String sql = m_selectAllStmt;
m_log.info(sql);
// execute query
prepareConnection();
stmt = m_connection.createStatement();
rs = stmt.executeQuery(sql);
// populate list
ArrayList names = new ArrayList();
while(rs.next()) {
names.add(rs.getString(BaseUser.ATTR_LOGIN));
}
return names;
}
catch(SQLException ex) {
m_log.error("DbUserManager.getAllUserNames()", ex);
throw new FtpException("DbUserManager.getAllUserNames()", ex);
}
finally {
if(rs != null) {
try {
rs.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.getAllUserNames()", ex);
}
}
if(stmt != null) {
try {
stmt.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.getAllUserNames()", ex);
}
}
}
}
/**
* Get user password.
* <pre>
* If the password value is not null
* password = new password
* else
* if user does exist
* password = old password
* else
* password = ""
* </pre>
*/
private synchronized String getPassword(User user) throws SQLException {
String password = user.getPassword();
if (password != null) {
return password;
}
// create sql query
HashMap map = new HashMap();
map.put( BaseUser.ATTR_LOGIN, escapeString(user.getName()) );
String sql = StringUtils.replaceString(m_selectUserStmt, map);
m_log.info(sql);
// execute query
Statement stmt = null;
ResultSet rs = null;
try {
prepareConnection();
stmt = m_connection.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
password = rs.getString(BaseUser.ATTR_PASSWORD);
}
}
finally {
if(rs != null) {
try {
rs.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.getPassword()", ex);
}
}
if(stmt != null) {
try {
stmt.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.getPassword()", ex);
}
}
}
if (password == null) {
password = "";
}
return password;
}
/**
* User authentication.
*/
public synchronized boolean authenticate(String user,
String password) throws FtpException {
// check input
if( (user == null) || (password == null) ) {
return false;
}
Statement stmt = null;
ResultSet rs = null;
try {
// create the sql query
HashMap map = new HashMap();
map.put( BaseUser.ATTR_LOGIN, escapeString(user) );
map.put( BaseUser.ATTR_PASSWORD, escapeString(password) );
String sql = StringUtils.replaceString(m_authenticateStmt, map);
m_log.info(sql);
// execute query
prepareConnection();
stmt = m_connection.createStatement();
rs = stmt.executeQuery(sql);
return rs.next();
}
catch(SQLException ex) {
m_log.error("DbUserManager.authenticate()", ex);
throw new FtpException("DbUserManager.authenticate()", ex);
}
finally {
if(rs != null) {
try {
rs.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.authenticate()", ex);
}
}
if(stmt != null) {
try {
stmt.close();
}
catch(Exception ex) {
m_log.error("DbUserManager.authenticate()", ex);
}
}
}
}
/**
* Close this user manager. Close the database statements and connection.
*/
public synchronized void dispose() {
closeConnection();
}
/**
* Escape string to be embedded in SQL statement.
*/
private String escapeString(String input) {
StringBuffer valBuf = new StringBuffer(input);
for (int i=0; i<valBuf.length(); i++) {
char ch = valBuf.charAt(i);
if (ch == '\'' ||
ch == '\\' ||
ch == '$' ||
ch == '^' ||
ch == '[' ||
ch == ']' ||
ch == '{' ||
ch == '}') {
valBuf.insert(i, '\\');
i++;
}
}
return valBuf.toString();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -