1 19 20 package com.sslexplorer.networkplaces.store.ftp; 21 22 import java.io.IOException ; 23 24 import org.apache.commons.logging.Log; 25 import org.apache.commons.logging.LogFactory; 26 import org.apache.commons.vfs.FileObject; 27 import org.apache.commons.vfs.FileSystemException; 28 import org.apache.commons.vfs.FileSystemOptions; 29 import org.apache.commons.vfs.provider.ftp.FtpFileSystemConfigBuilder; 30 31 import com.sslexplorer.networkplaces.AbstractNetworkPlaceMount; 32 import com.sslexplorer.policyframework.LaunchSession; 33 import com.sslexplorer.security.PasswordCredentials; 34 import com.sslexplorer.vfs.VFSStore; 35 import com.sslexplorer.vfs.utils.URI; 36 import com.sslexplorer.vfs.webdav.DAVAuthenticationRequiredException; 37 import com.sslexplorer.vfs.webdav.DAVUtilities; 38 39 public class FTPMount extends AbstractNetworkPlaceMount { 40 41 final static Log log = LogFactory.getLog(FTPMount.class); 42 43 public FTPMount(LaunchSession launchSession, VFSStore store) { 44 super(launchSession, store); 45 } 46 47 public FileSystemOptions getOptions(URI uri) { 48 FileSystemOptions options = new FileSystemOptions(); 49 if(uri.getQueryString()==null || uri.getQueryString().indexOf("passive=false")==-1) { 50 FtpFileSystemConfigBuilder c = FtpFileSystemConfigBuilder.getInstance(); 51 c.setPassiveMode(options, true); 52 c.setUserDirIsRoot(options, true); 54 } 56 return options; 57 } 58 59 public FileObject createVFSFileObject(String path, PasswordCredentials credentials) throws IOException { 60 try { 61 URI uri = getRootVFSURI(); 62 if (credentials != null) { 63 uri.setUserinfo(DAVUtilities.encodeURIUserInfo(credentials.getUsername() + (credentials.getPassword() != null ? ":" + new String (credentials.getPassword()) : ""))); 64 } 65 uri.setPath(uri.getPath() + (uri.getPath().endsWith("/") ? "" : "/") + DAVUtilities.encodePath(path)); 66 FileObject fileObject = this.getStore().getRepository().getFileSystemManager().resolveFile(uri.toString(), getOptions(uri)); 67 return fileObject; 68 } catch (FileSystemException fse) { 69 if (fse.getCode().equals("vfs.provider.ftp/connect.error")) { 70 throw new DAVAuthenticationRequiredException(getMountString(), true); 71 } 72 throw fse; 73 } 74 } 75 } | Popular Tags |