diff options
author | Charles E. Rolke <chug@apache.org> | 2010-10-21 22:04:07 +0000 |
---|---|---|
committer | Charles E. Rolke <chug@apache.org> | 2010-10-21 22:04:07 +0000 |
commit | 7ecaee585691df73928e3bb2248d8977372d1041 (patch) | |
tree | 0fa1baec272e9c636959a4de1e443c450438de1b | |
parent | 9be58b7519c45c682c36f8d70d8e9c7e1422a440 (diff) | |
download | qpid-python-7ecaee585691df73928e3bb2248d8977372d1041.tar.gz |
QPID-1672, r1024541 Failed to modify the windows-private SaslFactory. This commit:
* coerces CMake to include the two different SaslFactory sources into qpidcommon.
* modifies the windows SaslFactory to use the new interface constructs.
* adds QPID_COMMON_EXPORT to the Sasl code new to qpidcommon.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1026155 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | cpp/src/CMakeLists.txt | 4 | ||||
-rw-r--r-- | cpp/src/qpid/SaslFactory.h | 6 | ||||
-rw-r--r-- | cpp/src/qpid/client/windows/SaslFactory.cpp | 49 |
3 files changed, 44 insertions, 15 deletions
diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt index ba2a866cfb..a1560cce2f 100644 --- a/cpp/src/CMakeLists.txt +++ b/cpp/src/CMakeLists.txt @@ -626,6 +626,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL Windows) qpid/sys/windows/SystemInfo.cpp qpid/sys/windows/Thread.cpp qpid/sys/windows/Time.cpp + qpid/client/windows/SaslFactory.cpp ${sslcommon_windows_SOURCES} ) @@ -642,7 +643,6 @@ if (CMAKE_SYSTEM_NAME STREQUAL Windows) ${windows_ssl_libs} ${windows_ssl_server_libs} ) set (qpidclient_platform_SOURCES - qpid/client/windows/SaslFactory.cpp ${sslclient_windows_SOURCES} ) set (qpidclient_platform_LIBS @@ -694,6 +694,7 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows) qpid/sys/posix/StrError.cpp qpid/sys/posix/Thread.cpp qpid/sys/posix/Time.cpp + qpid/SaslFactory.cpp ${qpid_poller_module} ) @@ -731,7 +732,6 @@ set (qpidcommon_SOURCES qpid/Options.cpp qpid/Plugin.cpp qpid/RefCountedBuffer.cpp - qpid/SaslFactory.cpp qpid/SessionState.cpp qpid/SessionId.cpp qpid/StringUtils.cpp diff --git a/cpp/src/qpid/SaslFactory.h b/cpp/src/qpid/SaslFactory.h index d9d83c494d..450b70cd46 100644 --- a/cpp/src/qpid/SaslFactory.h +++ b/cpp/src/qpid/SaslFactory.h @@ -34,9 +34,9 @@ namespace qpid { class SaslFactory { public: - std::auto_ptr<Sasl> create(const std::string & userName, const std::string & password, const std::string & serviceName, const std::string & hostName, int minSsf, int maxSsf ); - static SaslFactory& getInstance(); - ~SaslFactory(); + QPID_COMMON_EXTERN std::auto_ptr<Sasl> create(const std::string & userName, const std::string & password, const std::string & serviceName, const std::string & hostName, int minSsf, int maxSsf ); + QPID_COMMON_EXTERN static SaslFactory& getInstance(); + QPID_COMMON_EXTERN ~SaslFactory(); private: SaslFactory(); static qpid::sys::Mutex lock; diff --git a/cpp/src/qpid/client/windows/SaslFactory.cpp b/cpp/src/qpid/client/windows/SaslFactory.cpp index 40c112f534..e662dd98b5 100644 --- a/cpp/src/qpid/client/windows/SaslFactory.cpp +++ b/cpp/src/qpid/client/windows/SaslFactory.cpp @@ -19,8 +19,7 @@ * */ -#include "qpid/client/SaslFactory.h" -#include "qpid/client/ConnectionSettings.h" +#include "qpid/SaslFactory.h" #include "qpid/Exception.h" #include "qpid/framing/reply_exceptions.h" @@ -31,16 +30,46 @@ #include "boost/tokenizer.hpp" namespace qpid { -namespace client { using qpid::sys::SecurityLayer; using qpid::sys::SecuritySettings; using qpid::framing::InternalErrorException; +struct WindowsSaslSettings +{ + WindowsSaslSettings ( ) : + username ( std::string(0) ), + password ( std::string(0) ), + service ( std::string(0) ), + host ( std::string(0) ), + minSsf ( 0 ), + maxSsf ( 0 ) + { + } + + WindowsSaslSettings ( const std::string & user, const std::string & password, const std::string & service, const std::string & host, int minSsf, int maxSsf ) : + username(user), + password(password), + service(service), + host(host), + minSsf(minSsf), + maxSsf(maxSsf) + { + } + + std::string username, + password, + service, + host; + + int minSsf, + maxSsf; +}; + class WindowsSasl : public Sasl { public: - WindowsSasl(const ConnectionSettings&); + WindowsSasl( const std::string &, const std::string &, const std::string &, const std::string &, int, int ); ~WindowsSasl(); std::string start(const std::string& mechanisms, const SecuritySettings* externalSettings); std::string step(const std::string& challenge); @@ -48,7 +77,7 @@ class WindowsSasl : public Sasl std::string getUserId(); std::auto_ptr<SecurityLayer> getSecurityLayer(uint16_t maxFrameSize); private: - ConnectionSettings settings; + WindowsSaslSettings settings; std::string mechanism; }; @@ -72,9 +101,9 @@ SaslFactory& SaslFactory::getInstance() return *instance; } -std::auto_ptr<Sasl> SaslFactory::create(const ConnectionSettings& settings) +std::auto_ptr<Sasl> SaslFactory::create( const std::string & username, const std::string & password, const std::string & serviceName, const std::string & hostName, int minSsf, int maxSsf ) { - std::auto_ptr<Sasl> sasl(new WindowsSasl(settings)); + std::auto_ptr<Sasl> sasl(new WindowsSasl( username, password, serviceName, hostName, minSsf, maxSsf )); return sasl; } @@ -83,8 +112,8 @@ namespace { const std::string PLAIN = "PLAIN"; } -WindowsSasl::WindowsSasl(const ConnectionSettings& s) - : settings(s) +WindowsSasl::WindowsSasl( const std::string & username, const std::string & password, const std::string & serviceName, const std::string & hostName, int minSsf, int maxSsf ) + : settings(username, password, serviceName, hostName, minSsf, maxSsf) { } @@ -145,4 +174,4 @@ std::auto_ptr<SecurityLayer> WindowsSasl::getSecurityLayer(uint16_t maxFrameSize return std::auto_ptr<SecurityLayer>(0); } -}} // namespace qpid::client +} // namespace qpid |