Search in sources :

Example 96 with FTPFile

use of org.apache.commons.net.ftp.FTPFile in project nutch by apache.

the class FtpResponse method list2html.

// generate html page from ftp dir list
private byte[] list2html(List<FTPFile> list, String path, boolean includeDotDot) {
    // StringBuffer x = new
    // StringBuffer("<!doctype html public \"-//ietf//dtd html//en\"><html><head>");
    StringBuffer x = new StringBuffer("<html><head>");
    x.append("<title>Index of " + path + "</title></head>\n");
    x.append("<body><h1>Index of " + path + "</h1><pre>\n");
    if (includeDotDot) {
        x.append("<a href='../'>../</a>\t-\t-\t-\n");
    }
    for (int i = 0; i < list.size(); i++) {
        FTPFile f = (FTPFile) list.get(i);
        String name = f.getName();
        String time = HttpDateFormat.toString(f.getTimestamp());
        if (f.isDirectory()) {
            // some ftp server LIST "." and "..", we skip them here
            if (name.equals(".") || name.equals(".."))
                continue;
            x.append("<a href='" + name + "/" + "'>" + name + "/</a>\t");
            x.append(time + "\t-\n");
        } else if (f.isFile()) {
            x.append("<a href='" + name + "'>" + name + "</a>\t");
            x.append(time + "\t" + f.getSize() + "\n");
        } else {
        // ignore isSymbolicLink()
        // ignore isUnknown()
        }
    }
    x.append("</pre></body></html>\n");
    return new String(x).getBytes();
}
Also used : FTPFile(org.apache.commons.net.ftp.FTPFile)

Example 97 with FTPFile

use of org.apache.commons.net.ftp.FTPFile in project audit4j-core by audit4j.

the class FTPArchiveClient method init.

/**
 * Inits the.
 *
 * @param args the args
 * @throws UnknownHostException the unknown host exception
 */
