Example usage for org.apache.commons.net.ftp FTP BINARY_FILE_TYPE

List of usage examples for org.apache.commons.net.ftp FTP BINARY_FILE_TYPE

Introduction

In this page you can find the example usage for org.apache.commons.net.ftp FTP BINARY_FILE_TYPE.

Prototype

int BINARY_FILE_TYPE

To view the source code for org.apache.commons.net.ftp FTP BINARY_FILE_TYPE.

Click Source Link

Document

A constant used to indicate the file(s) being transfered should be treated as a binary image, i.e., no translations should be performed.

Usage

From source file:org.wavescale.sourcesync.synchronizer.FTPSFileSynchronizer.java

@Override
public void syncFile(String sourcePath, String destinationPath) {
    // preserve timestamp for now
    boolean preserveTimestamp = true;
    File localFile = new File(getProject().getBasePath(), sourcePath);
    String finalSourcePath = Utils.getUnixPath(localFile.getAbsolutePath());
    String remotePath = Utils.buildUnixPath(this.getConnectionInfo().getRootPath(), destinationPath);
    String[] dirsToCreate = Utils.splitPath(destinationPath);
    // change location to root path
    try {/* ww w  .  jav  a  2  s . co  m*/
        this.ftps.changeWorkingDirectory(Utils.getUnixPath(this.getConnectionInfo().getRootPath()));
    } catch (IOException e) {
        EventDataLogger.logError("Remote dir <b>" + this.getConnectionInfo().getRootPath()
                + "</b> might not exist or you don't have permission on this path!", this.getProject());
        return;
    }
    // try to create
    for (String dirToCreate : dirsToCreate) {
        try {
            this.ftps.makeDirectory(dirToCreate);
        } catch (IOException e) {
            // this dir probably exist so just ignore now it will fail later
            // if there are other reasons this could not be executed.
        }
        try {
            this.ftps.changeWorkingDirectory(dirToCreate);
        } catch (IOException e) {
            // probably it doesn't exist or maybe no permission
            EventDataLogger.logError(
                    "Remote dir <b>" + remotePath
                            + "</b> might not exist or you don't have permission on this path!",
                    this.getProject());
            return;
        }
    }

    // upload
    try {
        this.ftps.setFileType(FTP.BINARY_FILE_TYPE);
        FileInputStream in = new FileInputStream(finalSourcePath);
        OutputStream outputStream = this.ftps.storeFileStream(localFile.getName());
        this.getIndicator().setIndeterminate(false);
        this.getIndicator().setText("Uploading...[" + localFile.getName() + "]");
        byte[] buffer = new byte[1024];
        int len;
        double totalSize = localFile.length() + 0.0;
        long totalUploaded = 0;
        while (true) {
            len = in.read(buffer, 0, buffer.length);
            if (len <= 0) {
                break;
            }
            outputStream.write(buffer, 0, len);
            totalUploaded += len;
            this.getIndicator().setFraction(totalUploaded / totalSize);
        }
        if (preserveTimestamp) {
            // TODO - implement preserve timestamp mechanism
        }
        in.close();
        outputStream.close();
    } catch (FileNotFoundException e) {
        EventDataLogger.logWarning(e.toString(), getProject());
    } catch (IOException e) {
        EventDataLogger.logError(e.toString(), getProject());
    }

}

From source file:org.witness.ssc.xfer.utils.PublishingUtils.java

