Search in sources :

Example 96 with FTPClient

use of org.apache.commons.net.ftp.FTPClient 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 97 with FTPClient

use of org.apache.commons.net.ftp.FTPClient 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)

Example 98 with FTPClient

use of org.apache.commons.net.ftp.FTPClient in project iaf by ibissource.

the class FtpSession method createFTPClient.

private FTPClient createFTPClient() throws NoSuchAlgorithmException, KeyStoreException, GeneralSecurityException, IOException {
    FtpType transport = getFtpType();
    if (transport == FtpType.FTP) {
        return new FTPClient();
    }
    SSLContext sslContext = AuthSSLContextFactory.createSSLContext(this, this, getFtpType().getProtocol());
    FTPSClient client = new FTPSClient(sslContext);
    if (isVerifyHostname()) {
        // When NULL it overrides the default 'ValidateServerCertificateTrustManager'
        client.setTrustManager(null);
    }
    client = new FTPSClient(transport.getProtocol(), transport.isImplicit());
    if (prot != Prot.C) {
        client.execPROT(prot.name());
    }
    return client;
}
Also used : FTPSClient(org.apache.commons.net.ftp.FTPSClient) SSLContext(javax.net.ssl.SSLContext) FTPClient(org.apache.commons.net.ftp.FTPClient)

Example 99 with FTPClient

use of org.apache.commons.net.ftp.FTPClient in project TeachingInSimulation by ScOrPiOzzy.

the class ClientConfig method buildFtpClient.

@Bean
public FTPUtils buildFtpClient() {
    FTPUtils util = new FTPUtils();
    FTPClient client = new FTPClient();
    util.setFtpClient(client);
    util.setHost(ftpAddress);
    util.setPort(ftpPort);
    util.setUsername("admin");
    util.setPassword("admin");
    try {
        SocketTest.test(ftpAddress, ftpPort);
    } catch (RuntimeException e) {
        throw e;
    }
    return util;
}
Also used : FTPUtils(com.cas.sim.tis.util.FTPUtils) FTPClient(org.apache.commons.net.ftp.FTPClient) Bean(org.springframework.context.annotation.Bean)

Example 100 with FTPClient

use of org.apache.commons.net.ftp.FTPClient in project dubidubi by lzzzz4.

the class FtpUtil method downloadFile.

/**
 * Description: 从FTP服务器下载文件
 *
 * @param host
 *            FTP服务器hostname
 * @param port
 *            FTP服务器端口
 * @param username
 *            FTP登录账号
 * @param password
 *            FTP登录密码
 * @param remotePath
 *            FTP服务器上的相对路径
 * @param fileName
 *            要下载的文件名
 * @param localPath
 *            下载后保存到本地的路径
 * @return
 */
public static boolean downloadFile(String host, int port, String username, String password, String remotePath, String fileName, String localPath) {
    boolean result = false;
    FTPClient ftp = new FTPClient();
    try {
        int reply;
        ftp.connect(host, port);
        // 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
        // 登录
        ftp.login(username, password);
        reply = ftp.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            ftp.disconnect();
            return result;
        }
        // 转移到FTP服务器目录
        ftp.changeWorkingDirectory(remotePath);
        FTPFile[] fs = ftp.listFiles();
        for (FTPFile ff : fs) {
            if (ff.getName().equals(fileName)) {
                File localFile = new File(localPath + "/" + ff.getName());
                OutputStream is = new FileOutputStream(localFile);
                ftp.retrieveFile(ff.getName(), is);
                is.close();
            }
        }
        ftp.logout();
        result = true;
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (ftp.isConnected()) {
            try {
                ftp.disconnect();
            } catch (IOException ioe) {
            }
        }
    }
    return result;
}
Also used : OutputStream(java.io.OutputStream) FileOutputStream(java.io.FileOutputStream) FileOutputStream(java.io.FileOutputStream) FTPFile(org.apache.commons.net.ftp.FTPFile) IOException(java.io.IOException) FTPFile(org.apache.commons.net.ftp.FTPFile) File(java.io.File) FTPClient(org.apache.commons.net.ftp.FTPClient) MockMvcResultHandlers.print(org.springframework.test.web.servlet.result.MockMvcResultHandlers.print)

Aggregations

FTPClient (org.apache.commons.net.ftp.FTPClient)128 IOException (java.io.IOException)78 FTPFile (org.apache.commons.net.ftp.FTPFile)36 Test (org.junit.Test)25 InputStream (java.io.InputStream)20 FrameworkException (org.structr.common.error.FrameworkException)20 Tx (org.structr.core.graph.Tx)20 FtpTest (org.structr.web.files.FtpTest)20 File (java.io.File)13 ByteArrayInputStream (java.io.ByteArrayInputStream)10 FileInputStream (java.io.FileInputStream)10 FileOutputStream (java.io.FileOutputStream)8 OutputStream (java.io.OutputStream)5 UnknownHostException (java.net.UnknownHostException)5 ConnectException (java.net.ConnectException)4 PrintCommandListener (org.apache.commons.net.PrintCommandListener)4 FTPSClient (org.apache.commons.net.ftp.FTPSClient)4 FTPUtils (com.cas.sim.tis.util.FTPUtils)3 FileNotFoundException (java.io.FileNotFoundException)3 MalformedURLException (java.net.MalformedURLException)3