public static void init(String[] args) throws UnknownHostException {
    boolean storeFile = false, binaryTransfer = false, error = false, listFiles = false, listNames = false, hidden = false;
    boolean localActive = false, useEpsvWithIPv4 = false, feat = false, printHash = false;
    boolean mlst = false, mlsd = false;
    boolean lenient = false;
    long keepAliveTimeout = -1;
    int controlKeepAliveReplyTimeout = -1;
    // listings require 3 params
    int minParams = 5;
    // SSL protocol
    String protocol = null;
    String doCommand = null;
    String trustmgr = null;
    String proxyHost = null;
    int proxyPort = 80;
    String proxyUser = null;
    String proxyPassword = null;
    String username = null;
    String password = null;
    int base = 0;
    for (base = 0; base < args.length; base++) {
        if (args[base].equals("-s")) {
            storeFile = true;
        } else if (args[base].equals("-a")) {
            localActive = true;
        } else if (args[base].equals("-A")) {
            username = "anonymous";
            password = System.getProperty("user.name") + "@" + InetAddress.getLocalHost().getHostName();
        } else if (args[base].equals("-b")) {
            binaryTransfer = true;
        } else if (args[base].equals("-c")) {
            doCommand = args[++base];
            minParams = 3;
        } else if (args[base].equals("-d")) {
            mlsd = true;
            minParams = 3;
        } else if (args[base].equals("-e")) {
            useEpsvWithIPv4 = true;
        } else if (args[base].equals("-f")) {
            feat = true;
            minParams = 3;
        } else if (args[base].equals("-h")) {
            hidden = true;
        } else if (args[base].equals("-k")) {
            keepAliveTimeout = Long.parseLong(args[++base]);
        } else if (args[base].equals("-l")) {
            listFiles = true;
            minParams = 3;
        } else if (args[base].equals("-L")) {
            lenient = true;
        } else if (args[base].equals("-n")) {
            listNames = true;
            minParams = 3;
        } else if (args[base].equals("-p")) {
            protocol = args[++base];
        } else if (args[base].equals("-t")) {
            mlst = true;
            minParams = 3;
        } else if (args[base].equals("-w")) {
            controlKeepAliveReplyTimeout = Integer.parseInt(args[++base]);
        } else if (args[base].equals("-T")) {
            trustmgr = args[++base];
        } else if (args[base].equals("-PrH")) {
            proxyHost = args[++base];
            String[] parts = proxyHost.split(":");
            if (parts.length == 2) {
                proxyHost = parts[0];
                proxyPort = Integer.parseInt(parts[1]);
            }
        } else if (args[base].equals("-PrU")) {
            proxyUser = args[++base];
        } else if (args[base].equals("-PrP")) {
            proxyPassword = args[++base];
        } else if (args[base].equals("-#")) {
            printHash = true;
        } else {
            break;
        }
    }
    int remain = args.length - base;
    if (username != null) {
        minParams -= 2;
    }
    if (// server, user, pass, remote, local [protocol]
    remain < minParams) {
        System.err.println(USAGE);
        System.exit(1);
    }
    String server = args[base++];
    int port = 0;
    String[] parts = server.split(":");
    if (parts.length == 2) {
        server = parts[0];
        port = Integer.parseInt(parts[1]);
    }
    if (username == null) {
        username = args[base++];
        password = args[base++];
    }
    String remote = null;
    if (args.length - base > 0) {
        remote = args[base++];
    }
    String local = null;
    if (args.length - base > 0) {
        local = args[base++];
    }
    final FTPClient ftp;
    if (protocol == null) {
        if (proxyHost != null) {
            System.out.println("Using HTTP proxy server: " + proxyHost);
            ftp = new FTPHTTPClient(proxyHost, proxyPort, proxyUser, proxyPassword);
        } else {
            ftp = new FTPClient();
        }
    } else {
        FTPSClient ftps;
        if (protocol.equals("true")) {
            ftps = new FTPSClient(true);
        } else if (protocol.equals("false")) {
            ftps = new FTPSClient(false);
        } else {
            String[] prot = protocol.split(",");
            if (prot.length == 1) {
                // Just protocol
                ftps = new FTPSClient(protocol);
            } else {
                // protocol,true|false
                ftps = new FTPSClient(prot[0], Boolean.parseBoolean(prot[1]));
            }
        }
        ftp = ftps;
        if ("all".equals(trustmgr)) {
            ftps.setTrustManager(TrustManagerUtils.getAcceptAllTrustManager());
        } else if ("valid".equals(trustmgr)) {
            ftps.setTrustManager(TrustManagerUtils.getValidateServerCertificateTrustManager());
        } else if ("none".equals(trustmgr)) {
            ftps.setTrustManager(null);
        }
    }
    if (printHash) {
        ftp.setCopyStreamListener(createListener());
    }
    if (keepAliveTimeout >= 0) {
        ftp.setControlKeepAliveTimeout(keepAliveTimeout);
    }
    if (controlKeepAliveReplyTimeout >= 0) {
        ftp.setControlKeepAliveReplyTimeout(controlKeepAliveReplyTimeout);
    }
    ftp.setListHiddenFiles(hidden);
    // suppress login details
    ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true));
    try {
        int reply;
        if (port > 0) {
            ftp.connect(server, port);
        } else {
            ftp.connect(server);
        }
        System.out.println("Connected to " + server + " on " + (port > 0 ? port : ftp.getDefaultPort()));
        // After connection attempt, you should check the reply code to
        // verify
        // success.
        reply = ftp.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            ftp.disconnect();
            System.err.println("FTP server refused connection.");
            System.exit(1);
        }
    } catch (IOException e) {
        if (ftp.isConnected()) {
            try {
                ftp.disconnect();
            } catch (IOException f) {
            // do nothing
            }
        }
        System.err.println("Could not connect to server.");
        e.printStackTrace();
        System.exit(1);
    }
    __main: try {
        if (!ftp.login(username, password)) {
            ftp.logout();
            error = true;
            break __main;
        }
        System.out.println("Remote system is " + ftp.getSystemType());
        if (binaryTransfer) {
            ftp.setFileType(FTP.BINARY_FILE_TYPE);
        } else {
            // in theory this should not be necessary as servers should
            // default to ASCII
            // but they don't all do so - see NET-500
            ftp.setFileType(FTP.ASCII_FILE_TYPE);
        }
        // behind firewalls these days.
        if (localActive) {
            ftp.enterLocalActiveMode();
        } else {
            ftp.enterLocalPassiveMode();
        }
        ftp.setUseEPSVwithIPv4(useEpsvWithIPv4);
        if (storeFile) {
            InputStream input;
            input = new FileInputStream(local);
            ftp.storeFile(remote, input);
            input.close();
        } else if (listFiles) {
            if (lenient) {
                FTPClientConfig config = new FTPClientConfig();
                config.setLenientFutureDates(true);
                ftp.configure(config);
            }
            for (FTPFile f : ftp.listFiles(remote)) {
                System.out.println(f.getRawListing());
                System.out.println(f.toFormattedString());
            }
        } else if (mlsd) {
            for (FTPFile f : ftp.mlistDir(remote)) {
                System.out.println(f.getRawListing());
                System.out.println(f.toFormattedString());
            }
        } else if (mlst) {
            FTPFile f = ftp.mlistFile(remote);
            if (f != null) {
                System.out.println(f.toFormattedString());
            }
        } else if (listNames) {
            for (String s : ftp.listNames(remote)) {
                System.out.println(s);
            }
        } else if (feat) {
            // boolean feature check
            if (remote != null) {
                // See if the command is present
                if (ftp.hasFeature(remote)) {
                    System.out.println("Has feature: " + remote);
                } else {
                    if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
                        System.out.println("FEAT " + remote + " was not detected");
                    } else {
                        System.out.println("Command failed: " + ftp.getReplyString());
                    }
                }
                // Strings feature check
                String[] features = ftp.featureValues(remote);
                if (features != null) {
                    for (String f : features) {
                        System.out.println("FEAT " + remote + "=" + f + ".");
                    }
                } else {
                    if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
                        System.out.println("FEAT " + remote + " is not present");
                    } else {
                        System.out.println("Command failed: " + ftp.getReplyString());
                    }
                }
            } else {
                if (ftp.features()) {
                // Command listener has already printed the output
                } else {
                    System.out.println("Failed: " + ftp.getReplyString());
                }
            }
        } else if (doCommand != null) {
            if (ftp.doCommand(doCommand, remote)) {
            // Command listener has already printed the output
            // for(String s : ftp.getReplyStrings()) {
            // System.out.println(s);
            // }
            } else {
                System.out.println("Failed: " + ftp.getReplyString());
            }
        } else {
            OutputStream output;
            output = new FileOutputStream(local);
            ftp.retrieveFile(remote, output);
            output.close();
        }
        // check that control connection is working OK
        ftp.noop();
        ftp.logout();
    } catch (FTPConnectionClosedException e) {
        error = true;
        System.err.println("Server closed connection.");
        e.printStackTrace();
    } catch (IOException e) {
        error = true;
        e.printStackTrace();
    } finally {
        if (ftp.isConnected()) {
            try {
                ftp.disconnect();
            } catch (IOException f) {
            // do nothing
            }
        }
    }
    System.exit(error ? 1 : 0);
}
Also used : FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) FTPClientConfig(org.apache.commons.net.ftp.FTPClientConfig) OutputStream(java.io.OutputStream) FileOutputStream(java.io.FileOutputStream) FTPHTTPClient(org.apache.commons.net.ftp.FTPHTTPClient) FTPFile(org.apache.commons.net.ftp.FTPFile) IOException(java.io.IOException) FTPClient(org.apache.commons.net.ftp.FTPClient) FileInputStream(java.io.FileInputStream) FTPConnectionClosedException(org.apache.commons.net.ftp.FTPConnectionClosedException) FileOutputStream(java.io.FileOutputStream) FTPSClient(org.apache.commons.net.ftp.FTPSClient) PrintCommandListener(org.apache.commons.net.PrintCommandListener) PrintWriter(java.io.PrintWriter)