public Thread videoUploadToFTPserver(final Activity activity, final Handler handler,
        final String latestVideoFile_filename, final String latestVideoFile_absolutepath,
        final String emailAddress, final long sdrecord_id) {

    Log.d(TAG, "doVideoFTP starting");

    // Make the progress bar view visible.
    ((SSCXferActivity) activity).startedUploading();

    final Resources res = activity.getResources();

    Thread t = new Thread(new Runnable() {
        public void run() {
            // Do background task.
            // FTP; connect preferences here!
            ////from w  w w  .  j  a  va2 s  .  c om
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity.getBaseContext());
            String ftpHostName = prefs.getString("defaultFTPhostPreference", null);
            String ftpUsername = prefs.getString("defaultFTPusernamePreference", null);
            String ftpPassword = prefs.getString("defaultFTPpasswordPreference", null);

            // use name of local file.
            String ftpRemoteFtpFilename = latestVideoFile_filename;

            // FTP
            FTPClient ftpClient = new FTPClient();
            InetAddress uploadhost = null;
            try {

                uploadhost = InetAddress.getByName(ftpHostName);
            } catch (UnknownHostException e1) {
                // If DNS resolution fails then abort immediately - show
                // dialog to
                // inform user first.
                e1.printStackTrace();
                Log.e(TAG, " got exception resolving " + ftpHostName + " - video uploading failed.");
                uploadhost = null;
            }

            if (uploadhost == null) {

                // Use the handler to execute a Runnable on the
                // main thread in order to have access to the
                // UI elements.
                handler.postDelayed(new Runnable() {
                    public void run() {
                        // Update UI

                        // Hide the progress bar
                        ((SSCXferActivity) activity).finishedUploading(false);
                        ((SSCXferActivity) activity)
                                .createNotification(res.getString(R.string.upload_to_ftp_host_failed_));

                        new AlertDialog.Builder(activity).setMessage(R.string.cant_find_upload_host)
                                .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int whichButton) {

                                    }
                                })

                                .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int whichButton) {

                                    }
                                }).show();

                    }
                }, 0);

                return;
            }

            boolean connected = false;

            try {
                ftpClient.connect(uploadhost);
                connected = true;

            } catch (SocketException e) {
                e.printStackTrace();
                connected = false;

            } catch (UnknownHostException e) {
                //
                e.printStackTrace();
                connected = false;
            } catch (IOException e) {
                //
                e.printStackTrace();
                connected = false;
            }

            if (!connected) {

                // Use the handler to execute a Runnable on the
                // main thread in order to have access to the
                // UI elements.
                handler.postDelayed(new Runnable() {
                    public void run() {
                        // Update UI

                        // Hide the progress bar
                        ((SSCXferActivity) activity).finishedUploading(false);
                        ((SSCXferActivity) activity)
                                .createNotification(res.getString(R.string.upload_to_ftp_host_failed_));

                        new AlertDialog.Builder(activity).setMessage(R.string.cant_login_upload_host)
                                .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int whichButton) {

                                    }
                                })

                                .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int whichButton) {

                                    }
                                }).show();

                    }
                }, 0);

                return;
            }

            boolean reply = false;
            try {

                reply = ftpClient.login(ftpUsername, ftpPassword);
            } catch (IOException e) {
                //
                e.printStackTrace();
                Log.e(TAG, " got exception on ftp.login - video uploading failed.");
            }

            // check the reply code here
            // If we cant login, abort after showing user a dialog.
            if (!reply) {
                try {
                    ftpClient.disconnect();
                } catch (IOException e) {
                    //
                    e.printStackTrace();
                }

                // Use the handler to execute a Runnable on the
                // main thread in order to have access to the
                // UI elements.
                handler.postDelayed(new Runnable() {
                    public void run() {
                        // Update UI

                        // Hide the progress bar
                        ((SSCXferActivity) activity).finishedUploading(false);
                        ((SSCXferActivity) activity)
                                .createNotification(res.getString(R.string.upload_to_ftp_host_failed_));

                        new AlertDialog.Builder(activity).setMessage(R.string.cant_login_upload_host)
                                .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int whichButton) {

                                    }
                                }).show();
                    }
                }, 0);

                return;
            }

            // Set File type to binary
            try {
                ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            } catch (IOException e) {
                //
                e.printStackTrace();
                // keep going?!
            }

            // BEYOND HERE DONT USE DIALOGS!

            // Construct the input stream to send to Ftp server, from the
            // local
            // video file on the sd card
            BufferedInputStream buffIn = null;
            File file = new File(latestVideoFile_absolutepath);

            try {
                buffIn = new BufferedInputStream(new FileInputStream(file));
            } catch (FileNotFoundException e) {
                //
                e.printStackTrace();
                Log.e(TAG, " got exception on local video file - video uploading failed.");

                // Use the handler to execute a Runnable on the
                // main thread in order to have access to the
                // UI elements.
                handler.postDelayed(new Runnable() {
                    public void run() {
                        // Update UI

                        // Hide the progress bar
                        ((SSCXferActivity) activity).finishedUploading(false);
                        ((SSCXferActivity) activity)
                                .createNotification(res.getString(R.string.upload_to_ftp_host_failed_));

                    }
                }, 0);

                // This is a bad error, lets abort.
                // user dialog ?! shouldnt happen, but still...
                return;
            }

            ftpClient.enterLocalPassiveMode();

            try {
                // UPLOAD THE LOCAL VIDEO FILE.
                ftpClient.storeFile(ftpRemoteFtpFilename, buffIn);
            } catch (IOException e) {
                //
                e.printStackTrace();
                Log.e(TAG, " got exception on storeFile - video uploading failed.");

                // This is a bad error, lets abort.
                // user dialog ?! shouldnt happen, but still...
                // Use the handler to execute a Runnable on the
                // main thread in order to have access to the
                // UI elements.
                handler.postDelayed(new Runnable() {
                    public void run() {
                        // Update UI

                        // Hide the progress bar
                        ((SSCXferActivity) activity).finishedUploading(false);
                        ((SSCXferActivity) activity)
                                .createNotification(res.getString(R.string.upload_to_ftp_host_failed_));

                    }
                }, 0);
                return;
            }
            try {
                buffIn.close();
            } catch (IOException e) {
                //
                e.printStackTrace();
                Log.e(TAG, " got exception on buff.close - video uploading failed.");

                // Use the handler to execute a Runnable on the
                // main thread in order to have access to the
                // UI elements.
                handler.postDelayed(new Runnable() {
                    public void run() {
                        // Update UI

                        // Hide the progress bar
                        ((SSCXferActivity) activity).finishedUploading(false);
                        ((SSCXferActivity) activity)
                                .createNotification(res.getString(R.string.upload_to_ftp_host_failed_));

                    }
                }, 0);
                return;
            }
            try {
                ftpClient.logout();
            } catch (IOException e) {
                //
                e.printStackTrace();
                Log.e(TAG, " got exception on ftp logout - video uploading failed.");

                // Use the handler to execute a Runnable on the
                // main thread in order to have access to the
                // UI elements.
                handler.postDelayed(new Runnable() {
                    public void run() {
                        // Update UI

                        // Hide the progress bar
                        ((SSCXferActivity) activity).finishedUploading(false);
                        ((SSCXferActivity) activity)
                                .createNotification(res.getString(R.string.upload_to_ftp_host_failed_));

                    }
                }, 0);
                return;
            }
            try {
                ftpClient.disconnect();
            } catch (IOException e) {
                //
                e.printStackTrace();
                Log.e(TAG, " got exception on ftp disconnect - video uploading failed.");

                // Use the handler to execute a Runnable on the
                // main thread in order to have access to the
                // UI elements.
                handler.postDelayed(new Runnable() {
                    public void run() {
                        // Update UI

                        // Hide the progress bar
                        ((SSCXferActivity) activity).finishedUploading(false);
                        ((SSCXferActivity) activity)
                                .createNotification(res.getString(R.string.upload_to_ftp_host_failed_));

                    }
                }, 0);
                return;
            }

            if (emailAddress != null && ftpHostName != null) {

                // EmailSender through IR controlled gmail system.
                SSLEmailSender sender = new SSLEmailSender(
                        activity.getString(R.string.automatic_email_username),
                        activity.getString(R.string.automatic_email_password)); // consider
                // this
                // public
                // knowledge.
                try {
                    sender.sendMail(activity.getString(R.string.vidiom_automatic_email), // subject.getText().toString(),
                            activity.getString(R.string.url_of_hosted_video_is_) + " " + ftpHostName, // body.getText().toString(),
                            activity.getString(R.string.automatic_email_from), // from.getText().toString(),
                            emailAddress // to.getText().toString()
                    );
                } catch (Exception e) {
                    Log.e(TAG, e.getMessage(), e);
                }
            }

            // Log record of this URL in POSTs table
            dbutils.creatHostDetailRecordwithNewVideoUploaded(sdrecord_id, ftpHostName, ftpHostName, "");

            // Use the handler to execute a Runnable on the
            // main thread in order to have access to the
            // UI elements.
            handler.postDelayed(new Runnable() {
                public void run() {
                    // Update UI

                    // Indicate back to calling activity the result!
                    // update uploadInProgress state also.

                    ((SSCXferActivity) activity).finishedUploading(true);
                    ((SSCXferActivity) activity)
                            .createNotification(res.getString(R.string.upload_to_ftp_host_succeeded_));

                }
            }, 0);

        }
    });

    t.start();

    return t;
}

