diff --git a/rse/plugins/org.eclipse.rse.services.files.ftp/META-INF/MANIFEST.MF b/rse/plugins/org.eclipse.rse.services.files.ftp/META-INF/MANIFEST.MF
index 84efd00c27d..cf5bad2015e 100644
--- a/rse/plugins/org.eclipse.rse.services.files.ftp/META-INF/MANIFEST.MF
+++ b/rse/plugins/org.eclipse.rse.services.files.ftp/META-INF/MANIFEST.MF
@@ -8,7 +8,8 @@ Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.rse.services,
- org.apache.commons.net
+ org.apache.commons.net,
+ org.eclipse.rse.core
Eclipse-LazyStart: true
Export-Package: org.eclipse.rse.services.files.ftp
Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPService.java b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPService.java
index 2ba4217cd8f..b8d22bde586 100644
--- a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPService.java
+++ b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPService.java
@@ -1,5 +1,5 @@
/********************************************************************************
- * Copyright (c) 2006 IBM Corporation and others. All rights reserved.
+ * Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@@ -35,6 +35,7 @@
* Javier Montalvo Orus (Symbian) - Fixing 165471 - [ftp] On wftpd-2.0, "." and ".." directory entries should be hidden
* Javier Montalvo Orus (Symbian) - Fixing 165476 - [ftp] On warftpd-1.65 in MSDOS mode, cannot expand drives
* Javier Montalvo Orus (Symbian) - Fixing 168120 - [ftp] root filter resolves to home dir
+ * Javier Montalvo Orus (Symbian) - Fixing 169680 - [ftp] FTP files subsystem and service should use passive mode
********************************************************************************/
package org.eclipse.rse.services.files.ftp;
@@ -60,6 +61,7 @@ import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.rse.core.model.IPropertySet;
import org.eclipse.rse.services.clientserver.FileTypeMatcher;
import org.eclipse.rse.services.clientserver.IMatcher;
import org.eclipse.rse.services.clientserver.NamePatternMatcher;
@@ -85,8 +87,26 @@ public class FTPService extends AbstractFileService implements IFileService, IFT
private transient int _portNumber;
private OutputStream _ftpLoggingOutputStream;
-
+ private IPropertySet _ftpPropertySet;
private Exception _exception;
+
+
+ /**
+ * Set a IPropertySet containing pairs of keys and values with
+ * the FTP Client preferences
+ * Supported keys and values are:
+ *
+ * KEY | VALUE | Usage |
+ * "passive" | "true" | "false" | Enables FTP passive mode |
+ *
+ *
+ * @see org.eclipse.rse.core.model.IPropertySet
+ * @param ftpPropertySet
+ */
+ public void setPropertySet(IPropertySet ftpPropertySet)
+ {
+ _ftpPropertySet = ftpPropertySet;
+ }
/*
* (non-Javadoc)
@@ -240,6 +260,17 @@ public class FTPService extends AbstractFileService implements IFileService, IFT
_userHome = '/'+_userHome.substring(0,_userHome.lastIndexOf(']'));
}
+ if(_ftpPropertySet != null)
+ {
+ if(_ftpPropertySet.getPropertyValue("passive").equalsIgnoreCase("true")) //$NON-NLS-1$ //$NON-NLS-2$
+ {
+ _ftpClient.enterLocalPassiveMode();
+ }
+ else
+ {
+ _ftpClient.enterLocalActiveMode();
+ }
+ }
}
public void disconnect()
@@ -272,6 +303,18 @@ public class FTPService extends AbstractFileService implements IFileService, IFT
}
+ if(_ftpPropertySet != null)
+ {
+ if(_ftpPropertySet.getPropertyValue("passive").equalsIgnoreCase("true")) //$NON-NLS-1$ //$NON-NLS-2$
+ {
+ _ftpClient.enterLocalPassiveMode();
+ }
+ else
+ {
+ _ftpClient.enterLocalActiveMode();
+ }
+ }
+
if(_hostName!=null)
{
try{
diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/subsystems/files/ftp/connectorservice/FTPConnectorService.java b/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/subsystems/files/ftp/connectorservice/FTPConnectorService.java
index d63138b4fba..d8de8d6276b 100644
--- a/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/subsystems/files/ftp/connectorservice/FTPConnectorService.java
+++ b/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/subsystems/files/ftp/connectorservice/FTPConnectorService.java
@@ -1,5 +1,5 @@
/********************************************************************************
- * Copyright (c) 2006 IBM Corporation. All rights reserved.
+ * Copyright (c) 2006, 2007 IBM Corporation. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
@@ -13,6 +13,7 @@
* Contributors:
* Javier Montalvo Orus (Symbian) - Bug 140348 - FTP did not use port number
* Javier Montalvo Orus (Symbian) - Bug 161209 - Need a Log of ftp commands
+ * Javier Montalvo Orus (Symbian) - Bug 169680 - [ftp] FTP files subsystem and service should use passive mode
********************************************************************************/
package org.eclipse.rse.subsystems.files.ftp.connectorservice;
@@ -21,6 +22,8 @@ import java.io.OutputStream;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.rse.core.model.IHost;
+import org.eclipse.rse.core.model.IPropertySet;
+import org.eclipse.rse.core.model.PropertyType;
import org.eclipse.rse.core.model.SystemSignonInformation;
import org.eclipse.rse.core.subsystems.AbstractConnectorService;
import org.eclipse.rse.services.files.IFileService;
@@ -35,11 +38,20 @@ import org.eclipse.ui.console.MessageConsole;
public class FTPConnectorService extends AbstractConnectorService
{
protected FTPService _ftpService;
+ private IPropertySet _propertySet;
public FTPConnectorService(IHost host, int port)
{
super(SystemFileResources.RESID_FTP_CONNECTORSERVICE_NAME,SystemFileResources.RESID_FTP_CONNECTORSERVICE_DESCRIPTION, host, port);
_ftpService = new FTPService();
+
+ _propertySet = getPropertySet("FTP Settings"); //$NON-NLS-1$
+
+ if(_propertySet==null)
+ {
+ _propertySet = createPropertySet("FTP Settings"); //$NON-NLS-1$
+ _propertySet.addProperty("passive","false",PropertyType.getEnumPropertyType(new String[]{"true","false"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ }
}
public void internalConnect(IProgressMonitor monitor) throws Exception
@@ -56,6 +68,7 @@ public class FTPConnectorService extends AbstractConnectorService
_ftpService.setPassword(info.getPassword());
_ftpService.setPortNumber(getPort());
_ftpService.setLoggingStream(getLoggingStream(info.getHostname(),getPort()));
+ _ftpService.setPropertySet(_propertySet);
_ftpService.connect();
}