/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.vfs2.provider.ftps;

import javax.net.ssl.KeyManager;
import javax.net.ssl.TrustManager;

import org.apache.commons.net.util.TrustManagerUtils;
import org.apache.commons.vfs2.FileSystemOptions;
import org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder;

The configuration builder for various FTPS configuration options.
Since:2.0
/** * The configuration builder for various FTPS configuration options. * * @since 2.0 */
public final class FtpsFileSystemConfigBuilder extends FtpFileSystemConfigBuilder { private static final String _PREFIX = FtpsFileSystemConfigBuilder.class.getName(); private static final FtpsFileSystemConfigBuilder BUILDER = new FtpsFileSystemConfigBuilder(); private static final String FTPS_MODE = _PREFIX + ".FTPS_MODE"; private static final String PROT = _PREFIX + ".PROT"; private static final String KEY_MANAGER = _PREFIX + ".KEY_MANAGER"; private static final String TRUST_MANAGER = _PREFIX + ".TRUST_MANAGER"; private FtpsFileSystemConfigBuilder() { super("ftps."); }
Gets the singleton builder.
Returns:the singleton builder.
/** * Gets the singleton builder. * * @return the singleton builder. */
public static FtpsFileSystemConfigBuilder getInstance() { return BUILDER; }
Sets FTPS mode, either "implicit" or "explicit".

Note, that implicit mode is not standardized and considered as deprecated. Some unit tests for VFS fail with implicit mode and it is not yet clear if its a problem with Commons VFS/Commons Net or our test server Apache FTP/SSHD.

Params:
  • opts – The FileSystemOptions.
  • ftpsMode – The mode to establish a FTPS connection.
See Also:
Since:2.1
/** * Sets FTPS mode, either "implicit" or "explicit". * * <p> * Note, that implicit mode is not standardized and considered as deprecated. Some unit tests for VFS fail with * implicit mode and it is not yet clear if its a problem with Commons VFS/Commons Net or our test server Apache * FTP/SSHD. * </p> * * @param opts The FileSystemOptions. * @param ftpsMode The mode to establish a FTPS connection. * @see <a href="http://en.wikipedia.org/wiki/FTPS#Implicit">Wikipedia: FTPS/Implicit</a> * @since 2.1 */
public void setFtpsMode(final FileSystemOptions opts, final FtpsMode ftpsMode) { setParam(opts, FTPS_MODE, ftpsMode); }
Returns the FTPS mode. Defaults to "explicit" if not defined.
Params:
  • opts – The FileSystemOptions.
See Also:
Returns:The file type.
/** * Returns the FTPS mode. Defaults to "explicit" if not defined. * * @param opts The FileSystemOptions. * @return The file type. * @see #setFtpsType */
public FtpsMode getFtpsMode(final FileSystemOptions opts) { return getEnum(FtpsMode.class, opts, FTPS_MODE, FtpsMode.EXPLICIT); }
Sets FTPS type, either "implicit" or "explicit".

Note, that implicit mode is not standardized and considered as deprecated. Some unit tests for VFS fail with implicit mode and it is not yet clear if its a problem with Commons VFS/Commons Net or our test server Apache FTP/SSHD.

Params:
  • opts – The FileSystemOptions.
  • ftpsType – The file type.
See Also:
Deprecated:As of 2.1, use setFtpsMode(FileSystemOptions, FtpsMode)
/** * Sets FTPS type, either "implicit" or "explicit". * <p> * Note, that implicit mode is not standardized and considered as deprecated. Some unit tests for VFS fail with * implicit mode and it is not yet clear if its a problem with Commons VFS/Commons Net or our test server Apache * FTP/SSHD. * </p> * * @param opts The FileSystemOptions. * @param ftpsType The file type. * @see <a href="http://en.wikipedia.org/wiki/FTPS#Implicit">Wikipedia: FTPS/Implicit</a> * @deprecated As of 2.1, use {@link #setFtpsMode(FileSystemOptions, FtpsMode)} */
@Deprecated public void setFtpsType(final FileSystemOptions opts, final String ftpsType) { final FtpsMode mode; if (ftpsType != null) { mode = FtpsMode.valueOf(ftpsType.toUpperCase()); if (mode == null) { throw new IllegalArgumentException("Not a proper FTPS mode: " + ftpsType); } } else { mode = null; } setFtpsMode(opts, mode); }
Returns the FTPS type. Defaults to "explicit" if not defined.
Params:
  • opts – The FileSystemOptions.
See Also:
Returns:The file type.
Deprecated:As of 2.1, use getFtpsMode(FileSystemOptions)
/** * Returns the FTPS type. Defaults to "explicit" if not defined. * * @param opts The FileSystemOptions. * @return The file type. * @see #setFtpsType * @deprecated As of 2.1, use {@link #getFtpsMode(FileSystemOptions)} */
@Deprecated public String getFtpsType(final FileSystemOptions opts) { return getFtpsMode(opts).name().toLowerCase(); }
Gets the data channel protection level (PROT).
Params:
  • opts – The FileSystemOptions.
See Also:
Returns:The PROT value.
Since:2.1
/** * Gets the data channel protection level (PROT). * * @param opts The FileSystemOptions. * @return The PROT value. * @see org.apache.commons.net.ftp.FTPSClient#execPROT(String) * @since 2.1 */
public FtpsDataChannelProtectionLevel getDataChannelProtectionLevel(final FileSystemOptions opts) { return getEnum(FtpsDataChannelProtectionLevel.class, opts, PROT); }
Sets the data channel protection level (PROT).
Params:
  • opts – The FileSystemOptions.
  • prot – The PROT value, null has no effect.
See Also:
Since:2.1
/** * Sets the data channel protection level (PROT). * * @param opts The FileSystemOptions. * @param prot The PROT value, {@code null} has no effect. * @see org.apache.commons.net.ftp.FTPSClient#execPROT(String) * @since 2.1 */
public void setDataChannelProtectionLevel(final FileSystemOptions opts, final FtpsDataChannelProtectionLevel prot) { setParam(opts, PROT, prot); }
Gets the KeyManager used to provide a client-side certificate if the FTPS server requests it.
Params:
  • opts – The FileSystemOptions.
See Also:
Returns:the key manager instance or null
Since:2.1
/** * Gets the KeyManager used to provide a client-side certificate if the FTPS server requests it. * * @param opts The FileSystemOptions. * @return the key manager instance or {@code null} * @see org.apache.commons.net.ftp.FTPSClient#setKeyManager(KeyManager) * @since 2.1 */
public KeyManager getKeyManager(final FileSystemOptions opts) { return (KeyManager) getParam(opts, KEY_MANAGER); }
Sets the KeyManager used to provide a client-side certificate if the FTPS server requests it.
Params:
  • opts – The FileSystemOptions.
  • keyManager – The key manager instance.
See Also:
Since:2.1
/** * Sets the KeyManager used to provide a client-side certificate if the FTPS server requests it. * * @param opts The FileSystemOptions. * @param keyManager The key manager instance. * @see org.apache.commons.net.ftp.FTPSClient#setKeyManager(KeyManager) * @since 2.1 */
public void setKeyManager(final FileSystemOptions opts, final KeyManager keyManager) { setParam(opts, KEY_MANAGER, keyManager); }
Gets the TrustManager that validates the FTPS server's certificate.

If the params do not contain the key for the trust manager, it will return a trust manger that simply checks this certificate for validity.

Params:
  • opts – The FileSystemOptions.
See Also:
Returns:the trust manager instance or null
Since:2.1
/** * Gets the TrustManager that validates the FTPS server's certificate. * <p> * If the params do not contain the key for the trust manager, it will return a trust manger that simply checks this * certificate for validity. * </p> * * @param opts The FileSystemOptions. * @return the trust manager instance or {@code null} * @see org.apache.commons.net.ftp.FTPSClient#setTrustManager(TrustManager) * @since 2.1 */
public TrustManager getTrustManager(final FileSystemOptions opts) { final TrustManager trustManager; if (hasParam(opts, TRUST_MANAGER)) { trustManager = (TrustManager) getParam(opts, TRUST_MANAGER); } else { trustManager = TrustManagerUtils.getValidateServerCertificateTrustManager(); } return trustManager; }
Sets the TrustManager that validates the FTPS server's certificate.
Params:
  • opts – The FileSystemOptions.
  • trustManager – The trust manager instance.
See Also:
Since:2.1
/** * Sets the TrustManager that validates the FTPS server's certificate. * * @param opts The FileSystemOptions. * @param trustManager The trust manager instance. * @see org.apache.commons.net.ftp.FTPSClient#setTrustManager(TrustManager) * @since 2.1 */
public void setTrustManager(final FileSystemOptions opts, final TrustManager trustManager) { setParam(opts, TRUST_MANAGER, trustManager); } }