From source file:org.wso2.carbon.connector.FileFtpOverProxy.java

/**
 * Send file FTP over Proxy./*  w w  w .j  av a  2 s.  c om*/
 *
 * @param proxyHost      Name of the proxy host.
 * @param proxyPort      Proxy port number.
 * @param proxyUsername  User name of the proxy.
 * @param proxyPassword  Password of the proxy.
 * @param ftpServer      FTP server.
 * @param ftpPort        Port number of FTP.
 * @param ftpUsername    User name of the FTP.
 * @param ftpPassword    Password of the FTP.
 * @param messageContext he message context that is generated for processing the ftpOverHttp method.
 * @return true, if the FTP client tunnels over an HTTP proxy connection or stores a file on the server.
 */
public boolean ftpOverHttp(String proxyHost, String proxyPort, String proxyUsername, String proxyPassword,
        String ftpServer, String ftpPort, String ftpUsername, String ftpPassword,
        MessageContext messageContext) {
    String keepAliveTimeout = (String) ConnectorUtils.lookupTemplateParamater(messageContext,
            FileConstants.KEEP_ALIVE_TIMEOUT);
    String controlKeepAliveReplyTimeout = (String) ConnectorUtils.lookupTemplateParamater(messageContext,
            FileConstants.CONTROL_KEEP_ALIVE_REPLY_TIMEOUT);
    String targetPath = (String) ConnectorUtils.lookupTemplateParamater(messageContext,
            FileConstants.TARGET_PATH);
    String targetFile = (String) ConnectorUtils.lookupTemplateParamater(messageContext,
            FileConstants.TARGET_FILE);
    String binaryTransfer = (String) ConnectorUtils.lookupTemplateParamater(messageContext,
            FileConstants.BINARY_TRANSFER);
    String localActive = (String) ConnectorUtils.lookupTemplateParamater(messageContext,
            FileConstants.LOCAL_ACTIVE);
    boolean resultStatus = false;
    InputStream inputStream = null;

    final FTPClient ftp;
    if (StringUtils.isNotEmpty(proxyHost) && StringUtils.isNotEmpty(proxyPort)
            && StringUtils.isNotEmpty(proxyUsername) && StringUtils.isNotEmpty(proxyPassword)) {
        proxyHost = proxyHost.trim();
        proxyPort = proxyPort.trim();
        proxyUsername = proxyUsername.trim();
        proxyPassword = proxyPassword.trim();
        ftp = new FTPHTTPClient(proxyHost, Integer.parseInt(proxyPort), proxyUsername, proxyPassword);
    } else {
        ftp = new FTPClient();
    }
    //Set the time to wait between sending control connection keep alive messages when
    // processing file upload or download (Zero (or less) disables).
    keepAliveTimeout = keepAliveTimeout.trim();
    if (StringUtils.isNotEmpty(keepAliveTimeout)) {
        ftp.setControlKeepAliveTimeout(Long.parseLong(keepAliveTimeout.trim()));
    }
    //Set how long to wait for control keep-alive message replies.(defaults to 1000 milliseconds.)
    if (StringUtils.isNotEmpty(controlKeepAliveReplyTimeout)) {
        ftp.setControlKeepAliveReplyTimeout(Integer.parseInt(controlKeepAliveReplyTimeout.trim()));
    }
    try {
        int reply;
        ftpPort = ftpPort.trim();
        int IntFtpPort = Integer.parseInt(ftpPort);
        if (IntFtpPort > 0) {
            ftp.connect(ftpServer, IntFtpPort);
        } else {
            ftpServer = ftpServer.trim();
            ftp.connect(ftpServer);
        }
        if (log.isDebugEnabled()) {
            log.debug(
                    " Connected to " + ftpServer + " on " + (IntFtpPort > 0 ? ftpPort : ftp.getDefaultPort()));
        }
        // After connection attempt, should check the reply code to verify success.
        reply = ftp.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            ftp.disconnect();
            log.error("FTP ftpServer refused connection.");
        }
        if (ftp.login(ftpUsername, ftpPassword)) {
            if (StringUtils.isNotEmpty(binaryTransfer)) {
                if (Boolean.valueOf(binaryTransfer.trim())) {
                    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);
                }
            } else {
                ftp.setFileType(FTP.ASCII_FILE_TYPE);
            }
            // Use passive mode as default because most of us are behind firewalls these days.
            if (StringUtils.isNotEmpty(localActive)) {
                if (Boolean.valueOf(localActive.trim())) {
                    ftp.enterLocalActiveMode();
                } else {
                    ftp.enterLocalPassiveMode();
                }
            } else {
                ftp.enterLocalPassiveMode();
            }
            inputStream = new ByteArrayInputStream(
                    messageContext.getEnvelope().getBody().getFirstElement().toString().getBytes());
            if (StringUtils.isNotEmpty(targetPath)) {
                ftp.changeWorkingDirectory(targetPath);
                ftp.storeFile(targetFile, inputStream);
                if (log.isDebugEnabled()) {
                    log.debug("Successfully FTP transfered the File");
                }
            }
            // check that control connection is working
            if (log.isDebugEnabled()) {
                log.debug("The code received from the server." + ftp.noop());
            }
            resultStatus = true;
        } else {
            ftp.logout();
            handleException("Error while login ftp server.", messageContext);
        }
    } catch (FTPConnectionClosedException e) {
        // log.error("Server closed connection " + e.getMessage(), e);
        handleException("Server closed connection: " + e.getMessage(), e, messageContext);
    } catch (IOException e) {
        //log.error("Error occurred while uploading:" + e.getMessage(), e);
        handleException("Could not connect to FTP ftpServer: " + e.getMessage(), e, messageContext);
    } finally {
        if (ftp.isConnected()) {
            try {
                ftp.disconnect();
                ftp.logout();
            } catch (IOException f) {
                log.error("Error while disconnecting/logging out ftp server");
            }
        }
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException f) {
                log.error("Error while closing inputStream");
            }
        }
    }
    return resultStatus;
}

From source file:org.wso2.carbon.connector.FileFtpOverProxyConnector.java

/**
 * Set the file type to be transferred./* ww  w  . j  a v  a2s .  c om*/
 *
 * @param fileType The type of the file.
 * @param ftp The FTPClient which is used to transfer the file.
 * @throws IOException If an I/O error occurs while either sending a command to the server or receiving a reply
 * from the server.
 */
private void setFileType(String fileType, FTPClient ftp) throws IOException {
    switch (fileType) {
    case "BINARY":
        ftp.setFileType(FTP.BINARY_FILE_TYPE);
        break;
    case "ASCII":
        ftp.setFileType(FTP.ASCII_FILE_TYPE);
        break;
    case "EBCDIC":
        ftp.setFileType(FTP.EBCDIC_FILE_TYPE);
        break;
    case "LOCAL":
        ftp.setFileType(FTP.LOCAL_FILE_TYPE);
        break;
    default:
        ftp.setFileType(FTP.ASCII_FILE_TYPE);
    }
}

From source file:org.wso2.carbon.esb.scenario.test.common.ftp.FTPClientWrapper.java

/**
 * Function to upload a file to an FTP Server.
 *
 * @param sourceFilePath source file path
 * @param targetFilePath target path of the remote file
 * @throws IOException if file upload fails
 *//* w w  w.  j  a  v  a 2s .  c o  m*/
