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
  
  
  

Reply via email to