You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2018/03/20 19:54:28 UTC
nifi-minifi-cpp git commit: MINIFICPP-435: Use NSS when
libcurl-openssl is not available. Bootstrap should default to using NSS when
curl is not built with OpenSSL, such as the case for CENTOS 7
Repository: nifi-minifi-cpp
Updated Branches:
refs/heads/master cb5ae08b9 -> 469b9d1bd
MINIFICPP-435: Use NSS when libcurl-openssl is not available. Bootstrap
should default to using NSS when curl is not built with OpenSSL, such as
the case for CENTOS 7
This closes #285.
Signed-off-by: Aldrin Piri <al...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/469b9d1b
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/469b9d1b
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/469b9d1b
Branch: refs/heads/master
Commit: 469b9d1bd78ee89978776589bd604959d233c732
Parents: cb5ae08
Author: Marc Parisi <ph...@apache.org>
Authored: Mon Mar 19 09:41:35 2018 -0400
Committer: Aldrin Piri <al...@apache.org>
Committed: Tue Mar 20 15:53:36 2018 -0400
----------------------------------------------------------------------
README.md | 7 ++++---
bootstrap.sh | 11 ++++++++---
extensions/http-curl/CMakeLists.txt | 5 +++++
extensions/http-curl/client/HTTPClient.cpp | 12 +++++++++++-
4 files changed, 28 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/469b9d1b/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 2ad57b2..0c30eb0 100644
--- a/README.md
+++ b/README.md
@@ -104,7 +104,7 @@ or greater is recommended.
#### Libraries / Development Headers
* libboost and boost-devel
* 1.48.0 or greater
-* libcurl-openssl
+* libcurl-openssl (If not available or desired, NSS will be used by applying -DUSE_CURL_NSS)
* librocksdb4.1 and librocksdb-dev
* libuuid and uuid-dev
* openssl
@@ -157,7 +157,7 @@ Finally, it is required to add the `-lrt` compiler flag by using the
#### Libraries
* libuuid
* librocksdb *** IF NOT INSTALLED, WILL BE BUILT FROM THIRD PARTY DIRECTORY ***
-* libcurl-openssl
+* libcurl-openssl (If not available or desired, NSS will be used by applying -DUSE_CURL_NSS)
* libssl and libcrypto from openssl
* libarchive
* librdkafka
@@ -201,7 +201,8 @@ $ yum install docker python-virtualenv
$ yum install gpsd-devel
$ # (Optional) for PacketCapture Processor
$ yum install libpcap-devel
-$ #depending on your yum repo you may need to manually build libcurl-openssl if you do not have it.
+$ #depending on your yum repo you may need to manually build libcurl-openssl if you do not wish to use
+ libcurl with NSS support. By default we will use NSS when libcurl-openssl is not available.
```
##### Aptitude based Linux Distributions
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/469b9d1b/bootstrap.sh
----------------------------------------------------------------------
diff --git a/bootstrap.sh b/bootstrap.sh
index 48ef6a9..fde636d 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -450,7 +450,6 @@ CMAKE_REVISION=`echo $CMAKE_VERSION | cut -d. -f3`
CMAKE_BUILD_COMMAND="${CMAKE_COMMAND} "
-
build_cmake_command(){
for option in "${OPTIONS[@]}" ; do
@@ -500,7 +499,15 @@ build_cmake_command(){
add_os_flags
+ curl -V | grep OpenSSL &> /dev/null
+ if [ $? == 0 ]; then
+ echo "Using libcurl-openssl..."
+ else
+ CMAKE_BUILD_COMMAND="${CMAKE_BUILD_COMMAND} -DUSE_CURL_NSS=true .."
+ fi
+
CMAKE_BUILD_COMMAND="${CMAKE_BUILD_COMMAND} .."
+
continue_with_plan="Y"
if [ ! "$NO_PROMPT" = "true" ]; then
read -p "Command will be '${CMAKE_BUILD_COMMAND}', run this? [ Y/N ] " continue_with_plan
@@ -514,8 +521,6 @@ build_cmake_command(){
build_cmake_command
-
-
### run the cmake command
${CMAKE_BUILD_COMMAND}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/469b9d1b/extensions/http-curl/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/extensions/http-curl/CMakeLists.txt b/extensions/http-curl/CMakeLists.txt
index d5e966a..bea1195 100644
--- a/extensions/http-curl/CMakeLists.txt
+++ b/extensions/http-curl/CMakeLists.txt
@@ -27,6 +27,11 @@ include_directories(protocols client processors sitetosite)
file(GLOB SOURCES "*.cpp" "protocols/*.cpp" "client/*.cpp" "processors/*.cpp" "sitetosite/*.cpp")
+if (USE_CURL_NSS)
+ message("okay use nss")
+ add_definitions(-DUSE_CURL_NSS)
+endif()
+
add_library(minifi-http-curl STATIC ${SOURCES})
set_property(TARGET minifi-http-curl PROPERTY POSITION_INDEPENDENT_CODE ON)
if(THREADS_HAVE_PTHREAD_ARG)
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/469b9d1b/extensions/http-curl/client/HTTPClient.cpp
----------------------------------------------------------------------
diff --git a/extensions/http-curl/client/HTTPClient.cpp b/extensions/http-curl/client/HTTPClient.cpp
index da0ba2e..119e369 100644
--- a/extensions/http-curl/client/HTTPClient.cpp
+++ b/extensions/http-curl/client/HTTPClient.cpp
@@ -331,11 +331,21 @@ bool HTTPClient::matches(const std::string &value, const std::string &sregex) {
}
void HTTPClient::configure_secure_connection(CURL *http_session) {
- logger_->log_debug("Using certificate file %s", ssl_context_service_->getCertificateFile());
+#ifdef USE_CURL_NSS
+ logger_->log_debug("Using NSS and certificate file %s", ssl_context_service_->getCertificateFile());
+ curl_easy_setopt(http_session, CURLOPT_CAINFO, 0);
+ curl_easy_setopt(http_session, CURLOPT_SSLCERTTYPE, "PEM");
+ curl_easy_setopt(http_session, CURLOPT_SSLCERT, ssl_context_service_->getCertificateFile().c_str());
+ curl_easy_setopt(http_session, CURLOPT_SSLKEY, ssl_context_service_->getPrivateKeyFile().c_str());
+ curl_easy_setopt(http_session, CURLOPT_KEYPASSWD, ssl_context_service_->getPassphrase().c_str());
+ curl_easy_setopt(http_session, CURLOPT_CAINFO, ssl_context_service_->getCACertificate().c_str());
+#else
+ logger_->log_debug("Using OpenSSL and certificate file %s", ssl_context_service_->getCertificateFile());
curl_easy_setopt(http_session, CURLOPT_SSL_CTX_FUNCTION, &configure_ssl_context);
curl_easy_setopt(http_session, CURLOPT_SSL_CTX_DATA, static_cast<void*>(ssl_context_service_.get()));
curl_easy_setopt(http_session, CURLOPT_CAINFO, 0);
curl_easy_setopt(http_session, CURLOPT_CAPATH, 0);
+#endif
}
bool HTTPClient::isSecure(const std::string &url) {