Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShowMatcherInfoCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShowMatcherInfoCmdHandler.java?rev=821546&view=auto ============================================================================== --- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShowMatcherInfoCmdHandler.java (added) +++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShowMatcherInfoCmdHandler.java Sun Oct 4 15:10:49 2009 @@ -0,0 +1,133 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.remotemanager.core; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Locale; + +import javax.annotation.Resource; + +import org.apache.james.management.ProcessorManagementService; +import org.apache.james.remotemanager.CommandHandler; +import org.apache.james.remotemanager.CommandHelp; +import org.apache.james.remotemanager.RemoteManagerResponse; +import org.apache.james.remotemanager.RemoteManagerSession; + +public class ShowMatcherInfoCmdHandler implements CommandHandler{ + + private final static String COMMAND_NAME = "SHOWMATCHERINFO"; + private CommandHelp help = new CommandHelp("showmatcherinfo [processorname] [#index]","shows configuration for matcher of specified processor at given index"); + + protected ProcessorManagementService processorManagementService; + + + /** + * Set the ProcessorManagementService + * + * @param processorManagement the ProcessorManagementService + */ + @Resource(name="processormanagement") + + public final void setProcessorManagement(ProcessorManagementService processorManagement) { + this.processorManagementService = processorManagement; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#getHelp() + */ + public CommandHelp getHelp() { + return help; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, java.lang.String, java.lang.String) + */ + public RemoteManagerResponse onCommand(RemoteManagerSession session, String command, String params) { + RemoteManagerResponse response = null; + Object[] parameters = extractMailetInfoParameters(session, params, "MATCHER"); + if (parameters == null) return response; + + // extract parsed parameters + String processorName = (String) parameters[0]; + int index = ((Integer)parameters[1]).intValue(); + + String[] matcherParameters = null; + try { + matcherParameters = processorManagementService.getMatcherParameters(processorName, index); + } catch (RuntimeException e) { + // fall thru with NULL + } + if (matcherParameters == null) { + response = new RemoteManagerResponse("The index is not referring to an existing matcher"); + return response; + } + response = new RemoteManagerResponse("Matcher parameters: " + matcherParameters.length); + for (int i = 0; i < matcherParameters.length; i++) { + String parameter = (String) matcherParameters[i]; + response.appendLine("\t" + parameter); + } + return response; + } + + protected Object[] extractMailetInfoParameters(RemoteManagerSession session, String argument, String commandHelp) { + String[] argList = argument.split(" "); + boolean argListOK = argument != null && argList != null && argList.length == 2; + if (!argListOK) { + session.writeRemoteManagerResponse(new RemoteManagerResponse("Usage: " + getHelp().getSyntax())); + return null; + } + String processorName = argList[0]; + if (!processorExists(processorName)) { + session.writeRemoteManagerResponse(new RemoteManagerResponse("The list of valid processor names can be retrieved using command LISTPROCESSORS"));; + return null; + } + int index = -1; + try { + index = Integer.parseInt(argList[1]) - 1; + } catch (NumberFormatException e) { + // fall thru with -1 + } + if (index < 0) { + session.writeRemoteManagerResponse(new RemoteManagerResponse("The index parameter must be a positive number")); + return null; + } + + return new Object[] {processorName, new Integer(index)}; + } + + + protected boolean processorExists(String name) { + name = name.toLowerCase(Locale.US); + List processorList = Arrays.asList(processorManagementService.getProcessorNames()); + return processorList.contains(name); + } + + /** + * @see org.apache.james.socket.CommonCommandHandler#getImplCommands() + */ + public Collection<String> getImplCommands() { + List<String> commands = new ArrayList<String>(); + commands.add(COMMAND_NAME); + return commands; + } +}
Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShutdownCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShutdownCmdHandler.java?rev=821546&view=auto ============================================================================== --- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShutdownCmdHandler.java (added) +++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShutdownCmdHandler.java Sun Oct 4 15:10:49 2009 @@ -0,0 +1,63 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.remotemanager.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.apache.james.remotemanager.CommandHandler; +import org.apache.james.remotemanager.CommandHelp; +import org.apache.james.remotemanager.RemoteManagerResponse; +import org.apache.james.remotemanager.RemoteManagerSession; + +/** + * Handler method called upon receipt of a SHUTDOWN command. + */ +public class ShutdownCmdHandler implements CommandHandler{ + private CommandHelp help = new CommandHelp("shutdown","kills the current JVM (convenient when James is run as a daemon)"); + public final static String COMMAND_NAME = "SHUTDOWN"; + + + /** + * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, java.lang.String, java.lang.String) + */ + public RemoteManagerResponse onCommand(RemoteManagerSession session, String command, String parameters) { + session.writeRemoteManagerResponse(new RemoteManagerResponse("Shutting down, bye bye")); + System.exit(0); + return null; + } + /** + * @see org.apache.james.socket.CommonCommandHandler#getImplCommands() + */ + public Collection<String> getImplCommands() { + List<String> commands = new ArrayList<String>(); + commands.add(COMMAND_NAME); + return commands; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#getHelp() + */ + public CommandHelp getHelp() { + return help; + } + +} Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnknownCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnknownCmdHandler.java?rev=821546&view=auto ============================================================================== --- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnknownCmdHandler.java (added) +++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnknownCmdHandler.java Sun Oct 4 15:10:49 2009 @@ -0,0 +1,63 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.remotemanager.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.apache.james.remotemanager.CommandHandler; +import org.apache.james.remotemanager.CommandHelp; +import org.apache.james.remotemanager.RemoteManagerResponse; +import org.apache.james.remotemanager.RemoteManagerSession; + +/** + * Handler called upon receipt of an unrecognized command. + */ +public class UnknownCmdHandler implements CommandHandler { + + public final static String COMMAND_NAME = "UNKNOWN"; + + /** + * @see org.apache.james.remotemanager.CommandHandler#getHelp() + */ + public CommandHelp getHelp() { + return null; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, + * java.lang.String, java.lang.String) + */ + public RemoteManagerResponse onCommand(RemoteManagerSession session, String command, String parameters) { + RemoteManagerResponse response = new RemoteManagerResponse("Unknown command " + command); + return response; + } + + /** + * @see org.apache.james.socket.CommonCommandHandler#getImplCommands() + */ + public Collection<String> getImplCommands() { + List<String> commands = new ArrayList<String>(); + commands.add(COMMAND_NAME); + return commands; + } + +} Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetAliasCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetAliasCmdHandler.java?rev=821546&view=auto ============================================================================== --- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetAliasCmdHandler.java (added) +++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetAliasCmdHandler.java Sun Oct 4 15:10:49 2009 @@ -0,0 +1,106 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.remotemanager.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import javax.annotation.Resource; + +import org.apache.james.api.user.JamesUser; +import org.apache.james.api.user.UsersRepository; +import org.apache.james.api.user.UsersStore; +import org.apache.james.remotemanager.CommandHandler; +import org.apache.james.remotemanager.CommandHelp; +import org.apache.james.remotemanager.RemoteManagerResponse; +import org.apache.james.remotemanager.RemoteManagerSession; + +/** + * Handler called upon receipt of an UNSETALIAS command. + */ +public class UnsetAliasCmdHandler implements CommandHandler{ + public final static String COMMAND_NAME = "UNSETALIAS"; + private CommandHelp help = new CommandHelp("unsetalias [user]","unsets an alias for 'user'"); + + private UsersStore uStore; + + /** + * Sets the users store. + * + * @param users + * the users to set + */ + @Resource(name = "users-store") + public final void setUsers(UsersStore uStore) { + this.uStore = uStore; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#getHelp() + */ + public CommandHelp getHelp() { + return help; + } + + /** + * (non-Javadoc) + * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, java.lang.String, java.lang.String) + */ + public RemoteManagerResponse onCommand(RemoteManagerSession session, String command, String parameters) { + RemoteManagerResponse response; + + if ((parameters == null) || (parameters.equals(""))) { + response = new RemoteManagerResponse("Usage: " + help.getSyntax()); + return response; + } + UsersRepository users = uStore.getRepository((String) session.getState().get(RemoteManagerSession.CURRENT_USERREPOSITORY)); + + String username = parameters; + JamesUser user = (JamesUser) users.getUserByName(username); + if (user == null) { + response = new RemoteManagerResponse("No such user " + username); + } else if (user.getAliasing()){ + user.setAliasing(false); + users.updateUser(user); + StringBuilder responseBuffer = + new StringBuilder(64) + .append("Alias for ") + .append(username) + .append(" unset"); + String responseString = responseBuffer.toString(); + response = new RemoteManagerResponse(responseString); + session.getLogger().info(responseString); + } else { + response = new RemoteManagerResponse("Aliasing not active for" + username); + } + return response; + } + + /** + * @see org.apache.james.socket.CommonCommandHandler#getImplCommands() + */ + public Collection<String> getImplCommands() { + List<String> commands = new ArrayList<String>(); + commands.add(COMMAND_NAME); + return commands; + } + +} Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetForwardingCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetForwardingCmdHandler.java?rev=821546&view=auto ============================================================================== --- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetForwardingCmdHandler.java (added) +++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetForwardingCmdHandler.java Sun Oct 4 15:10:49 2009 @@ -0,0 +1,106 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.remotemanager.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import javax.annotation.Resource; + +import org.apache.james.api.user.JamesUser; +import org.apache.james.api.user.UsersRepository; +import org.apache.james.api.user.UsersStore; +import org.apache.james.remotemanager.CommandHandler; +import org.apache.james.remotemanager.CommandHelp; +import org.apache.james.remotemanager.RemoteManagerResponse; +import org.apache.james.remotemanager.RemoteManagerSession; + +/** + * Handler called upon receipt of an UNSETFORWARDING command. + * + */ +public class UnsetForwardingCmdHandler implements CommandHandler{ + private final static String COMMAND_NAME = "UNSETFORWARDING"; + private CommandHelp help = new CommandHelp("unsetforwarding [username]","removes a forward"); + + private UsersStore uStore; + + /** + * Sets the users store. + * + * @param users + * the users to set + */ + @Resource(name = "users-store") + public final void setUsers(UsersStore uStore) { + this.uStore = uStore; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#getHelp() + */ + public CommandHelp getHelp() { + return help; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, java.lang.String, java.lang.String) + */ + public RemoteManagerResponse onCommand(RemoteManagerSession session, String command, String parameters) { + RemoteManagerResponse response; + if ((parameters == null) || (parameters.equals(""))) { + response = new RemoteManagerResponse("Usage: " + help.getSyntax()); + return response; + } + UsersRepository users = uStore.getRepository((String) session.getState().get(RemoteManagerSession.CURRENT_USERREPOSITORY)); + String username = parameters; + JamesUser user = (JamesUser) users.getUserByName(username); + if (user == null) { + response = new RemoteManagerResponse("No such user " + username); + } else if (user.getForwarding()){ + user.setForwarding(false); + users.updateUser(user); + StringBuilder responseBuffer = + new StringBuilder(64) + .append("Forward for ") + .append(username) + .append(" unset"); + String responseString = responseBuffer.toString(); + + session.getLogger().info(responseString); + response = new RemoteManagerResponse(responseString); + } else { + response = new RemoteManagerResponse("Forwarding not active for" + username); + } + return response; + } + + + /** + * @see org.apache.james.socket.CommonCommandHandler#getImplCommands() + */ + public Collection<String> getImplCommands() { + List<String> commands = new ArrayList<String>(); + commands.add(COMMAND_NAME); + return commands; + } + +} Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UserCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UserCmdHandler.java?rev=821546&view=auto ============================================================================== --- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UserCmdHandler.java (added) +++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UserCmdHandler.java Sun Oct 4 15:10:49 2009 @@ -0,0 +1,78 @@ +package org.apache.james.remotemanager.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Locale; + +import javax.annotation.Resource; + +import org.apache.james.api.user.UsersRepository; +import org.apache.james.api.user.UsersStore; +import org.apache.james.remotemanager.CommandHandler; +import org.apache.james.remotemanager.CommandHelp; +import org.apache.james.remotemanager.RemoteManagerResponse; +import org.apache.james.remotemanager.RemoteManagerSession; + +/** + * Handler called upon receipt of a USER command + */ +public class UserCmdHandler implements CommandHandler{ + private final static String COMMAND_NAME = "USER"; + private CommandHelp help = new CommandHelp("user [repositoryname]", "change to another user repository"); + + private UsersStore uStore; + + /** + * Sets the users store. + * @param users the users to set + */ + @Resource(name="users-store") + public final void setUsers(UsersStore uStore) { + this.uStore = uStore; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#getHelp() + */ + public CommandHelp getHelp() { + return help; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, java.lang.String, java.lang.String) + */ + public RemoteManagerResponse onCommand(RemoteManagerSession session, String command, String parameters) { + RemoteManagerResponse response; + + if (parameters == null || parameters.equals("")) { + response = new RemoteManagerResponse("Usage: " + help.getSyntax()); + return response; + } + String repositoryName = parameters.toLowerCase(Locale.US); + UsersRepository repos = uStore.getRepository(repositoryName); + if ( repos == null ) { + response = new RemoteManagerResponse("No such repository: " + repositoryName); + } else { + session.getState().put(RemoteManagerSession.CURRENT_USERREPOSITORY,repos); + StringBuilder responseBuffer = + new StringBuilder(64) + .append("Changed to repository '") + .append(repositoryName) + .append("'."); + response = new RemoteManagerResponse(responseBuffer.toString()); + } + return response; + } + + + /** + * @see org.apache.james.socket.CommonCommandHandler#getImplCommands() + */ + public Collection<String> getImplCommands() { + List<String> commands = new ArrayList<String>(); + commands.add(COMMAND_NAME); + return commands; + } + +} Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/VerifyCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/VerifyCmdHandler.java?rev=821546&view=auto ============================================================================== --- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/VerifyCmdHandler.java (added) +++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/VerifyCmdHandler.java Sun Oct 4 15:10:49 2009 @@ -0,0 +1,101 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.remotemanager.core; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import javax.annotation.Resource; + +import org.apache.james.api.user.UsersRepository; +import org.apache.james.api.user.UsersStore; +import org.apache.james.remotemanager.CommandHandler; +import org.apache.james.remotemanager.CommandHelp; +import org.apache.james.remotemanager.RemoteManagerResponse; +import org.apache.james.remotemanager.RemoteManagerSession; + +/** + * Handler method called upon receipt of an VERIFY command. + */ +public class VerifyCmdHandler implements CommandHandler{ + private final static String COMMAND_NAME = "VERIFY"; + private CommandHelp help = new CommandHelp("verify [username]","verify if specified user exist"); + + private UsersStore uStore; + + /** + * Sets the users store. + * + * @param users + * the users to set + */ + @Resource(name = "users-store") + public final void setUsers(UsersStore uStore) { + this.uStore = uStore; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#getHelp() + */ + public CommandHelp getHelp() { + return help; + } + + /** + * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, java.lang.String, java.lang.String) + */ + public RemoteManagerResponse onCommand(RemoteManagerSession session, String command, String parameters) { + RemoteManagerResponse response = null; + String user = parameters; + if (user == null || user.equals("")) { + response = new RemoteManagerResponse("Usage: verify [username]"); + return response; + } + UsersRepository users = uStore.getRepository((String) session.getState().get(RemoteManagerSession.CURRENT_USERREPOSITORY)); + if (users.contains(user)) { + StringBuilder responseBuffer = + new StringBuilder(64) + .append("User ") + .append(user) + .append(" exists"); + response = new RemoteManagerResponse(responseBuffer.toString()); + } else { + StringBuilder responseBuffer = + new StringBuilder(64) + .append("User ") + .append(user) + .append(" does not exist"); + response = new RemoteManagerResponse(responseBuffer.toString()); + } + return response; + } + + + /** + * @see org.apache.james.socket.CommonCommandHandler#getImplCommands() + */ + public Collection<String> getImplCommands() { + List<String> commands = new ArrayList<String>(); + commands.add(COMMAND_NAME); + return commands; + } + +} Added: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/WelcomeHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/WelcomeHandler.java?rev=821546&view=auto ============================================================================== --- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/WelcomeHandler.java (added) +++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/WelcomeHandler.java Sun Oct 4 15:10:49 2009 @@ -0,0 +1,33 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.remotemanager.core; + +import org.apache.james.Constants; +import org.apache.james.remotemanager.ConnectHandler; +import org.apache.james.remotemanager.RemoteManagerResponse; +import org.apache.james.remotemanager.RemoteManagerSession; + +public class WelcomeHandler implements ConnectHandler{ + + public void onConnect(RemoteManagerSession session) { + session.writeRemoteManagerResponse(new RemoteManagerResponse("JAMES Remote Administration Tool " + Constants.SOFTWARE_VERSION)); + } + +} Modified: james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java?rev=821546&r1=821545&r2=821546&view=diff ============================================================================== --- james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java (original) +++ james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTest.java Sun Oct 4 15:10:49 2009 @@ -30,6 +30,7 @@ import org.apache.james.api.dnsservice.DNSService; import org.apache.james.api.domainlist.ManageableDomainList; import org.apache.james.api.domainlist.SimpleDomainList; +import org.apache.james.api.kernel.mock.FakeLoader; import org.apache.james.api.user.UsersRepository; import org.apache.james.api.user.UsersStore; import org.apache.james.api.vut.management.VirtualUserTableManagementService; @@ -82,11 +83,14 @@ protected TelnetClient m_telnetClient; private MockUsersRepository m_mockUsersRepository; private MockMailServer mailServer; + private FakeLoader serviceManager; protected void setUp() throws Exception { m_remoteManager = new RemoteManager(); + setUpServiceManager(); ContainerUtil.enableLogging(m_remoteManager, new MockLogger()); - ContainerUtil.service(m_remoteManager, setUpServiceManager()); + ContainerUtil.service(m_remoteManager, serviceManager); + m_remoteManager.setLoader(serviceManager); m_testConfiguration = new RemoteManagerTestConfiguration(m_remoteManagerListenerPort); } @@ -165,26 +169,28 @@ readAnswer(3); } - private MockServiceManager setUpServiceManager() throws ServiceException { - MockServiceManager serviceManager = new MockServiceManager(); + private void setUpServiceManager() throws ServiceException { + serviceManager = new FakeLoader(); SimpleConnectionManager connectionManager = new SimpleConnectionManager(); ContainerUtil.enableLogging(connectionManager, new MockLogger()); serviceManager.put(JamesConnectionManager.ROLE, connectionManager); m_mockUsersRepository = new MockUsersRepository(); - mailServer = new MockMailServer(m_mockUsersRepository); + mailServer = new MockMailServer(m_mockUsersRepository); + MockUsersStore usersStore = new MockUsersStore(m_mockUsersRepository); + serviceManager.put(MailServer.ROLE, mailServer); serviceManager.put(UsersRepository.ROLE, m_mockUsersRepository); - serviceManager.put(UsersStore.ROLE, new MockUsersStore(m_mockUsersRepository)); + + serviceManager.put(UsersStore.ROLE, usersStore); serviceManager.put(SocketManager.ROLE, new MockSocketManager(m_remoteManagerListenerPort)); serviceManager.put(ThreadManager.ROLE, new MockThreadManager()); serviceManager.put(DNSService.ROLE, setUpDNSServer()); - MockVirtualUserTableStore vutStore = new MockVirtualUserTableStore(); VirtualUserTableManagement vutManagement = new VirtualUserTableManagement(); vutManagement.setVirtualUserTableStore(vutStore); vutManagement.setDefaultVirtualUserTable(new MockVirtualUserTableManagementImpl()); serviceManager.put(VirtualUserTableManagementService.ROLE, vutManagement); - + ManageableDomainList xml = new SimpleDomainList(); DomainListManagementService domManagement = new DomainListManagementService() { @@ -217,7 +223,14 @@ }.setDomainList(xml); serviceManager.put(DomainListManagementService.ROLE, domManagement); - return serviceManager; + + + // Phoenix loader does not understand aliases + serviceManager.put("James", mailServer); + serviceManager.put("localusersrepository", m_mockUsersRepository); + serviceManager.put("users-store", usersStore); + serviceManager.put("virtualusertablemanagement", vutManagement); + serviceManager.put("domainlistmanagement", domManagement); } private DNSService setUpDNSServer() { @@ -238,6 +251,7 @@ return dns; } + /* public void testCustomCommand() throws Exception { finishSetUp(m_testConfiguration); connect(); @@ -247,7 +261,7 @@ String lastLine = getLastLine(readAnswer()); assertEquals("Arguments echoed", "hsif eht lla rof sknaht", lastLine); } - + */ public void testLogin() throws IOException { finishSetUp(m_testConfiguration); connect(); @@ -350,6 +364,7 @@ assertTrue(getLastLine(readAnswer()).endsWith(" does not exist")); } + /* public void testQuit() throws IOException { int helpLines = 38; @@ -370,6 +385,8 @@ delay(); assertNull("connection is closed", m_reader.readLine()); } + + */ public void testListUsers() throws IOException { finishSetUp(m_testConfiguration); Modified: james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTestConfiguration.java URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTestConfiguration.java?rev=821546&r1=821545&r2=821546&view=diff ============================================================================== --- james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTestConfiguration.java (original) +++ james/server/trunk/remotemanager-function/src/test/java/org/apache/james/remotemanager/RemoteManagerTestConfiguration.java Sun Oct 4 15:10:49 2009 @@ -22,6 +22,7 @@ package org.apache.james.remotemanager; import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.apache.james.pop3server.core.CoreCmdHandlerLoader; import org.apache.james.test.util.Util; public class RemoteManagerTestConfiguration extends DefaultConfiguration { @@ -92,21 +93,19 @@ adminAccounts.addChild(account); handlerConfig.addChild(adminAccounts); - - // handlerConfig.addChild(Util.getValuedConfiguration("prompt", ">")); + DefaultConfiguration config = new DefaultConfiguration("handlerchain"); - handlerConfig.addChild(createRemoteManagerHandlerChainConfiguration()); + config.addChild(createHandler(CoreCmdHandlerLoader.class.getName())); + handlerConfig.addChild(config); addChild(handlerConfig); - - DefaultConfiguration commandConfiguration = new DefaultConfiguration("command"); - commandConfiguration.addChild(Util.getValuedConfiguration("class-name", commandClassName)); - - addChild(commandConfiguration); } - public static DefaultConfiguration createRemoteManagerHandlerChainConfiguration() { - DefaultConfiguration handlerChainConfig = new DefaultConfiguration("test"); - return handlerChainConfig; + private DefaultConfiguration createHandler(String className) { + DefaultConfiguration d = new DefaultConfiguration("handler"); + + d.setAttribute("class", className); + return d; + } Modified: james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java?rev=821546&r1=821545&r2=821546&view=diff ============================================================================== --- james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java (original) +++ james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java Sun Oct 4 15:10:49 2009 @@ -45,6 +45,7 @@ import org.apache.commons.net.smtp.SMTPClient; import org.apache.commons.net.smtp.SMTPReply; import org.apache.james.api.dnsservice.DNSService; +import org.apache.james.api.kernel.mock.FakeLoader; import org.apache.james.api.user.UsersRepository; import org.apache.james.services.FileSystem; import org.apache.james.services.MailServer; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
