Serge,
the diff, rdiff and source file attached as
a small gzipped tarball.

Added a some checking of user type in
the commands that may fail in wrong repository.
Noticed that checkuser exploded in list-repositorys.
Some other commands also failed, added the checking.

-checkuser, checks alaising and fwd'ing
-listrepo, list the existing repositories.
...

Furthermore I added a "command prompt" containing the current-repository
like this: "jakarta-james::list-james>".

The modified files are:
remotemanager/RemoteHandlerManager.java (new commands)

Regards Erik Danielsson





>From: "Serge Knystautas" <[EMAIL PROTECTED]>
>Reply-To: "James Developers List" <[EMAIL PROTECTED]>
>To: "James Developers List" <[EMAIL PROTECTED]>
>Subject: Re: RemoteManager modifications that I find usefull.
>Date: Sat, 8 Dec 2001 09:21:59 -0500
>
>Erik,
>
>Can you resend this as an attachment (and if possible send both a diff and
>the .java files)?  Inline is was word-wrapped, which makes it harder to
>apply.
>
>Serge Knystautas
>Loki Technologies - Unstoppable Websites
>http://www.lokitech.com
>----- Original Message -----
>From: "Erik Danielsson" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Friday, November 16, 2001 9:32 AM
>Subject: RemoteManager modifications that I find usefull.
>
>
> > Hello,
> > I have made some modifications on the RemoteManager.
> > The RemoteManager was a bit short of basic administration commands.
> >
> > I added:
> > -listrepo, lists the repositories that exists.
> > -checkuser, checks status of alias and forwarding.
> > -unsetforwarding
> >
> > Furthermore I added a "command prompt" containing the current-repository
> > like
> > this: "jakarta-james::list-james>".
> > The modified files are:
> >
> > jakarta-james/kava/org/apache/james/
> >
> > core/AvalonUsersStore.java     (to get the repository names)
> > services/UsersStore.java       (to get the repository names)
> > remotemanager/RemoteHandlerManager.java (new commands)
> >
> > These small modifications truly made the runtime administration
> > a bit less painfull.
> >
> > //Regards
> > Erik Danielsson
> >
> > The patches:
> >
> > ---- Begin AvalonUsersStore_patch
> > Index: 
>jakarta-james/src/java/org/apache/james/core/AvalonUsersStore.java
> > diff -c
> > jakarta-james/src/java/org/apache/james/core/AvalonUsersStore.java:1.3
> > jakarta-james/src/java/org/apache/james/core/AvalonUsersStore.java:1.4
> > ***
> > jakarta-james/src/java/org/apache/james/core/AvalonUsersStore.java:1.3 
>Thu
> > Sep 27 23:12:17 2001
> > --- jakarta-james/src/java/org/apache/james/core/AvalonUsersStore.java 
>Fri
> > Nov 16 13:35:05 2001
> > ***************
> > *** 100,103 ****
> > --- 100,107 ----
> >           }
> >           return response;
> >       }
> > +
> > +     public Iterator getRepositoryNames() {
> > +         return this.repositories.keySet().iterator();
> > +     }
> >   }
> > ---- End AvalonUsersStore_patch
> >
> >
> >
> >
> > ---- Begin  UsersStore_patch
> > Index: jakarta-james/src/java/org/apache/james/services/UsersStore.java
> > diff -c
>jakarta-james/src/java/org/apache/james/services/UsersStore.java:1.2
> > jakarta-james/src/java/org/apache/james/services/UsersStore.java:1.3
> > *** jakarta-james/src/java/org/apache/james/services/UsersStore.java:1.2
>Thu
> > Sep  6 15:19:32 2001
> > --- jakarta-james/src/java/org/apache/james/services/UsersStore.java Fri
>Nov
> > 16 13:35:46 2001
> > ***************
> > *** 8,14 ****
> >   package org.apache.james.services;
> >
> >   import org.apache.avalon.phoenix.Service;
> > !
> >   /**
> >    * Interface for Phoenix blocks to access a store of Users. A 
>UserStore
> >    * contains one or more UserRepositories. Multiple UserRepositories 
>may
>or
> > may
> > --- 8,14 ----
> >   package org.apache.james.services;
> >
> >   import org.apache.avalon.phoenix.Service;
> > ! import java.util.Iterator;
> >   /**
> >    * Interface for Phoenix blocks to access a store of Users. A 
>UserStore
> >    * contains one or more UserRepositories. Multiple UserRepositories 
>may
>or
> > may
> > ***************
> > *** 24,27 ****
> > --- 24,29 ----
> >       String ROLE = "org.apache.james.services.UsersStore";
> >
> >       UsersRepository getRepository( String name );
> > +
> > +     Iterator getRepositoryNames();
> >   }
> > ---- End UsersStore_patch
> >
> >
> >
> > --- Begin RemoteManagerHandler_patch
> > Index:
> >
>jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.j
>ava
> > diff -c
> >
>jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.j
>ava:1.2
> >
>jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.j
>ava:1.3
> > ***
> >
>jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.j
>ava:1.2
> > Mon
> > Jun 11 11:29:27 2001
> > ---
> >
>jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.j
>ava
> > Tue Sep 11 06:33:21 2001
> > ***************
> > *** 31,36 ****
> > --- 31,37 ----
> >   import org.apache.james.services.UsersRepository;
> >   import org.apache.james.services.UsersStore;
> >   import org.apache.mailet.MailAddress;
> > + import org.apache.james.userrepository.DefaultUser;
> >
> >   /**
> >    * Provides a really rude network interface to administer James.
> > ***************
> > *** 43,50 ****
> >    * @author <a href="mailto:[EMAIL PROTECTED]";>Peter Donald</a>
> >    * @author <a href="mailto:[EMAIL PROTECTED]";>Charles
>Benett</a>
> >    *
> > !  * Last changed by: $Author: charlesb $ on $Date: 2001/06/11 09:29:27 
>$
> > !  * $Revision: 1.2 $
> >    *
> >    */
> >   public class RemoteManagerHandler
> > --- 44,51 ----
> >    * @author <a href="mailto:[EMAIL PROTECTED]";>Peter Donald</a>
> >    * @author <a href="mailto:[EMAIL PROTECTED]";>Charles
>Benett</a>
> >    *
> > !  * Last changed by: $Author: serge $ on $Date: 2001/09/11 04:33:21 $
> > !  * $Revision: 1.3 $
> >    *
> >    */
> >   public class RemoteManagerHandler
> > ***************
> > *** 53,58 ****
> > --- 54,60 ----
> >
> >       private UsersStore usersStore;
> >       private UsersRepository users;
> > +     private boolean inLocalUsers = true;
> >       private TimeScheduler scheduler;
> >       private MailServer mailServer;
> >
> > ***************
> > *** 137,144 ****
> >               out.println( "Welcome " + login + ". HELP for a list of
> > commands" );
> >               getLogger().info("Login for " + login + " succesful");
> >
> > !             while (parseCommand(in.readLine())) {
> > !                 scheduler.resetTrigger(this.toString());
> >               }
> >               getLogger().info("Logout for " + login + ".");
> >               socket.close();
> > --- 139,152 ----
> >               out.println( "Welcome " + login + ". HELP for a list of
> > commands" );
> >               getLogger().info("Login for " + login + " succesful");
> >
> > !             try {
> > !                 while (parseCommand(in.readLine())) {
> > !                     scheduler.resetTrigger(this.toString());
> > !                 }
> > !             }
> > !             catch (Throwable thr) {
> > !                 System.out.println("Exception: " + thr.getMessage());
> > !                 thr.printStackTrace();
> >               }
> >               getLogger().info("Logout for " + login + ".");
> >               socket.close();
> > ***************
> > *** 191,206 ****
> >                   out.println("usage: adduser [username] [password]");
> >                   return true;
> >               }
> >               if (users.contains(username)) {
> >                   out.println("user " + username + " already exist");
> > !             } else {
> > !                 if(mailServer.addUser(username, passwd)) {
> > !                     out.println("User " + username + " added");
> > !                     getLogger().info("User " + username + " added");
> > !                 } else {
> > !                     out.println("Error adding user " + username);
> > !                     getLogger().info("Error adding user " + username);
> > !                 }
> >               }
> >               out.flush();
> >           } else if (command.equalsIgnoreCase("SETPASSWORD")) {
> > --- 199,224 ----
> >                   out.println("usage: adduser [username] [password]");
> >                   return true;
> >               }
> > +
> > +             boolean success = false;
> >               if (users.contains(username)) {
> >                   out.println("user " + username + " already exist");
> > !             }
> > !             else if ( inLocalUsers ) {
> > !                 success = mailServer.addUser(username, passwd);
> > !             }
> > !             else {
> > !                 DefaultUser user = new DefaultUser(username, "SHA");
> > !                 user.setPassword(passwd);
> > !                 success = users.addUser(user);
> > !             }
> > !             if ( success ) {
> > !                 out.println("User " + username + " added");
> > !                 getLogger().info("User " + username + " added");
> > !             }
> > !             else {
> > !                 out.println("Error adding user " + username);
> > !                 getLogger().info("Error adding user " + username);
> >               }
> >               out.flush();
> >           } else if (command.equalsIgnoreCase("SETPASSWORD")) {
> > ***************
> > *** 214,220 ****
> >                   out.println("usage: adduser [username] [password]");
> >                   return true;
> >       }
> > !     JamesUser user = (JamesUser) users.getUserByName(username);
> >       if (user == null) {
> >   out.println("No such user");
> >   return true;
> > --- 232,238 ----
> >                   out.println("usage: adduser [username] [password]");
> >                   return true;
> >       }
> > !     User user = users.getUserByName(username);
> >       if (user == null) {
> >   out.println("No such user");
> >   return true;
> > ***************
> > *** 321,331 ****
> >                   return true;
> >       }
> >       // Verify user exists
> > !     JamesUser user = (JamesUser) users.getUserByName(username);
> > !     if (user == null) {
> >   out.println("No such user");
> >   return true;
> >       }
> >       // Veriy acceptable email address
> >       MailAddress forwardAddr;
> >               try {
> > --- 339,354 ----
> >                   return true;
> >       }
> >       // Verify user exists
> > !     User baseuser = users.getUserByName(username);
> > !     if (baseuser == null) {
> >   out.println("No such user");
> >   return true;
> >       }
> > +             else if (! (baseuser instanceof JamesUser ) ) {

> > +                 out.println("Can't set forwarding for this user 
>type.");
> > +                 return true;
> > +             }
> > +             JamesUser user = (JamesUser)baseuser;
> >       // Veriy acceptable email address
> >       MailAddress forwardAddr;
> >               try {
> > ***************
> > *** 379,384 ****
> > --- 402,430 ----
> >       }
> >               out.flush();
> >       return true;
> > +         } else if (command.equalsIgnoreCase("USE")) {
> > +     if (argument == null || argument.equals("")) {
> > +                 out.println("usage: use [repositoryName]");
> > +                 return true;
> > +     }
> > +             String repositoryName = argument;
> > +             UsersRepository repos =
> > usersStore.getRepository(repositoryName);
> > +             if ( repos == null ) {
> > +                 out.println("no such repository");
> > +                 return true;
> > +             }
> > +             else {
> > +                 users = repos;
> > +                 out.println("Changed to repository '" + repositoryName 
>+
> > "'.");
> > +                 if ( repositoryName.equalsIgnoreCase("localusers") ) {
> > +                     inLocalUsers = true;
> > +                 }
> > +                 else {
> > +                     inLocalUsers = false;
> > +                 }
> > +                 return true;
> > +             }
> > +
> >           } else if (command.equalsIgnoreCase("QUIT")) {
> >               out.println("bye");
> >               return false;
> > ---- End RemoteManagerHandler_patch
> >
> >
> >
> > _________________________________________________________________
> > Get your FREE download of MSN Explorer at 
>http://explorer.msn.com/intl.asp
> >
> >
> > --
> > To unsubscribe, e-mail:
><mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
><mailto:[EMAIL PROTECTED]>
> >
> >
>
>
>--
>To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>


_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp

Attachment: RemoteManagerHandler.tar.gz
Description: Binary data

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to