Uploaded image for project: 'FtpServer'
  1. FtpServer
  2. FTPSERVER-149

Provide convenience methods for checking is the control and data sockets are secure

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.0.0-M2
    • 1.0.0-M3
    • None
    • None

    Description

      Checking if the data and control sockets are secure (running over SSL/TLS) from a Ftplet is quite intricate and depends on knowledge of the internal implementation in FtpServer. We should make this simple. Suggestion by Jeroen Cranendonk

      I've cobbled together some code which should give an idea of what I'm trying
      to achieve, haven't tested it yet though. And I do realize this probably
      breaks your design in all kinds of ways

      Firstly, I've added the following to FtpSessionImpl:
      public boolean isDataConnectionSecure()

      { return ioSession.getDataConnection().isSecure(); }

      public boolean isSecure()

      { return ioSession.getFilterChain().contains("sslSessionFilter"); }

      public void write(final Object message)

      { ioSession.write(message); }

      And then my Ftplet looks like this (and it probably won't compile unless
      it's against the full ftpserver code):

      public class MyFtplet extends DefaultFtplet implements Ftplet {

      @Override
      public FtpletEnum onUploadStart(final FtpSession session, final
      FtpRequest request) throws FtpException,
      IOException

      { return this.onLimitedStart(session, request); }

      private FtpletEnum onLimitedStart(final FtpSession session, final
      FtpRequest request)

      { if (session.isSecure() && session.isDataConnectionSecure()) { return FtpletEnum.RET_DEFAULT; }

      session.write(new
      DefaultFtpReply(FtpReply.REPLY_550_REQUESTED_ACTION_NOT_TAKEN,
      "Cannot do this before securing the connection."));
      return FtpletEnum.RET_SKIP;
      }

      }

      Attachments

        Issue Links

          Activity

            People

              niklas Niklas Therning
              niklas Niklas Therning
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: