User: hiram
Date: 01/02/17 19:51:06
Modified: src/main/org/jbossmq/server UserManager.java JMSServer.java
Log:
Reorganized the usermanager a little
Revision Changes Path
1.2 +75 -66 jbossmq/src/main/org/jbossmq/server/UserManager.java
Index: UserManager.java
===================================================================
RCS file: /products/cvs/ejboss/jbossmq/src/main/org/jbossmq/server/UserManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- UserManager.java 2001/01/26 00:43:56 1.1
+++ UserManager.java 2001/02/18 03:51:05 1.2
@@ -30,82 +30,74 @@
* @author Norbert Lataille ([EMAIL PROTECTED])
* @author Hiram Chirino ([EMAIL PROTECTED])
*
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class UserManager {
- //Known users hashed by login
- private Hashtable users;
- //registered clientID
- private HashSet clientID;
+
+ //registered loggedOnClientIds
+ private HashSet loggedOnClientIds;
JMSServer server;
org.jbossmq.xml.XElement userManagerConfig;
- public void addUser(String login,String passwd,String clientID)
- {
- users.put(login,new Identity(login,passwd,clientID));
- }
+
public String checkUser(String login,String passwd) throws JMSException
- {
- Identity user=(Identity)users.get(login);
- if (user==null) throw new JMSException("This user does not exist");
- if (!passwd.equals(user.passwd)) throw new JMSException("Bad
password");
-
- if (user.clientID!=null) {
- if (clientID.contains(user.clientID)) throw new
JMSException("This clientID is already registered !");
- clientID.add(user.clientID);
- }
-
- return user.clientID;
- }
-
- public void check(String login,String passwd,String clientID)
- {
- synchronized (users) {
- users.put(login,new Identity(login,passwd,clientID));
- }
- }
-
- public void addClientID(String ID) throws JMSException
{
+ try {
+ synchronized ( userManagerConfig ) {
- //Check : this ID must not be registered
- if (clientID.contains(ID)) throw new JMSException("This clientID is
already registered !");
+ Enumeration enum = userManagerConfig.getElementsNamed("User");
+ while( enum.hasMoreElements() ) {
+ XElement element = (XElement)enum.nextElement();
+ String name = element.getField("Name");
+ if( !name.equals(login) )
+ continue;
+
+ String pw = element.getField("Password");
+ if (!passwd.equals(pw))
+ throw new JMSException("Bad password");
+
+ String clientId = null;
+ if( element.containsField("Id") ) {
+ clientId = element.getField("Id");
+ }
- //Check : this ID must not be password protected
- synchronized (users) {
- Iterator i=users.values().iterator();
- if (i!=null) {
- while (i.hasNext()) {
- Identity id=(Identity)i.next();
- if (id.clientID!=null)
- if (id.clientID.equals(ID))
- throw new JMSException("This
clientID is password protected !");
+ if( clientId != null ) {
+ if (loggedOnClientIds.contains(clientId))
+ throw new JMSException("The login id
has an assigned client id. That client id is already connected to the server!");
+ loggedOnClientIds.add(clientId);
}
+
+ return clientId;
}
+ throw new JMSException("This user does not exist");
+
}
-
- clientID.add(ID);
+ } catch (org.jbossmq.xml.XElementException e ) {
+ Log.error( e );
+ throw new JMSException("Invalid server user configuration.");
+ }
}
- public void removeID(String ID)
- {
- clientID.remove(ID);
- }
+
+
+
+
+
public class Identity {
String login;
String passwd;
- String clientID;
+ String loggedOnClientIds;
- Identity(String login,String passwd,String clientID)
+ Identity(String login,String passwd,String loggedOnClientIds)
{
this.login=login;
this.passwd=passwd;
- this.clientID=clientID;
+ this.loggedOnClientIds=loggedOnClientIds;
}
}
@@ -114,22 +106,7 @@
{
this.server=server;
this.userManagerConfig=userManagerConfig;
- users=new Hashtable();
- clientID=new HashSet();
-
- //Set the known Ids
- Enumeration enum = userManagerConfig.getElementsNamed("User");
- while( enum.hasMoreElements() ) {
- XElement element = (XElement)enum.nextElement();
- String name = element.getField("Name");
- String passwd = element.getField("Password");
- if( element.containsField("Id") ) {
- addUser(name,passwd,element.getField("Id"));
- } else {
- addUser(name,passwd,null);
- }
- }
-
+ loggedOnClientIds=new HashSet();
}
public void initDurableSubscriptions() throws
org.jbossmq.xml.XElementException {
@@ -234,5 +211,37 @@
throw newE;
}
+ }
+
+
+
+
+
+ public void addLoggedOnClientId(String ID) throws JMSException
+ {
+
+ //Check : this ID must not be registered
+ if (loggedOnClientIds.contains(ID)) throw new JMSException("This
loggedOnClientIds is already registered !");
+
+ //Check : this ID must not be password protected
+ synchronized (userManagerConfig) {
+ Enumeration enum = userManagerConfig.getElementsNamed("User");
+ while( enum.hasMoreElements() ) {
+ XElement element = (XElement)enum.nextElement();
+ try {
+ if( element.containsField("Id") &&
element.getField("Id").equals( ID ) ) {
+ throw new JMSException("This
loggedOnClientIds is password protected !");
+ }
+ } catch ( org.jbossmq.xml.XElementException ignore ) {
+ }
+ }
+
+ }
+ loggedOnClientIds.add(ID);
+ }
+
+ public void removeLoggedOnClientId(String ID)
+ {
+ loggedOnClientIds.remove(ID);
}
}
1.3 +5 -5 jbossmq/src/main/org/jbossmq/server/JMSServer.java
Index: JMSServer.java
===================================================================
RCS file: /products/cvs/ejboss/jbossmq/src/main/org/jbossmq/server/JMSServer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JMSServer.java 2001/02/01 04:52:08 1.2
+++ JMSServer.java 2001/02/18 03:51:06 1.3
@@ -30,7 +30,7 @@
* @author Norbert Lataille ([EMAIL PROTECTED])
* @author Hiram Chirino ([EMAIL PROTECTED])
*
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class JMSServer
implements Runnable, JMSServerMBean
@@ -213,7 +213,7 @@
while (true) {
try {
ID="ID"+(new Integer(lastID++).toString());
- userManager.addClientID(ID);
+ userManager.addLoggedOnClientId(ID);
break;
} catch (Exception e) {
}
@@ -259,7 +259,7 @@
public void checkID(String ID) throws JMSException
{
- userManager.addClientID(ID);
+ userManager.addLoggedOnClientId(ID);
}
//A connection has sent a new message
@@ -379,7 +379,7 @@
//unregister its clientID
if (dc.getClientID()!=null)
- userManager.removeID(dc.getClientID());
+ userManager.removeLoggedOnClientId(dc.getClientID());
//Remove any temporary destinations the consumer may have created.
synchronized (messageQueue) {
@@ -529,4 +529,4 @@
return userManager.checkUser(userName, password);
}
-}
+}
\ No newline at end of file