[ 
https://issues.apache.org/jira/browse/FTPSERVER-352?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12840988#action_12840988
 ] 

DevNull43 commented on FTPSERVER-352:
-------------------------------------

Need help to implement the rest of the patch.

Looks like once InetAddress has been stored in session variable, it should be 
set in

FtpIoSession.getRemoteAddress such

If (containsAttribute(session.IDNT.clientHost) ...

However this method is used for control and data channels, plus uses 
SocketAddress and not InetAddress.

Any hints on where to set real client IP for data channel?

> IDNT command for control channel delegation.
> --------------------------------------------
>
>                 Key: FTPSERVER-352
>                 URL: https://issues.apache.org/jira/browse/FTPSERVER-352
>             Project: FtpServer
>          Issue Type: New Feature
>          Components: Core
>    Affects Versions: 1.0.3
>            Reporter: DevNull43
>         Attachments: IDNTCommand.txt
>
>
> FTP protocol contains 2 channels, one for control and a second one for data.
> Channels can be bounced in 2 ways:
> 1- Full bounce: A bouncer in between client and FtpServer acts as a man in 
> the middle and forwards both channles, getting all the traffic from control 
> and data.
> 2- Control bounce: A bouncer in between client and FtpServer acts as a man in 
> the middle and forwards ONLY control channel, data channel uses realHost IP 
> for PASV and sends data channel directly to client, not getting all traffic 
> from data side.
> FtpServer works correctly with bouncers of type 1, however in order to work 
> delegating control channels it needs to implement IDNT command.
> When a bouncer for control channel connects to FtpServer, it sends as first 
> command:
> IDNT id...@hostip:HOSTIP
> With the attached patch, FtpServer uses bouncer IP for sending control 
> channel (default), but stores in session.IDNT.clientHost variable name, the 
> InetAddress of real client.
> From now on a developer can read from session this variable, and send data 
> channel to original client.
> Further patches will check if this variable exist and use as appropiate.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to