public void ftpFileUpload(String sourceFilePath, String targetFilePath) throws IOException {
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
    File localFile = new File(sourceFilePath);

    try (InputStream inputStream = new FileInputStream(localFile)) {
        log.info("Start uploading file " + sourceFilePath + " to " + targetFilePath);

        try {
            if (ftpClient.storeFile(targetFilePath, inputStream)) {
                log.info("File has been uploaded to " + targetFilePath + " successfully.");
            }
        } catch (IOException ex) {
            throw new IOException(
                    "Error occurred while uploading file from " + sourceFilePath + " to " + targetFilePath, ex);
        }
    } catch (FileNotFoundException ex) {
        throw new IOException("File Not Found in " + sourceFilePath, ex);
    }
}

From source file:org.wso2.carbon.esb.scenario.test.common.ftp.FTPClientWrapper.java

/**
 * Function to download a file from an FTP Server.
 *
 * @param sourceFilePath source file path
 * @param targetFilePath target path/*from  w ww  .java 2 s . c  om*/
 * @throws IOException if file download fails
 */
public void ftpFileDownload(String sourceFilePath, File targetFilePath) throws IOException {
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

    try (OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(targetFilePath))) {
        log.info("Start downloading file " + sourceFilePath + " to " + targetFilePath);

        try {
            if (ftpClient.retrieveFile(sourceFilePath, outputStream)) {
                log.info("File has been uploaded to " + targetFilePath + " successfully.");
            }
        } catch (IOException ex) {
            throw new IOException(
                    "Error occurred while downloading file from " + sourceFilePath + " to " + targetFilePath,
                    ex);
        }
    } catch (FileNotFoundException ex) {
        throw new IOException("File Not Found in " + sourceFilePath, ex);
    }
}

