Example usage for org.apache.commons.vfs2.provider.sftp SftpFileSystemConfigBuilder setUserDirIsRoot

List of usage examples for org.apache.commons.vfs2.provider.sftp SftpFileSystemConfigBuilder setUserDirIsRoot

Introduction

In this page you can find the example usage for org.apache.commons.vfs2.provider.sftp SftpFileSystemConfigBuilder setUserDirIsRoot.

Prototype

public void setUserDirIsRoot(final FileSystemOptions opts, final boolean userDirIsRoot) 

Source Link

Document

Sets the whether to use the user directory as root (do not change to file system root).

Usage

From source file:fr.cls.atoll.motu.library.misc.ftp.TestFtp.java

public static void testVFS(String user, String pwd, String scheme, String host, String file) {

    StandardFileSystemManager fsManager = null;

    try {//w w w.  j a  va2 s.  c  o m
        fsManager = new StandardFileSystemManager();
        fsManager.setLogger(_LOG);

        StaticUserAuthenticator auth = new StaticUserAuthenticator(null, user, pwd);

        fsManager.setConfiguration(ConfigLoader.getInstance().get(Organizer.getVFSProviderConfig()));
        fsManager.setCacheStrategy(CacheStrategy.ON_RESOLVE);
        // fsManager.addProvider("moi", new DefaultLocalFileProvider());
        fsManager.init();

        FileSystemOptions opts = new FileSystemOptions();
        FileSystemConfigBuilder fscb = fsManager.getFileSystemConfigBuilder(scheme);
        DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);
        DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, auth);

        System.out.println(fsManager.getProviderCapabilities(scheme));

        if (fscb instanceof FtpFileSystemConfigBuilder) {
            FtpFileSystemConfigBuilder ftpFscb = (FtpFileSystemConfigBuilder) fscb;
            ftpFscb.setUserDirIsRoot(opts, true);
            ftpFscb.setPassiveMode(opts, true);

        }
        if (fscb instanceof HttpFileSystemConfigBuilder) {
            HttpFileSystemConfigBuilder httpFscb = (HttpFileSystemConfigBuilder) fscb;
            httpFscb.setProxyHost(opts, "proxy.cls.fr");
            httpFscb.setProxyPort(opts, 8080);

        }
        if (fscb instanceof SftpFileSystemConfigBuilder) {
            SftpFileSystemConfigBuilder sftpFscb = (SftpFileSystemConfigBuilder) fscb;
            sftpFscb.setUserDirIsRoot(opts, false);

            // TrustEveryoneUserInfo trustEveryoneUserInfo = new TrustEveryoneUserInfo();
            // trustEveryoneUserInfo.promptYesNo("eddfsdfs");
            // sftpFscb.setUserInfo(opts, new TrustEveryoneUserInfo());
            sftpFscb.setTimeout(opts, 5000);
            // SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);
            // SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");

        }
        // FileObject fo =
        // fsManager.resolveFile("ftp://ftp.cls.fr/pub/oceano/AVISO/NRT-SLA/maps/rt/j2/h/msla_rt_j2_err_21564.nc.gz",
        // opts);

        // String uri = String.format("%s://%s/%s", scheme, host, file);
        // String uri = String.format("%s://%s/", scheme, host);
        // FileObject originBase = fsManager.resolveFile(uri, opts);
        // fsManager.setBaseFile(originBase);

        File tempDir = new File("c:/tempVFS");
        // File tempFile = File.createTempFile("AsciiEnvisat", ".txt", tempDir);
        File hostFile = new File(file);
        String fileName = hostFile.getName();
        File newFile = new File(tempDir, fileName);
        newFile.createNewFile();

        DefaultFileReplicator dfr = new DefaultFileReplicator(tempDir);
        fsManager.setTemporaryFileStore(dfr);
        // System.out.println(fsManager.getBaseFile());
        // System.out.println(dfr);
        // System.out.println(fsManager.getTemporaryFileStore());

        // FileObject ff = fsManager.resolveFile("sftp://t:t@CLS-EARITH.pc.cls.fr/AsciiEnvisat.txt",
        // opts);
        String uri = String.format("%s://%s/%s", scheme, host, file);
        FileObject ff = fsManager.resolveFile(uri, opts);
        FileObject dest = fsManager.toFileObject(newFile);

        //ff.getContent().getInputStream();
        dest.copyFrom(ff, Selectors.SELECT_ALL);
        //dest.copyFrom(ff, Selectors.SELECT_ALL);

        //            
        // URL url = ff.getURL();
        //            
        // url.openConnection();
        // URLConnection conn = url.openConnection();
        // InputStream in = conn.getInputStream();
        // in.close();

        // InputStream in = ff.getContent().getInputStream();

    } catch (FileSystemException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MotuException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        // fsManager.close();
        // fsManager.freeUnusedResources();
    }

}

