diff options
| author | Martin Ritchie <ritchiem@apache.org> | 2007-04-11 16:09:54 +0000 |
|---|---|---|
| committer | Martin Ritchie <ritchiem@apache.org> | 2007-04-11 16:09:54 +0000 |
| commit | 8fed3dc61e5b0f760fbbbf81c72bbf9d0811d3d5 (patch) | |
| tree | 960989e0dbf09c30b0cebb7de3a01263f2642d42 /java | |
| parent | a31c12f4fc192401fabb6d4434dd197b75e55b5c (diff) | |
| download | qpid-python-8fed3dc61e5b0f760fbbbf81c72bbf9d0811d3d5.tar.gz | |
QpiQPID-446 Update to ensure qpid.password file is correctly written in savePasswordFile
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@527558 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
| -rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java b/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java index 687a19e381..618451d502 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java +++ b/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java @@ -201,7 +201,7 @@ public class Base64MD5PasswordFilePrincipalDatabase implements PrincipalDatabase for (byte b : passwdBytes) { - passwd[index] = (char) b; + passwd[index++] = (char) b; } return passwd; @@ -311,6 +311,7 @@ public class Base64MD5PasswordFilePrincipalDatabase implements PrincipalDatabase } User user = new User(result); + _logger.info("Created user:" + user); _users.put(user.getName(), user); } } @@ -328,6 +329,10 @@ public class Base64MD5PasswordFilePrincipalDatabase implements PrincipalDatabase BufferedReader reader = null; PrintStream writer = null; File tmp = new File(_passwordFile.getAbsolutePath() + ".tmp"); + if (tmp.exists()) + { + tmp.delete(); + } try { writer = new PrintStream(tmp); @@ -348,12 +353,14 @@ public class Base64MD5PasswordFilePrincipalDatabase implements PrincipalDatabase if (user == null) { writer.write(line.getBytes(DEFAULT_ENCODING)); + writer.println(); } else if (!user.isDeleted()) { if (!user.isModified()) { writer.write(line.getBytes(DEFAULT_ENCODING)); + writer.println(); } else { @@ -363,16 +370,38 @@ public class Base64MD5PasswordFilePrincipalDatabase implements PrincipalDatabase writer.write((user.getName() + ":").getBytes(DEFAULT_ENCODING)); writer.write(encodedPassword); + writer.println(); + + user.saved(); } catch (EncoderException e) { _logger.warn("Unable to encode new password reverting to old password."); writer.write(line.getBytes(DEFAULT_ENCODING)); + writer.println(); } } } + } - + for (User user : _users.values()) + { + if (user.isModified()) + { + byte[] encodedPassword; + try + { + encodedPassword = user.getEncodePassword(); + writer.write((user.getName() + ":").getBytes(DEFAULT_ENCODING)); + writer.write(encodedPassword); + writer.println(); + user.saved(); + } + catch (EncoderException e) + { + _logger.warn("Unable to get Encoded password for user'" + user.getName() + "' password not saved"); + } + } } } finally @@ -388,7 +417,14 @@ public class Base64MD5PasswordFilePrincipalDatabase implements PrincipalDatabase } // Swap temp file to main password file. + File old = new File(_passwordFile.getAbsoluteFile() + ".old"); + if (old.exists()) + { + old.delete(); + } + _passwordFile.renameTo(old); tmp.renameTo(_passwordFile); + tmp.delete(); } } @@ -436,6 +472,11 @@ public class Base64MD5PasswordFilePrincipalDatabase implements PrincipalDatabase return _name; } + public String toString() + { + return getName() + ((_encodedPassword == null) ? "" : ":" + _encodedPassword); + } + char[] getPassword() { return _password; @@ -478,5 +519,10 @@ public class Base64MD5PasswordFilePrincipalDatabase implements PrincipalDatabase { _deleted = true; } + + public void saved() + { + _modified = false; + } } } |
