1 /**************************************************************** 2 * Licensed to the Apache Software Foundation (ASF) under one * 3 * or more contributor license agreements. See the NOTICE file * 4 * distributed with this work for additional information * 5 * regarding copyright ownership. The ASF licenses this file * 6 * to you under the Apache License, Version 2.0 (the * 7 * "License"); you may not use this file except in compliance * 8 * with the License. You may obtain a copy of the License at * 9 * * 10 * http://www.apache.org/licenses/LICENSE-2.0 * 11 * * 12 * Unless required by applicable law or agreed to in writing, * 13 * software distributed under the License is distributed on an * 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * 15 * KIND, either express or implied. See the License for the * 16 * specific language governing permissions and limitations * 17 * under the License. * 18 ****************************************************************/ 19 20 21 22 package org.apache.james.smtpserver.core; 23 24 import java.util.ArrayList; 25 import java.util.Collection; 26 27 import org.apache.james.dsn.DSNStatus; 28 import org.apache.james.smtpserver.CommandHandler; 29 import org.apache.james.smtpserver.SMTPSession; 30 31 /** 32 * Handles QUIT command 33 */ 34 public class QuitCmdHandler implements CommandHandler { 35 36 /** 37 * The name of the command handled by the command handler 38 */ 39 private final static String COMMAND_NAME = "QUIT"; 40 41 /** 42 * handles QUIT command 43 * 44 * @see org.apache.james.smtpserver.CommandHandler#onCommand(SMTPSession) 45 */ 46 public void onCommand(SMTPSession session) { 47 doQUIT(session, session.getCommandArgument()); 48 49 } 50 51 52 /** 53 * Handler method called upon receipt of a QUIT command. 54 * This method informs the client that the connection is 55 * closing. 56 * 57 * @param session SMTP session object 58 * @param argument the argument passed in with the command by the SMTP client 59 */ 60 private void doQUIT(SMTPSession session, String argument) { 61 62 String responseString = ""; 63 if ((argument == null) || (argument.length() == 0)) { 64 session.getResponseBuffer().append("221 "+DSNStatus.getStatus(DSNStatus.SUCCESS,DSNStatus.UNDEFINED_STATUS)+" ") 65 .append(session.getConfigurationData().getHelloName()) 66 .append(" Service closing transmission channel"); 67 responseString = session.clearResponseBuffer(); 68 } else { 69 responseString = "500 "+DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG)+" Unexpected argument provided with QUIT command"; 70 } 71 session.writeResponse(responseString); 72 session.endSession(); 73 } 74 75 /** 76 * @see org.apache.james.smtpserver.CommandHandler#getImplCommands() 77 */ 78 public Collection getImplCommands() { 79 Collection implCommands = new ArrayList(); 80 implCommands.add("QUIT"); 81 82 return implCommands; 83 } 84 } 85 86 87