From source file:com.sonicle.webtop.vfs.sfs.SftpSFS.java

@Override
protected void configureOptions() throws FileSystemException {
    SftpFileSystemConfigBuilder builder = SftpFileSystemConfigBuilder.getInstance();
    builder.setUserDirIsRoot(fso, false);
    builder.setUserInfo(fso, new TrustEveryoneUserInfo());
}

From source file:net.sourceforge.fullsync.fs.filesystems.SFTPAuthProvider.java

@Override
public final void authSetup(final ConnectionDescription description, final FileSystemOptions options)
        throws FileSystemException {
    String username = description.getUsername().orElse(""); //$NON-NLS-1$
    String password = description.getPassword().orElse(""); //$NON-NLS-1$
    StaticUserAuthenticator auth = new StaticUserAuthenticator(null, username, password);
    DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(options, auth);
    SftpFileSystemConfigBuilder cfg = SftpFileSystemConfigBuilder.getInstance();
    cfg.setUserDirIsRoot(options, desc.isUserDirIsRoot());
    if (null != SSH_DIR_NAME) {
        cfg.setKnownHosts(options, new File(SSH_DIR_NAME, "known_hosts")); //$NON-NLS-1$
    }/*  www .ja  va  2  s .c  om*/
    logger.debug("using knownHosts: ", cfg.getKnownHosts(options)); //$NON-NLS-1$
    cfg.setUserInfo(options, this);
    cfg.setStrictHostKeyChecking(options, "ask"); //$NON-NLS-1$
    if (description.getPublicKeyAuth().orElse(false).booleanValue()) {
        cfg.setPreferredAuthentications(options, "publickey,password,keyboard-interactive"); //$NON-NLS-1$
    } else {
        cfg.setPreferredAuthentications(options, "password,keyboard-interactive"); //$NON-NLS-1$
    }
}

From source file:hadoopInstaller.installation.Installer.java

private void configureVFS2SFTP() throws InstallationFatalError {
    getLog().trace("HadoopInstaller.Configure.SFTP.Start"); //$NON-NLS-1$
    FileSystemOptions options;/* w  w  w  .ja  v  a2  s. c om*/
    options = new FileSystemOptions();
    SftpFileSystemConfigBuilder builder = SftpFileSystemConfigBuilder.getInstance();
    try {
        builder.setUserDirIsRoot(options, false);
        /*
         * TODO-- ssh-ask
         * 
         * In the case of ask, the UserInfo object should be passed with
         * builder.setUserInfo()
         */
        builder.setStrictHostKeyChecking(options, this.configuration.getStrictHostKeyChecking() ? "yes" : "no"); //$NON-NLS-1$//$NON-NLS-2$
        getLog().trace("HadoopInstaller.Configure.StrictHostKeyChecking", //$NON-NLS-1$
                this.configuration.getStrictHostKeyChecking());
        builder.setKnownHosts(options, new File(this.configuration.getSshKnownHosts()));
        getLog().trace("HadoopInstaller.Configure.KnownHosts", //$NON-NLS-1$
                this.configuration.getSshKnownHosts());
        File identities[] = { new File(getConfig().getSshKeyFile()) };
        getLog().trace("HadoopInstaller.Configure.PrivateKeyFile", //$NON-NLS-1$
                getConfig().getSshKeyFile());
        builder.setIdentities(options, identities);
        /*
         * TODO-- ssh-ask
         * 
         * what if the identities file is password protected? do we need to
         * use setUserInfo?
         */
    } catch (FileSystemException e) {
        throw new InstallationFatalError(e, "HadoopInstaller.Configure.SFTP.Fail"); //$NON-NLS-1$
    }
    this.sftpOptions = options;
    getLog().debug("HadoopInstaller.Configure.SFTP.Success"); //$NON-NLS-1$
}