From source file:password.pwm.svc.telemetry.FtpTelemetrySender.java

private void ftpPut(final TelemetryPublishBean telemetryPublishBean) throws PwmUnrecoverableException {
    final FTPClient ftpClient;
    switch (settings.getFtpMode()) {
    case ftp:/*from   w  w  w. j  ava2  s.com*/
        ftpClient = new FTPClient();
        break;

    case ftps:
        ftpClient = new FTPSClient();
        break;

    default:
        JavaHelper.unhandledSwitchStatement(settings.getFtpMode());
        throw new UnsupportedOperationException();
    }

    // connect
    try {
        LOGGER.trace(SessionLabel.TELEMETRY_SESSION_LABEL,
                "establishing " + settings.getFtpMode() + " connection to " + settings.getHost());
        ftpClient.connect(settings.getHost());

        final int reply = ftpClient.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            disconnectFtpClient(ftpClient);
            final String msg = "error " + reply + " connecting to " + settings.getHost();
            throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_TELEMETRY_SEND_ERROR, msg));
        }

        LOGGER.trace(SessionLabel.TELEMETRY_SESSION_LABEL, "connected to " + settings.getHost());
    } catch (IOException e) {
        disconnectFtpClient(ftpClient);
        final String msg = "unable to connect to " + settings.getHost() + ", error: " + e.getMessage();
        throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_TELEMETRY_SEND_ERROR, msg));
    }

    // set modes
    try {
        ftpClient.enterLocalPassiveMode();
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

        final int reply = ftpClient.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            disconnectFtpClient(ftpClient);
            final String msg = "error setting file type mode to binary, error=" + reply;
            throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_TELEMETRY_SEND_ERROR, msg));
        }
    } catch (IOException e) {
        disconnectFtpClient(ftpClient);
        final String msg = "unable to connect to " + settings.getHost() + ", error: " + e.getMessage();
        throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_TELEMETRY_SEND_ERROR, msg));
    }

    // authenticate
    try {
        ftpClient.login(settings.getUsername(), settings.getPassword());

        final int reply = ftpClient.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            disconnectFtpClient(ftpClient);
            final String msg = "error authenticating as " + settings.getUsername() + " to " + settings.getHost()
                    + ", error=" + reply;
            throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_TELEMETRY_SEND_ERROR, msg));
        }

        LOGGER.trace(SessionLabel.TELEMETRY_SESSION_LABEL,
                "authenticated to " + settings.getHost() + " as " + settings.getUsername());
    } catch (IOException e) {
        disconnectFtpClient(ftpClient);
        final String msg = "error authenticating as " + settings.getUsername() + " to " + settings.getHost()
                + ", error: " + e.getMessage();
        throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_TELEMETRY_SEND_ERROR, msg));
    }

    // upload
    try {
        final String filePath = settings.getPath() + "/" + telemetryPublishBean.getId() + ".zip";
        final byte[] fileBytes = dataToJsonZipFile(telemetryPublishBean);
        final ByteArrayInputStream fileStream = new ByteArrayInputStream(fileBytes);

        LOGGER.trace(SessionLabel.TELEMETRY_SESSION_LABEL,
                "preparing to transfer " + fileBytes.length + " bytes to file path " + filePath);

        final Instant startTime = Instant.now();
        ftpClient.storeFile(filePath, fileStream);

        final int reply = ftpClient.getReplyCode();
        if (!FTPReply.isPositiveCompletion(reply)) {
            disconnectFtpClient(ftpClient);
            final String msg = "error uploading file  to " + settings.getHost() + ", error=" + reply;
            throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_TELEMETRY_SEND_ERROR, msg));
        }

        LOGGER.trace(SessionLabel.TELEMETRY_SESSION_LABEL, "completed transfer of " + fileBytes.length + " in "
                + TimeDuration.compactFromCurrent(startTime));
    } catch (IOException e) {
        disconnectFtpClient(ftpClient);
        final String msg = "error uploading file  to " + settings.getHost() + ", error: " + e.getMessage();
        throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_TELEMETRY_SEND_ERROR, msg));
    }
}

