mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-23 08:31:43 +02:00
fixes and improvements to FTP(S)ClientSession
This commit is contained in:
@@ -28,6 +28,9 @@ namespace Net {
|
||||
|
||||
|
||||
class NetSSL_API FTPSClientSession: public Poco::Net::FTPClientSession
|
||||
/// This is an extension of FTPClientSession that supports
|
||||
/// FTP over SSL/TLS using the AUTH SSL/AUTH TLS and PBSZ/PROT
|
||||
/// commands according to RFC 4217.
|
||||
{
|
||||
public:
|
||||
FTPSClientSession();
|
||||
@@ -40,7 +43,7 @@ public:
|
||||
///
|
||||
/// Passive mode will be used for data transfers.
|
||||
|
||||
explicit FTPSClientSession(const StreamSocket& socket, bool readWelcomeMessage = true, bool tryUseFTPS = true, Context::Ptr pContext = nullptr);
|
||||
FTPSClientSession(const StreamSocket& socket, bool readWelcomeMessage = true, bool enableFTPS = true, Context::Ptr pContext = nullptr);
|
||||
/// Creates an FTPSClientSession using the given
|
||||
/// connected socket for the control connection.
|
||||
///
|
||||
@@ -55,8 +58,8 @@ public:
|
||||
|
||||
virtual ~FTPSClientSession();
|
||||
|
||||
void tryFTPSmode(bool tryFTPS);
|
||||
/// avoid or require TLS mode
|
||||
void enableFTPS(bool enable = true);
|
||||
/// Enable or disable FTPS (FTP over SSL/TLS).
|
||||
|
||||
bool isSecure() const;
|
||||
/// Returns true if the session is FTPS.
|
||||
@@ -75,7 +78,7 @@ private:
|
||||
void afterCreateControlSocket();
|
||||
///Send commands to make SSL negotiating of control channel
|
||||
|
||||
bool _tryFTPS = true;
|
||||
bool _enableFTPS = true;
|
||||
bool _secureDataConnection = false;
|
||||
Context::Ptr _pContext;
|
||||
};
|
||||
|
74
NetSSL_OpenSSL/include/Poco/Net/FTPSStreamFactory.h
Normal file
74
NetSSL_OpenSSL/include/Poco/Net/FTPSStreamFactory.h
Normal file
@@ -0,0 +1,74 @@
|
||||
//
|
||||
// FTPSStreamFactory.h
|
||||
//
|
||||
// Library: Net
|
||||
// Package: FTP
|
||||
// Module: FTPSStreamFactory
|
||||
//
|
||||
// Definition of the FTPSStreamFactory class.
|
||||
//
|
||||
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
//
|
||||
|
||||
|
||||
#ifndef Net_FTPSStreamFactory_INCLUDED
|
||||
#define Net_FTPSStreamFactory_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Net/Net.h"
|
||||
#include "Poco/Net/HTTPSession.h"
|
||||
#include "Poco/Net/FTPStreamFactory.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Net {
|
||||
|
||||
|
||||
class Net_API FTPSStreamFactory: public Poco::Net::FTPStreamFactory
|
||||
/// An implementation of the URIStreamFactory interface
|
||||
/// that handles secure File Transfer Protocol (ftps) URIs
|
||||
/// according to RFC 4217, based on the FTPSClientSession class.
|
||||
///
|
||||
/// The URI's path may end with an optional type specification
|
||||
/// in the form (;type=<typecode>), where <typecode> is
|
||||
/// one of a, i or d. If type=a, the file identified by the path
|
||||
/// is transferred in ASCII (text) mode. If type=i, the file
|
||||
/// is transferred in Image (binary) mode. If type=d, a directory
|
||||
/// listing (in NLST format) is returned. This corresponds with
|
||||
/// the FTP URL format specified in RFC 1738.
|
||||
///
|
||||
/// If the URI does not contain a username and password, the
|
||||
/// username "anonymous" and the password "poco@localhost".
|
||||
///
|
||||
/// Note that ftps is a non-standard URI scheme.
|
||||
{
|
||||
public:
|
||||
FTPSStreamFactory();
|
||||
/// Creates the FTPSStreamFactory.
|
||||
|
||||
~FTPSStreamFactory();
|
||||
/// Destroys the FTPSStreamFactory.
|
||||
|
||||
std::istream* open(const Poco::URI& uri);
|
||||
/// Creates and opens a HTTP stream for the given URI.
|
||||
/// The URI must be a ftps://... URI.
|
||||
///
|
||||
/// Throws a NetException if anything goes wrong.
|
||||
|
||||
static void registerFactory();
|
||||
/// Registers the FTPSStreamFactory with the
|
||||
/// default URIStreamOpener instance.
|
||||
|
||||
static void unregisterFactory();
|
||||
/// Unregisters the FTPSStreamFactory with the
|
||||
/// default URIStreamOpener instance.
|
||||
};
|
||||
|
||||
|
||||
} } // namespace Poco::Net
|
||||
|
||||
|
||||
#endif // Net_FTPSStreamFactory_INCLUDED
|
Reference in New Issue
Block a user