You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by Erik Danielsson <at...@hotmail.com> on 2001/11/16 15:32:01 UTC

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.java
diff -c
jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java:1.2
jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java:1.3
***
jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java:1.2
Mon
Jun 11 11:29:27 2001
---
jakarta-james/src/java/org/apache/james/remotemanager/RemoteManagerHandler.java
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:donaldp@apache.org">Peter Donald</a>
   * @author <a href="mailto:charles@benett1.demon.co.uk">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:donaldp@apache.org">Peter Donald</a>
   * @author <a href="mailto:charles@benett1.demon.co.uk">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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: RemoteManager modifications that I find usefull.

Posted by Serge Knystautas <se...@lokitech.com>.
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" <at...@hotmail.com>
To: <ja...@jakarta.apache.org>
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:donaldp@apache.org">Peter Donald</a>
>    * @author <a href="mailto:charles@benett1.demon.co.uk">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:donaldp@apache.org">Peter Donald</a>
>    * @author <a href="mailto:charles@benett1.demon.co.uk">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:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: RemoteManager modifications that I find usefull.

Posted by Harmeet <ha...@kodemuse.com>.
> The modified files are:
> core/AvalonUsersStore.java     (to get the repository names)
> services/UsersStore.java       (to get the repository names)
committed your chanages to 

> remotemanager/RemoteHandlerManager.java (new commands)

Did not commit these changes.
Could you please send the diff -u against latest RemoteHandlerManager.java.

thanks,
Harmeet


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>