Example 98 with FTPFile

use of org.apache.commons.net.ftp.FTPFile in project hutool by looly.

the class Ftp method lsFiles.

/**
 * 遍历某个目录下所有文件和目录,不会递归遍历<br>
 * 此方法自动过滤"."和".."两种目录
 *
 * @param path   目录
 * @param filter 过滤器,null表示不过滤,默认去掉"."和".."两种目录
 * @return 文件或目录列表
 * @since 5.3.5
 */
public List<FTPFile> lsFiles(String path, Filter<FTPFile> filter) {
    final FTPFile[] ftpFiles = lsFiles(path);
    if (ArrayUtil.isEmpty(ftpFiles)) {
        return ListUtil.empty();
    }
    final List<FTPFile> result = new ArrayList<>(ftpFiles.length - 2 <= 0 ? ftpFiles.length : ftpFiles.length - 2);
    String fileName;
    for (FTPFile ftpFile : ftpFiles) {
        fileName = ftpFile.getName();
        if (false == StrUtil.equals(".", fileName) && false == StrUtil.equals("..", fileName)) {
            if (null == filter || filter.accept(ftpFile)) {
                result.add(ftpFile);
            }
        }
    }
    return result;
}
Also used : ArrayList(java.util.ArrayList) FTPFile(org.apache.commons.net.ftp.FTPFile)