From source file:pl.edu.icm.maven.wagon.provider.FTPSWagon.java

protected void openConnectionInternal() throws ConnectionException, AuthenticationException {
    AuthenticationInfo authInfo = getAuthenticationInfo();

    if (authInfo == null) {
        throw new IllegalArgumentException("Authentication Credentials cannot be null for FTP protocol");
    }//from   w  w  w.j  a va 2s  . com

    if (authInfo.getUserName() == null) {
        authInfo.setUserName(System.getProperty("user.name"));
    }

    String username = authInfo.getUserName();

    String password = authInfo.getPassword();

    if (username == null) {
        throw new AuthenticationException("Username not specified for repository " + getRepository().getId());
    }
    if (password == null) {
        throw new AuthenticationException("Password not specified for repository " + getRepository().getId());
    }

    String host = getRepository().getHost();

    FTPSClient ftps = new FTPSClient();
    ftps.setTrustManager(TrustManagerUtils.getAcceptAllTrustManager());
    ftp = ftps;
    ftp.setDefaultTimeout(getTimeout());
    ftp.setDataTimeout(getTimeout());
    ftp.setControlEncoding(getControlEncoding());

    ftp.addProtocolCommandListener(new PrintCommandListener(this));

    try {
        if (getRepository().getPort() != WagonConstants.UNKNOWN_PORT) {
            ftp.connect(host, getRepository().getPort());
        } else {
            ftp.connect(host);
        }

        // After connection attempt, you should check the reply code to
        // verify
        // success.
        int reply = ftp.getReplyCode();

        if (!FTPReply.isPositiveCompletion(reply)) {
            ftp.disconnect();

            throw new AuthenticationException("FTP server refused connection.");
        }
    } catch (IOException e) {
        if (ftp.isConnected()) {
            try {
                fireSessionError(e);

                ftp.disconnect();
            } catch (IOException f) {
                // do nothing
            }
        }

        throw new AuthenticationException("Could not connect to server.", e);
    }

    try {
        if (!ftp.login(username, password)) {
            throw new AuthenticationException("Cannot login to remote system");
        }

        fireSessionDebug("Remote system is " + ftp.getSystemType());

        // Set to binary mode.
        ftp.setFileType(FTP.BINARY_FILE_TYPE);
        ftp.setListHiddenFiles(true);

        // Use passive mode as default because most of us are
        // behind firewalls these days.
        if (isPassiveMode()) {
            ftp.enterLocalPassiveMode();
        }
    } catch (IOException e) {
        throw new ConnectionException("Cannot login to remote system", e);
    }
}

