Author: norman Date: Sun Feb 14 08:08:19 2010 New Revision: 909984 URL: http://svn.apache.org/viewvc?rev=909984&view=rev Log: Allow to hook in on unknown commands
Added: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/UnknownCmdHook.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java?rev=909984&r1=909983&r2=909984&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java Sun Feb 14 08:08:19 2010 @@ -24,38 +24,23 @@ import java.util.ArrayList; import java.util.Collection; -import org.apache.james.protocols.api.CommandHandler; -import org.apache.james.protocols.api.Request; -import org.apache.james.protocols.api.Response; import org.apache.james.protocols.smtp.SMTPResponse; import org.apache.james.protocols.smtp.SMTPRetCode; import org.apache.james.protocols.smtp.SMTPSession; import org.apache.james.protocols.smtp.dsn.DSNStatus; +import org.apache.james.protocols.smtp.hook.HookResult; +import org.apache.james.protocols.smtp.hook.UnknownCmdHook; /** * Default command handler for handling unknown commands */ -public class UnknownCmdHandler implements CommandHandler<SMTPSession>{ +public class UnknownCmdHandler extends AbstractHookableCmdHandler<UnknownCmdHook>{ /** * The name of the command handled by the command handler */ public static final String UNKNOWN_COMMAND = "UNKNOWN"; - - /** - * Handler method called upon receipt of an unrecognized command. - * Returns an error response and logs the command. - * - **/ - public Response onCommand(SMTPSession session, Request request) { - StringBuilder result = new StringBuilder(); - result.append(DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD)) - .append(" Command ") - .append(request.getCommand()) - .append(" unrecognized."); - return new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, result); - } - + /** * @see org.apache.james.smtpserver.protocol.CommandHandler#getImplCommands() */ @@ -65,4 +50,33 @@ return implCommands; } + + @Override + protected SMTPResponse doCoreCmd(SMTPSession session, String command, + String parameters) { + StringBuilder result = new StringBuilder(); + result.append(DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD)) + .append(" Command ") + .append(command) + .append(" unrecognized."); + return new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, result); + } + + @Override + protected SMTPResponse doFilterChecks(SMTPSession session, String command, + String parameters) { + session.getState().put("CURR_COMMAND", command); + return null; + } + + @Override + protected HookResult callHook(UnknownCmdHook rawHook, SMTPSession session, + String parameters) { + return rawHook.doUnkown(session, (String)session.getState().get("CURR_COMMAND")); + } + + @Override + protected Class<UnknownCmdHook> getHookInterface() { + return UnknownCmdHook.class; + } } Added: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/UnknownCmdHook.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/UnknownCmdHook.java?rev=909984&view=auto ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/UnknownCmdHook.java (added) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/UnknownCmdHook.java Sun Feb 14 08:08:19 2010 @@ -0,0 +1,39 @@ +/**************************************************************** + * 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.protocols.smtp.hook; + +import org.apache.james.protocols.smtp.SMTPSession; + +/** + * Hook for unknown commands + * + * + */ +public interface UnknownCmdHook { + + /** + * Called on unknown smtp command + * + * @param session + * @param command + * @return result + */ + public HookResult doUnkown(SMTPSession session, String command); + +} --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org