From source file:fr.cls.atoll.motu.library.misc.vfs.VFSManager.java

/**
 * Sets the scheme./*from w  w w. j a va 2s. c  om*/
 * 
 * @param scheme the scheme
 * 
 * @return the file system options
 * 
 * @throws MotuException the motu exception
 */
public FileSystemOptions setSchemeOpts(String scheme, String host) throws MotuException {
    if (LOG.isDebugEnabled()) {
        LOG.debug("setSchemeOpts(String, String) - start");
    }

    if (Organizer.isNullOrEmpty(scheme)) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("setSchemeOpts(String, String) - end");
        }
        return opts;
    }

    if (opts == null) {
        opts = new FileSystemOptions();
    }

    FileSystemConfigBuilder fscb = null;
    MotuConfigFileSystemWrapper<Boolean> wrapperBoolean = new MotuConfigFileSystemWrapper<Boolean>();
    MotuConfigFileSystemWrapper<Period> wrapperPeriod = new MotuConfigFileSystemWrapper<Period>();
    MotuConfigFileSystemWrapper<String> wrapperString = new MotuConfigFileSystemWrapper<String>();

    try {
        try {
            fscb = standardFileSystemManager.getFileSystemConfigBuilder(scheme);
        } catch (FileSystemException e) {
            LOG.error("setSchemeOpts(String)", e);

            fscb = standardFileSystemManager.getFileSystemConfigBuilder(VFSManager.DEFAULT_SCHEME);
        }

        if (fscb instanceof FtpFileSystemConfigBuilder) {
            FtpFileSystemConfigBuilder ftpFscb = (FtpFileSystemConfigBuilder) fscb;
            Boolean userDirIsRoot = wrapperBoolean.getFieldValue(host,
                    MotuConfigFileSystemWrapper.PROP_FTPUSERDIRISROOT);
            if (userDirIsRoot != null) {
                ftpFscb.setUserDirIsRoot(opts, userDirIsRoot);
            } else {
                ftpFscb.setUserDirIsRoot(opts, false);
            }

            Boolean passiveMode = wrapperBoolean.getFieldValue(host,
                    MotuConfigFileSystemWrapper.PROP_FTPPASSIVEMODE);
            ;
            if (passiveMode != null) {
                ftpFscb.setPassiveMode(opts, passiveMode);
            }
            Period dataTimeOut = wrapperPeriod.getFieldValue(host,
                    MotuConfigFileSystemWrapper.PROP_FTPDATATIMEOUT);
            if (dataTimeOut != null) {
                long value = dataTimeOut.toStandardDuration().getMillis();
                if (value > Integer.MAX_VALUE) {
                    throw new MotuException(String.format(
                            "Motu Configuration : sftp timeout value is too large '%ld' milliseconds. Max is '%d'",
                            value, Integer.MAX_VALUE));
                }
                if (value > 0) {
                    ftpFscb.setDataTimeout(opts, (int) value);
                }
            }
        }

        if (fscb instanceof HttpFileSystemConfigBuilder) {
            HttpFileSystemConfigBuilder httpFscb = (HttpFileSystemConfigBuilder) fscb;

            Boolean isUseProxy = wrapperBoolean.getFieldValue(host,
                    MotuConfigFileSystemWrapper.PROP_USEHTTPPROXY);
            if ((isUseProxy != null) && (isUseProxy)) {
                String proxyHost = wrapperString.getFieldValue(host,
                        MotuConfigFileSystemWrapper.PROP_HTTPPROXYHOST);
                String proxyPort = wrapperString.getFieldValue(host,
                        MotuConfigFileSystemWrapper.PROP_HTTPPROXYPORT);
                httpFscb.setProxyHost(opts, proxyHost);
                httpFscb.setProxyPort(opts, Integer.parseInt(proxyPort));
            }

        }

        if (fscb instanceof SftpFileSystemConfigBuilder) {
            SftpFileSystemConfigBuilder sftpFscb = (SftpFileSystemConfigBuilder) fscb;

            Boolean userDirIsRoot = wrapperBoolean.getFieldValue(host,
                    MotuConfigFileSystemWrapper.PROP_SFTPUSERDIRISROOT);
            if (userDirIsRoot != null) {
                sftpFscb.setUserDirIsRoot(opts, userDirIsRoot);
            } else {
                sftpFscb.setUserDirIsRoot(opts, false);
            }

            String strictHostKeyChecking = wrapperString.getFieldValue(host,
                    MotuConfigFileSystemWrapper.PROP_STRICTHOSTKEYCHECKING);
            if (strictHostKeyChecking != null) {
                sftpFscb.setStrictHostKeyChecking(opts, strictHostKeyChecking);
            }

            Period SftpSessionTimeOut = wrapperPeriod.getFieldValue(host,
                    MotuConfigFileSystemWrapper.PROP_SFTPSESSIONTIMEOUT);
            if (SftpSessionTimeOut != null) {
                long value = SftpSessionTimeOut.toStandardDuration().getMillis();
                if (value > Integer.MAX_VALUE) {
                    throw new MotuException(String.format(
                            "Motu Configuration : sftp timeout value is too large '%ld' milliseconds. Max is '%d'",
                            value, Integer.MAX_VALUE));
                }
                if (value > 0) {
                    sftpFscb.setTimeout(opts, (int) value);
                }
            }

            Boolean isUseProxy = wrapperBoolean.getFieldValue(host,
                    MotuConfigFileSystemWrapper.PROP_USESFTPPROXY);
            if ((isUseProxy != null) && (isUseProxy)) {
                String proxyHost = wrapperString.getFieldValue(host,
                        MotuConfigFileSystemWrapper.PROP_SFTPPROXYHOST);
                String proxyPort = wrapperString.getFieldValue(host,
                        MotuConfigFileSystemWrapper.PROP_SFTPPROXYPORT);
                sftpFscb.setProxyHost(opts, proxyHost);
                sftpFscb.setProxyPort(opts, Integer.parseInt(proxyPort));
            }

        }

    } catch (FileSystemException e) {
        LOG.error("setSchemeOpts(String, String)", e);

        throw new MotuException("Error in VFSManager#setScheme", e);
    }

    if (LOG.isDebugEnabled()) {
        LOG.debug("setSchemeOpts(String, String) - end");
    }
    return opts;
}