From source file:pl.psnc.synat.wrdz.zmd.download.adapters.FtpDownloadAdapter.java

/**
 * Performs login operation to log to the server or throws exceptions if any problems with logging in occur.
 * /*from   www . j  ava2s.c  o m*/
 * @param ftpClient
 *            client instance to operate on.
 * @throws DownloadAdapterException
 *             should any problems occur.
 */
private void loginToFtp(FTPClient ftpClient) throws DownloadAdapterException {
    try {
        if (ftpClient.login(connectionInfo.getUsername(), connectionInfo.getPassword())) {
            ftpClient.enterLocalPassiveMode();
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        } else {
            throw new DownloadAdapterException("Unable to login to the server, authentication failed.");
        }
    } catch (IOException e) {
        throw new DownloadAdapterException("Exception while trying to login to the server.", e);
    }
}

From source file:primarydatamanager.mirrorupdater.data.FtpDataTarget.java

private void reset() throws UpdateException {
    if (mFTPClient != null && mFTPClient.isConnected()) {
        try {/*from   w ww .  ja  v  a 2s. c  om*/
            mFTPClient.disconnect();
        } catch (IOException e) {
            // ignore
        }
    }

    // Connect to the server
    mFTPClient = new FTPClient();
    try {
        mFTPClient.connect(mServerUrl, mPort);
        mLog.fine("Connected to " + mServerUrl + ":" + mPort);
        mFTPClient.setSoTimeout(30000);
        checkReplyCode();
    } catch (Exception exc) {
        if (mFTPClient.isConnected()) {
            try {
                mFTPClient.disconnect();
            } catch (IOException exc2) {
                // do nothing
            }
        }
        throw new UpdateException("Could not connect to server '" + mServerUrl + "'", exc);
    }

    // Log in
    try {
        boolean success = mFTPClient.login(mUser, mPassword);
        checkReplyCode();
        if (!success) {
            throw new UpdateException("Login failed");
        }
    } catch (Exception exc) {
        throw new UpdateException(
                "Login using user='" + mUser + "' and password=(" + mPassword.length() + " characters) failed",
                exc);
    }

    // Set the file type to binary
    try {
        boolean success = mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
        checkReplyCode();
        if (!success) {
            throw new UpdateException("Setting file type to binary failed");
        }
    } catch (Exception exc) {
        throw new UpdateException("Setting file type to binary failed", exc);
    }

    // Change directory
    try {
        boolean success = mFTPClient.changeWorkingDirectory(mPath);
        checkReplyCode();
        if (!success) {
            throw new UpdateException("Could not change to directory '" + mPath + "'");
        }
    } catch (Exception exc) {
        throw new UpdateException("Could not change to directory '" + mPath + "'", exc);
    }
    mLog.fine("Changed to directory " + mPath);

}