Example 99 with FTPFile

use of org.apache.commons.net.ftp.FTPFile in project hutool by looly.

the class Ftp method delDir.

@Override
public boolean delDir(String dirPath) throws IORuntimeException {
    FTPFile[] dirs;
    try {
        dirs = client.listFiles(dirPath);
    } catch (IOException e) {
        throw new IORuntimeException(e);
    }
    String name;
    String childPath;
    for (FTPFile ftpFile : dirs) {
        name = ftpFile.getName();
        childPath = StrUtil.format("{}/{}", dirPath, name);
        if (ftpFile.isDirectory()) {
            // 上级和本级目录除外
            if (false == ".".equals(name) && false == "..".equals(name)) {
                delDir(childPath);
            }
        } else {
            delFile(childPath);
        }
    }
    // 删除空目录
    try {
        return this.client.removeDirectory(dirPath);
    } catch (IOException e) {
        throw new IORuntimeException(e);
    }
}
Also used : IORuntimeException(cn.hutool.core.io.IORuntimeException) FTPFile(org.apache.commons.net.ftp.FTPFile) IOException(java.io.IOException)

Example 100 with FTPFile

use of org.apache.commons.net.ftp.FTPFile in project pancm_project by xuwujing.

the class FtpHelper method getListFiles.

/**
 * 获取文件列表文件的属性
 *
 * @param ip
 * @param port
 * @param user
 * @param pwd
 * @param url
 * @return
 */
public static List<Map<String, String>> getListFiles(String ip, int port, String user, String pwd, String url) throws IOException {
    List<Map<String, String>> mapList = new ArrayList<>();
    FTPClient ftpClient = new FTPClient();
    ftpClient.connect(ip, port);
    ftpClient.login(user, pwd);
    FTPFile[] ftpFiles = ftpClient.listFiles(url);
    if (ftpFiles != null && ftpFiles.length > 0) {
        for (FTPFile ftpFile : ftpFiles) {
            Map<String, String> map = new HashMap<>();
            map.put("fileName", ftpFile.getName());
            map.put("fileSize", getSize(ftpFile.getSize()));
            map.put("fileTime", ftpFile.getTimestamp().getTime().toString());
            mapList.add(map);
        }
    }
    return mapList;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) FTPFile(org.apache.commons.net.ftp.FTPFile) Map(java.util.Map) HashMap(java.util.HashMap) FTPClient(org.apache.commons.net.ftp.FTPClient)

Aggregations

FTPFile (org.apache.commons.net.ftp.FTPFile)120 IOException (java.io.IOException)59 FTPClient (org.apache.commons.net.ftp.FTPClient)34 Test (org.junit.Test)32 File (java.io.File)28 InputStream (java.io.InputStream)16 ArrayList (java.util.ArrayList)15 FrameworkException (org.structr.common.error.FrameworkException)15 Tx (org.structr.core.graph.Tx)15 FtpTest (org.structr.web.files.FtpTest)15 FileOutputStream (java.io.FileOutputStream)11 OutputStream (java.io.OutputStream)9 ByteArrayInputStream (java.io.ByteArrayInputStream)8 BuildException (org.apache.tools.ant.BuildException)8 List (java.util.List)7 Matchers.containsString (org.hamcrest.Matchers.containsString)6 ByteArrayOutputStream (java.io.ByteArrayOutputStream)5 BeanFactory (org.springframework.beans.factory.BeanFactory)5 LiteralExpression (org.springframework.expression.common.LiteralExpression)5 HashSet (java.util.HashSet)4