List of usage examples for org.apache.commons.net.ftp FTPClient getReplyCode
public int getReplyCode()
From source file:org.structr.web.common.FtpTest.java
/** * Creates an FTP client, a backend user and logs this user in. * * @return//from w w w . j a v a2 s. co m */ protected FTPClient setupFTPClient() { FTPClient ftp = new FTPClient(); try { ftp.connect("localhost", ftpPort); logger.log(Level.INFO, "Reply from FTP server:", ftp.getReplyString()); int reply = ftp.getReplyCode(); assertTrue(FTPReply.isPositiveCompletion(reply)); String username = "ftpuser1"; String password = "ftpuserpw1"; try (final Tx tx = StructrApp.getInstance(securityContext).tx()) { ftpUser = createFTPUser(username, password); tx.success(); } catch (FrameworkException fex) { logger.log(Level.SEVERE, "Unable to create FTP user", fex); } boolean loginSuccess = ftp.login(username, password); logger.log(Level.INFO, "Try to login as " + username + "/" + password + ": ", loginSuccess); assertTrue(loginSuccess); reply = ftp.getReplyCode(); assertEquals(FTPReply.USER_LOGGED_IN, reply); } catch (IOException ex) { logger.log(Level.SEVERE, "Error in FTP test", ex); fail("Unexpected exception: " + ex.getMessage()); } return ftp; }
From source file:org.structr.web.files.FtpTest.java
/** * Creates an FTP client, a backend user and logs this user in. * * @param username//w w w . j a v a 2s . c o m * @return */ protected FTPClient setupFTPClient(final String username) { FTPClient ftp = new FTPClient(); try { ftp.connect("localhost", ftpPort); logger.info("Reply from FTP server:", ftp.getReplyString()); int reply = ftp.getReplyCode(); assertTrue(FTPReply.isPositiveCompletion(reply)); String password = "ftpuserpw1"; try (final Tx tx = StructrApp.getInstance(securityContext).tx()) { ftpUser = createFTPUser(username, password); tx.success(); } catch (FrameworkException fex) { logger.error("Unable to create FTP user", fex); } boolean loginSuccess = ftp.login(username, password); logger.info("Tried to login as {}/{}: {}", new Object[] { username, password, loginSuccess }); assertTrue(loginSuccess); reply = ftp.getReplyCode(); assertEquals(FTPReply.USER_LOGGED_IN, reply); } catch (IOException ex) { logger.error("Error in FTP test", ex); fail("Unexpected exception: " + ex.getMessage()); } return ftp; }
From source file:org.teiid.resource.adapter.ftp.FtpManagedConnectionFactory.java
protected FTPClient createClient() throws IOException, ResourceException { FTPClient client = createClientInstance(); beforeConnectProcessing(client);//ww w .j a v a2s . co m client.connect(this.host, this.port); if (!FTPReply.isPositiveCompletion(client.getReplyCode())) { throw new ResourceException(UTIL.getString("ftp_connect_failed", this.host, this.port)); //$NON-NLS-1$ } if (!client.login(this.username, this.password)) { throw new IllegalStateException(UTIL.getString("ftp_login_failed", client.getReplyString())); //$NON-NLS-1$ } afterConnectProcessing(client); return client; }
From source file:org.teiid.test.teiid4441.FTPClientFactory.java
public FTPClient createClient() throws IOException, ResourceException { FTPClient client = createClientInstance(); beforeConnectProcessing(client);//from w w w .j a va2 s . c om client.connect(this.host, this.port); if (!FTPReply.isPositiveCompletion(client.getReplyCode())) { throw new ResourceException("ftp_connect_failed"); } if (!client.login(this.username, this.password)) { throw new IllegalStateException("ftp_login_failed"); //$NON-NLS-1$ } afterConnectProcessing(client); return client; }
From source file:org.ut.biolab.medsavant.shared.util.SeekableFTPStream.java
private int readFromStream(byte[] bytes, int offset, int len) throws IOException { FTPClient client = getFTPClient(); if (position != 0) { client.setRestartOffset(position); }// ww w .j a va2 s. c o m InputStream is = client.retrieveFileStream(fileName); long oldPos = position; if (is != null) { int n = 0; while (n < len) { int bytesRead = is.read(bytes, offset + n, len - n); if (bytesRead < 0) { if (n == 0) return -1; else break; } n += bytesRead; } is.close(); LOG.info(String.format("FTP read %d bytes at %d: %02x %02x %02x %02x %02x %02x %02x %02x...", len, oldPos, bytes[offset], bytes[offset + 1], bytes[offset + 2], bytes[offset + 3], bytes[offset + 4], bytes[offset + 5], bytes[offset + 6], bytes[offset + 7])); try { client.completePendingCommand(); } catch (FTPConnectionClosedException suppressed) { } catch (SocketTimeoutException stx) { // Accessing 1000 Genomes, we sometimes get a timeout for no apparent reason. LOG.info("Timed out during read. Disconnecting."); disconnect(); } position += n; return n; } else { String msg = String.format("Unable to retrieve input stream for file (reply code %d).", client.getReplyCode()); LOG.error(msg); throw new IOException(msg); } }
From source file:org.ut.biolab.medsavant.shared.util.SeekableFTPStream.java
private FTPClient getFTPClient() throws IOException { if (ftpClient == null) { FTPClient client = new FTPClient(); try {//from w w w . j a v a 2 s. com client.connect(host, port); int reply = client.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { throw new IOException("Unable to connect to " + host); } if (!client.login(username, password)) { throw new IOException("Unable to login to " + host + " as " + username); } client.setFileType(FTP.BINARY_FILE_TYPE); client.enterLocalPassiveMode(); client.setSoTimeout(SOCKET_TIMEOUT); ftpClient = client; client = null; } finally { if (client != null) { client.disconnect(); } } } return ftpClient; }
From source file:org.waarp.ftp.client.FTPClientExample.java
public static final void main(String[] args) { boolean storeFile = false, binaryTransfer = false, error = false, listFiles = false, listNames = false, hidden = false;// w w w. j av a 2 s . c o m boolean localActive = false, useEpsvWithIPv4 = false, feat = false, printHash = false; boolean mlst = false, mlsd = false; boolean lenient = false; long keepAliveTimeout = -1; int controlKeepAliveReplyTimeout = -1; int minParams = 5; // listings require 3 params String protocol = null; // SSL protocol String doCommand = null; String trustmgr = null; String proxyHost = null; int proxyPort = 80; String proxyUser = null; String proxyPassword = 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("-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 (remain < minParams) // server, user, pass, remote, local [protocol] { 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]); } String username = args[base++]; String password = args[base++]; String account = args[base++]; String remote = null; if (args.length - base > 0) { remote = args[base++]; } String local = null; if (args.length - base > 0) { local = args[base++]; } boolean mustCallProtP = false; 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")) { System.out.println("Implicit FTPS"); ftps = new FTPSClient(true); } else if (protocol.equals("false")) { System.out.println("Explicit FTPS"); ftps = new FTPSClient(false); mustCallProtP = true; } else { String prot[] = protocol.split(","); System.out.println("Protocl FTPS: " + protocol); if (prot.length == 1) { // Just protocol ftps = new FTPSClient(protocol); } else { // protocol,true|false mustCallProtP = !Boolean.parseBoolean(prot[1]); ftps = new FTPSClient(prot[0], !mustCallProtP); } } ftp = ftps; if ("all".equals(trustmgr)) { System.out.println("Accept all"); ftps.setTrustManager(TrustManagerUtils.getAcceptAllTrustManager()); } else if ("valid".equals(trustmgr)) { System.out.println("Accept after valid"); ftps.setTrustManager(TrustManagerUtils.getValidateServerCertificateTrustManager()); } else if ("none".equals(trustmgr)) { System.out.println("Accept none"); 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.getDataConnectionMode() == FTPClient.ACTIVE_LOCAL_DATA_CONNECTION_MODE) { try { ftp.disconnect(); } catch (IOException f) { // do nothing } } System.err.println("Could not connect to server."); e.printStackTrace(); System.exit(1); } __main: try { if (account == null) { if (!ftp.login(username, password)) { ftp.logout(); error = true; break __main; } } else { if (!ftp.login(username, password, account)) { ftp.logout(); error = true; break __main; } } System.out.println("Remote system is " + ftp.getSystemType()); if (binaryTransfer) { ftp.setFileType(FTP.BINARY_FILE_TYPE); } // Use passive mode as default because most of us are // behind firewalls these days. if (localActive) { ftp.enterLocalActiveMode(); } else { ftp.enterLocalPassiveMode(); } ftp.setUseEPSVwithIPv4(useEpsvWithIPv4); if (mustCallProtP) { ((FTPSClient) ftp).execPBSZ(0); ((FTPSClient) ftp).execPROT("P"); } 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(); } ftp.noop(); // check that control connection is working OK 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.getDataConnectionMode() == FTPClient.ACTIVE_LOCAL_DATA_CONNECTION_MODE) { try { ftp.disconnect(); } catch (IOException f) { // do nothing } } } System.exit(error ? 1 : 0); }
From source file:org.wso2.carbon.connector.FileFtpOverProxy.java
/** * Send file FTP over Proxy./*from w ww. j av a 2 s . co m*/ * * @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
/** * Send file FTP over Proxy./*from ww w . ja va 2 s.c o m*/ * * @param messageContext The message context that is generated for processing the file. * @return true, if the FTP client tunnels over an HTTP proxy connection or stores a file on the server. * */ public boolean ftpOverHttpProxy(MessageContext messageContext) { String proxyHost = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.PROXY_HOST)); String proxyPort = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.PROXY_PORT)); String proxyUsername = StringUtils.trim( (String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.PROXY_USERNAME)); String proxyPassword = StringUtils.trim( (String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.PROXY_PASSWORD)); String ftpHost = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.FTP_SERVER)); String ftpPort = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.FTP_PORT)); String ftpUsername = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.FTP_USERNAME)); String ftpPassword = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.FTP_PASSWORD)); String keepAliveTimeout = StringUtils.trim( (String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.KEEP_ALIVE_TIMEOUT)); String controlKeepAliveReplyTimeout = StringUtils.trim((String) ConnectorUtils .lookupTemplateParamater(messageContext, FileConstants.CONTROL_KEEP_ALIVE_REPLY_TIMEOUT)); String targetPath = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.TARGET_PATH)); String targetFile = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.TARGET_FILE)); String activeMode = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.ACTIVE_MODE)); String fileType = StringUtils .trim((String) ConnectorUtils.lookupTemplateParamater(messageContext, FileConstants.FILE_TYPE)); boolean activeModeParameter = false; if (StringUtils.isEmpty(keepAliveTimeout)) { keepAliveTimeout = FileConstants.DEFAULT_KEEP_ALIVE_TIMEOUT; } if (StringUtils.isEmpty(controlKeepAliveReplyTimeout)) { controlKeepAliveReplyTimeout = FileConstants.DEFAULT_CONTROL_KEEP_ALIVE_REPLY_TIMEOUT; } if (StringUtils.isNotEmpty(activeMode)) { activeModeParameter = Boolean.parseBoolean(activeMode); } InputStream inputStream = null; FTPClient ftp = new FTPClient(); if (StringUtils.isNotEmpty(proxyHost) && StringUtils.isNotEmpty(proxyPort) && StringUtils.isNotEmpty(proxyUsername) && StringUtils.isNotEmpty(proxyPassword)) { ftp = new FTPHTTPClient(proxyHost, Integer.parseInt(proxyPort), proxyUsername, proxyPassword); } //Set the time to wait between sending control connection keep alive messages when processing file upload or // download (Zero (or less) disables). ftp.setControlKeepAliveTimeout(Long.parseLong(keepAliveTimeout)); //Set how long to wait for control keep-alive message replies.(defaults to 1000 milliseconds.) ftp.setControlKeepAliveReplyTimeout(Integer.parseInt(controlKeepAliveReplyTimeout)); try { int reply; int IntFtpPort = Integer.parseInt(ftpPort); if (IntFtpPort > 0) { ftp.connect(ftpHost, IntFtpPort); } else { ftp.connect(ftpHost); } if (log.isDebugEnabled()) { log.debug(" Connected to " + ftpHost + " 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)) { ftp.logout(); throw new SynapseException("Error while login ftp server."); } setFileType(fileType, ftp); // Use passive mode as default because most of us are behind firewalls these days. if (activeModeParameter) { ftp.enterLocalActiveMode(); } 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 server transferred the File"); } } // check that control connection is working if (log.isDebugEnabled()) { log.debug("The code received from the server." + ftp.noop()); } } catch (IOException e) { throw new SynapseException("Could not connect to FTP Server", e); } 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 true; }
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:// w ww. j ava 2 s. c o m 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)); } }