From source file:pl.otros.vfs.browser.util.VFSUtils.java

/**
 * Returns a file representation/*w  ww  .ja v a 2s  .  c  o  m*/
 *
 * @param filePath The file path
 * @return a file representation
 * @throws FileSystemException
 */
public static FileObject resolveFileObject(String filePath) throws FileSystemException {
    LOGGER.info("Resolving file: {}", filePath);
    if (filePath.startsWith("sftp://")) {
        SftpFileSystemConfigBuilder builder = SftpFileSystemConfigBuilder.getInstance();
        builder.setStrictHostKeyChecking(opts, "no");
        builder.setUserDirIsRoot(opts, false);
        builder.setCompression(opts, "zlib,none");

    } else if (filePath.startsWith("smb://")) {

    } else if (filePath.startsWith("ftp://")) {
        FtpFileSystemConfigBuilder.getInstance().setPassiveMode(opts, true);
    }
    UserAuthenticatorFactory factory = new UserAuthenticatorFactory();

    OtrosUserAuthenticator authenticator = factory.getUiUserAuthenticator(persistentAuthStore, sessionAuthStore,
            filePath, opts);

    if (pathContainsCredentials(filePath)) {
        authenticator = null;
    }
    return resolveFileObject(filePath, opts, authenticator, persistentAuthStore, sessionAuthStore);
}

