This appears to be a bug in the FtpServer where it is ignoring the return
value from the Ftplet(s). Can some one else confirm too?

Sai Pullabhotla
www.jMethods.com



On Wed, May 13, 2009 at 9:27 AM, massimiliano basilica <
[email protected]> wrote:

>
> Hi I need some hint on using the FTPServer 1.0.
>
> I need to grant the access to the FTPServer to a list of well-known hosts,
> identified by their ip address.
>
> I've defined the following ftplet overriding the onConnect method.
> In this method I checked the ip address of the client, if the address is
> not in the granted list, the method returns the FtpletResult.DISCONNECT
> value.
>
> Eventually, I made a test, using an host not present in the granted list,
> but the FTPServer gives me the access.
>
> This is an example code:
>
> public class CustomizedFtplet extends
> org.apache.ftpserver.ftplet.DefaultFtplet {
>        static Logger log = null;
>
>        public FtpletResult onUploadStart(FtpSession session, FtpRequest
> request)
>        throws FtpException, IOException {
>
>                System.out.println("==> Upload");
>
>                return FtpletResult.DEFAULT;
>        }
>         public FtpletResult onLogin (FtpSession session, FtpRequest
> request)
>                throws FtpException, IOException {
>
>                        System.out.println("==> On Login " +
> session.getClientAddress());
>
>                        return FtpletResult.DEFAULT;
>                }
>
>         /**
>             * this method has been overridden to intercept IP address, Port
> and HostName
>             */
>                public FtpletResult onConnect(FtpSession session) throws
> FtpException,
>                IOException {
>                        FtpletResult retVal = FtpletResult.DISCONNECT;
>
>                        String ip =
> session.getClientAddress().getAddress().getHostAddress();
>                        System.out.println("ApacheFtplet Client Address  is
> "+ip);
>                        System.out.println("ApacheFtplet Client Port     is
> "+session.getClientAddress().getPort());
>                        System.out.println("ApacheFtplet Client HostName is
> "+session.getClientAddress().getHostName());
>                        System.out.println("FtpletResult " + retVal);
>                        if (grentedHost(ip))
>                                retVal =  FtpletResult.DEFAULT;
>                        return retVal;
>                }
>
>
>        private boolean grantedHost(String ip) {
>
>                return false;
>        }
>
>
> I registered the ftplet using:          Map<String,Ftplet> ftplets = new
> HashMap<String,Ftplet>();
>                ftplets.put("custom",new CustomizedFtplet());
>            serverFactory.setFtplets(ftplets);
>
> Do you think I made some mistake?Is there a FTPServer life cicle I didn't
> take in account?
> Note that the onLogin Method works fine (the session is closed when it
> returns FtpletResult.DISCONNECT).It seems that the FtpletResult.DISCONNECT
> for the method onConnect is not handled on the upper layer.
> Thank you in advance for your help.
> I'm looking forward your answering.
> Massimiliano.
>
>
>
>

Reply via email to