extensions/net.sf.basedb.ftp/trunk/src/net/sf/basedb/clients/ftp/BaseFtplet.java

Code
Comments
Other
Rev Date Author Line
716 02 Jun 08 nicklas 1 /**
716 02 Jun 08 nicklas 2   $Id $
716 02 Jun 08 nicklas 3
716 02 Jun 08 nicklas 4   Copyright (C) 2008 Nicklas Nordborg
716 02 Jun 08 nicklas 5
1381 15 Aug 11 martin 6   This file is part of the FTP Server extension for BASE.
716 02 Jun 08 nicklas 7   Available at http://baseplugins.thep.lu.se/
1381 15 Aug 11 martin 8   BASE main site: http://base.thep.lu.se/
1381 15 Aug 11 martin 9   -----------------------------------------------------------
1381 15 Aug 11 martin 10   
1381 15 Aug 11 martin 11   This is free software; you can redistribute it and/or
716 02 Jun 08 nicklas 12   modify it under the terms of the GNU General Public License
1381 15 Aug 11 martin 13   as published by the Free Software Foundation; either version 3
716 02 Jun 08 nicklas 14   of the License, or (at your option) any later version.
1381 15 Aug 11 martin 15   
1381 15 Aug 11 martin 16   The software is distributed in the hope that it will be useful,
716 02 Jun 08 nicklas 17   but WITHOUT ANY WARRANTY; without even the implied warranty of
716 02 Jun 08 nicklas 18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
716 02 Jun 08 nicklas 19   GNU General Public License for more details.
1381 15 Aug 11 martin 20   
1381 15 Aug 11 martin 21   You should have received a copy of the GNU General Public License
1381 15 Aug 11 martin 22   along with BASE. If not, see <http://www.gnu.org/licenses/>.
716 02 Jun 08 nicklas 23
716 02 Jun 08 nicklas 24 */
714 30 May 08 nicklas 25 package net.sf.basedb.clients.ftp;
714 30 May 08 nicklas 26
714 30 May 08 nicklas 27 import java.io.IOException;
714 30 May 08 nicklas 28
714 30 May 08 nicklas 29 import org.apache.ftpserver.ftplet.DefaultFtplet;
714 30 May 08 nicklas 30 import org.apache.ftpserver.ftplet.FtpException;
714 30 May 08 nicklas 31 import org.apache.ftpserver.ftplet.FtpSession;
716 02 Jun 08 nicklas 32 import org.apache.ftpserver.ftplet.Ftplet;
915 11 Dec 08 nicklas 33 import org.apache.ftpserver.ftplet.FtpletResult;
714 30 May 08 nicklas 34 import org.apache.ftpserver.ftplet.User;
716 02 Jun 08 nicklas 35 import org.slf4j.Logger;
716 02 Jun 08 nicklas 36 import org.slf4j.LoggerFactory;
714 30 May 08 nicklas 37
714 30 May 08 nicklas 38 /**
714 30 May 08 nicklas 39   We need this ftplet to catch disconnection events and logout the
716 02 Jun 08 nicklas 40   logged in user from BASE. We extend the {@link DefaultFtplet} 
716 02 Jun 08 nicklas 41   which is just an empty implementation so we don't have to implement
716 02 Jun 08 nicklas 42   all methods in the {@link Ftplet} interface.
716 02 Jun 08 nicklas 43   
716 02 Jun 08 nicklas 44   @author Nicklas
716 02 Jun 08 nicklas 45   @version 1.0
714 30 May 08 nicklas 46 */
714 30 May 08 nicklas 47 public class BaseFtplet 
714 30 May 08 nicklas 48   extends DefaultFtplet
714 30 May 08 nicklas 49 {
714 30 May 08 nicklas 50
716 02 Jun 08 nicklas 51   private static final Logger log = LoggerFactory.getLogger(BaseFtplet.class);
716 02 Jun 08 nicklas 52
714 30 May 08 nicklas 53   public BaseFtplet()
714 30 May 08 nicklas 54   {}
714 30 May 08 nicklas 55
716 02 Jun 08 nicklas 56   /*
716 02 Jun 08 nicklas 57     From the Ftplet interface
716 02 Jun 08 nicklas 58     -------------------------
716 02 Jun 08 nicklas 59   */
714 30 May 08 nicklas 60   /**
714 30 May 08 nicklas 61     If a BASE user is currently logged in, log out.
714 30 May 08 nicklas 62   */
714 30 May 08 nicklas 63   @Override
915 11 Dec 08 nicklas 64   public FtpletResult onDisconnect(FtpSession session)
714 30 May 08 nicklas 65     throws FtpException, IOException 
714 30 May 08 nicklas 66   {
716 02 Jun 08 nicklas 67     log.debug("Disconnecting: ip=" + session.getClientAddress());
714 30 May 08 nicklas 68     User user = session.getUser();
716 02 Jun 08 nicklas 69     log.debug("Disconnecting: user=" + user);
714 30 May 08 nicklas 70     if (user instanceof BaseUser)
714 30 May 08 nicklas 71     {
714 30 May 08 nicklas 72       ((BaseUser)user).logout();
714 30 May 08 nicklas 73     }
714 30 May 08 nicklas 74     return super.onDisconnect(session);
714 30 May 08 nicklas 75   }
716 02 Jun 08 nicklas 76
716 02 Jun 08 nicklas 77   /**
716 02 Jun 08 nicklas 78     We just log connections at DEBUG level.
716 02 Jun 08 nicklas 79   */
716 02 Jun 08 nicklas 80   @Override
915 11 Dec 08 nicklas 81   public FtpletResult onConnect(FtpSession session)
716 02 Jun 08 nicklas 82     throws FtpException, IOException 
716 02 Jun 08 nicklas 83   {
716 02 Jun 08 nicklas 84     if (log.isDebugEnabled())
716 02 Jun 08 nicklas 85     {
716 02 Jun 08 nicklas 86       log.debug("New connection from: " + session.getClientAddress());
915 11 Dec 08 nicklas 87       log.debug("Server address: " + session.getServerAddress());
716 02 Jun 08 nicklas 88     }
716 02 Jun 08 nicklas 89     return super.onConnect(session);
716 02 Jun 08 nicklas 90   }
716 02 Jun 08 nicklas 91   // -------------------------------------
714 30 May 08 nicklas 92   
716 02 Jun 08 nicklas 93   
714 30 May 08 nicklas 94 }