From source file:pl.otros.vfs.browser.util.VFSUtils.java

/**
 * Returns a file representation//from   www. j a v  a 2 s. co  m
 *
 * @param filePath The file path
 * @param options  The filesystem options
 * @return a file representation
 * @throws FileSystemException
 */
public static FileObject resolveFileObject(String filePath, FileSystemOptions options,
        OtrosUserAuthenticator authenticator, AuthStore persistentAuthStore, AuthStore sessionAuthStore)
        throws FileSystemException {
    if (filePath.startsWith("sftp://")) {
        SftpFileSystemConfigBuilder builder = SftpFileSystemConfigBuilder.getInstance();
        builder.setStrictHostKeyChecking(opts, "no");
        builder.setUserDirIsRoot(opts, false);
        builder.setCompression(opts, "zlib,none");
    }

    DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(options, authenticator);
    FileObject resolveFile;

    VFSURIParser parser = new VFSURIParser(filePath);
    //Get file type to force authentication
    try {
        resolveFile = getFileSystemManager().resolveFile(filePath, options);
        resolveFile.getType();
    } catch (FileSystemException e) {
        LOGGER.error("Error resolving file " + filePath, e);
        Throwable rootCause = Throwables.getRootCause(e);
        boolean authorizationFailed = false;
        authorizationFailed = checkForWrongCredentials(rootCause);
        if (authorizationFailed) {
            LOGGER.error("Wrong user name or password for " + filePath);
            //clear last data
            //authenticator can be null if user/password was entered in URL
            if (authenticator != null) {
                UserAuthenticationDataWrapper lastUserAuthenticationData = authenticator
                        .getLastUserAuthenticationData();
                lastUserAuthenticationData.remove(UserAuthenticationDataWrapper.PASSWORD);
                String user = new String(lastUserAuthenticationData.getData(UserAuthenticationData.USERNAME));
                UserAuthenticationInfo auInfo = new UserAuthenticationInfo(parser.getProtocol().getName(),
                        parser.getHostname(), user);
                sessionAuthStore.remove(auInfo);
                sessionAuthStore.add(auInfo, lastUserAuthenticationData);
                LOGGER.info("Removing password for {} on {}",
                        new Object[] {
                                new String(lastUserAuthenticationData.getData(UserAuthenticationData.USERNAME)),
                                filePath });
            }
        }
        throw e;
    }

    if (resolveFile != null && authenticator != null && authenticator.getLastUserAuthenticationData() != null) {
        UserAuthenticationDataWrapper lastUserAuthenticationData = authenticator
                .getLastUserAuthenticationData();
        Map<Type, char[]> addedTypes = lastUserAuthenticationData.getAddedTypes();
        String user = new String(addedTypes.get(UserAuthenticationData.USERNAME));
        UserAuthenticationInfo auInfo = new UserAuthenticationInfo(parser.getProtocol().getName(),
                parser.getHostname(), user);
        sessionAuthStore.add(auInfo, lastUserAuthenticationData.copy());
        if (authenticator.isPasswordSave()) {
            LOGGER.info("Saving password for {}://{}@{}",
                    new Object[] { parser.getProtocol().getName(), user, parser.getHostname() });
            persistentAuthStore.add(auInfo, lastUserAuthenticationData);
            saveAuthStore();
        }
    }
    return resolveFile;
}