You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Kevin Samuel (JIRA)" <ji...@apache.org> on 2010/12/15 10:05:01 UTC

[jira] Commented: (NET-346) FTP should support reporting NATed external IP address

    [ https://issues.apache.org/jira/browse/NET-346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12971582#action_12971582 ] 

Kevin Samuel commented on NET-346:
----------------------------------

*test code:*

			boolean rc = false;
			
			String localFile = "test.txt";
			String remoteFile = "test.txt";

			FTPClient ftp = new FTPClient();
						
			ftp.connect( ftpServer );
			
			ftp.setActiveExternalIPAddress("192.168.1.5");
			*ftp.setReportActiveExternalIPAddress("X.X.X.X");*
			ftp.setActivePortRange(6000, 7000);
			
			rc = ftp.login( ftpUser , ftpPass );
			if(!rc){ftp.disconnect();return;}

			ftp.changeWorkingDirectory(remoteDir);
			if(!rc){ftp.disconnect();return;}
			
			Log.info("    FTP GET : " + remoteFile + " >> " + localFile);
			rc = ftp.retrieveFile(remoteFile,new FileOutputStream(new File(localFile)));
			if(!rc){ftp.disconnect();return;}


> FTP should support reporting NATed external IP address
> ------------------------------------------------------
>
>                 Key: NET-346
>                 URL: https://issues.apache.org/jira/browse/NET-346
>             Project: Commons Net
>          Issue Type: Improvement
>          Components: FTP
>    Affects Versions: 2.2
>            Reporter: Kevin Samuel
>         Attachments: FTPClient.java
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> When trying to do an active FTP transfer as client from behind a firewall with NAT, setActiveExternalIPAddress is not sufficient, as you can only report the internal IP of the client (e.g. 192.168.1.2 vs 72.14.X.X)
> FTPClient should support an additional function to set the REPORTABLE external active IP Address
> I created and successfully tested a fix for this:
> ADD PRIVATE MEMBER:
> private InetAddress __reportActiveExternalHost;
> IN __initDefaults():
> __reportActiveExternalHost = null;
> ADD PUBLIC FUNCTIONS:
> private InetAddress getReportHostAddress()
>     {
>     	if (__reportActiveExternalHost != null)
>     	{
>     		return __reportActiveExternalHost ;
>     	}
>     	else if (__activeExternalHost != null)
>         {
>             return __activeExternalHost;
>         }
>         else
>         {
>             // default local address
>             return getLocalAddress();
>         }
>     }
> public void setReportActiveExternalIPAddress(String ipAddress) throws UnknownHostException
>     {
>         this.__reportActiveExternalHost = InetAddress.getByName(ipAddress);
>     }
> IN _openDataConnection_:
> if (isInet6Address)
>             {
>                 if (!FTPReply.isPositiveCompletion(eprt(getReportHostAddress(), server.getLocalPort())))
>                 {
>                     server.close();
>                     return null;
>                 }
>             }
>             else
>             {
>                 if (!FTPReply.isPositiveCompletion(port(getReportHostAddress(), server.getLocalPort())))
>                 {
>                     server.close();
>                     return null;
>                 }
>             }
> will also attach changed file
> sorry I am not familiar with the correct way to submit patches, although I tried to model this on #NET-285 as much as possible

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