You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ph...@apache.org on 2017/12/13 20:41:46 UTC
[39/51] [partial] nifi-minifi-cpp git commit: MINIFICPP-303 Update to
civet 1.10
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/client.crt
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/client.crt b/thirdparty/civetweb-1.10/resources/cert/client.crt
new file mode 100644
index 0000000..f6bbdd8
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/client.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDBjCCAe4CCQCFpskbTEyGpTANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJB
+VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMB4XDTE3MDkwMzE5MjIwNVoXDTI3MDkwMTE5MjIwNVowRTELMAkG
+A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
+IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+ANyFUuYxv/uexSr/K9aSmcnEcylNH4S3NdlvMwFvW3XFqAV05tV6HnPnSELEk6t3
+8aMDUGKDBrrjwsVK6+S7OyrkioXeB9dWldHbqD7o3MkIM3sUxUtaR6x0RMZ+sIX4
+XpE0xULcip1bG0etP4Z2frEP2IOOValQcm4SCnKYZJyTr/oR31NmlIPU/47s74U6
+rqwwUE92bzvf1jGeUHEn7IAgSJNIUBNsOIdRQAMBuTJIAmG2qawXaetjLi/NBwNS
+d0OX2v3o9SrA+ZhQYpPG5xp3B3ncHgVvmhmp7hUdlYbiemcUHn18hZjxPVZLbtY8
+gQldrWyMZkVabSZjuIH3IKcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAUZsxxYVK
+l0tH8E0FCnRJTvG6gjOeiqJRIk7Mmg+hfFZK/ewqBixxg1OBM/xmPXfnI/ULRz74
+UMXnyDIsGakzrFDqWqPt3xots35yHHo2ZkVao6gV4qx0Reu86qeN5iRvG0EjoGMD
+7XRaw56E0XhvMBJW1CiUg944HSw4ptJli0dJCYa+P9s1Fop3lA0d9+dwKMKUyCDr
+yBz4XjyO9jXSQC/t0fkxC4gHhdH/ZaAq0Lem6Xxc40ZwoVc1+dHWFxn8d6L/RYvb
+16gOuw6s2Xt9h2K8OFKzehOgNZAkI2oUELRFUx9Wc8/Bcl6uEkBmPHRqeX5l35jo
+ztBrpAEsCy0cGg==
+-----END CERTIFICATE-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/client.csr
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/client.csr b/thirdparty/civetweb-1.10/resources/cert/client.csr
new file mode 100644
index 0000000..beb8466
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/client.csr
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
+ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBANyFUuYxv/uexSr/K9aSmcnEcylNH4S3NdlvMwFv
+W3XFqAV05tV6HnPnSELEk6t38aMDUGKDBrrjwsVK6+S7OyrkioXeB9dWldHbqD7o
+3MkIM3sUxUtaR6x0RMZ+sIX4XpE0xULcip1bG0etP4Z2frEP2IOOValQcm4SCnKY
+ZJyTr/oR31NmlIPU/47s74U6rqwwUE92bzvf1jGeUHEn7IAgSJNIUBNsOIdRQAMB
+uTJIAmG2qawXaetjLi/NBwNSd0OX2v3o9SrA+ZhQYpPG5xp3B3ncHgVvmhmp7hUd
+lYbiemcUHn18hZjxPVZLbtY8gQldrWyMZkVabSZjuIH3IKcCAwEAAaAAMA0GCSqG
+SIb3DQEBCwUAA4IBAQB/bapQm4nxXA01msL6nkjiVaeh/mj8Cr8sPFtQXVu+hxl9
+mjbisxDXwPhiFOiTlokQkINf+RMxQsVNr2y/sGZrSMimabwODDXnPpyir4b2WOWp
+VQQWbgnMVnvgKsjBpLLDr8VnLBiQ3mED+2QV0bxxJSgvvEuiZx/BlCgiu77D/8kj
+XUY/CXIBi00fIYigpRRdv2WtMQjtQe2fCSZZKOWu2ZWu2o24kEk28x5LO/WaJ4Ft
+lUHFOIp/wkKz/US4mbdQaD0bsg7MirAyGrCmZIHqQDhdDWq+o/brI7N/8yOk3qwc
+qPGkr9PYIPnuzZwStLJlPxKGXjCA40HpdmWA0kyc
+-----END CERTIFICATE REQUEST-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/client.key
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/client.key b/thirdparty/civetweb-1.10/resources/cert/client.key
new file mode 100644
index 0000000..f041acc
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/client.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA3IVS5jG/+57FKv8r1pKZycRzKU0fhLc12W8zAW9bdcWoBXTm
+1Xoec+dIQsSTq3fxowNQYoMGuuPCxUrr5Ls7KuSKhd4H11aV0duoPujcyQgzexTF
+S1pHrHRExn6whfhekTTFQtyKnVsbR60/hnZ+sQ/Yg45VqVBybhIKcphknJOv+hHf
+U2aUg9T/juzvhTqurDBQT3ZvO9/WMZ5QcSfsgCBIk0hQE2w4h1FAAwG5MkgCYbap
+rBdp62MuL80HA1J3Q5fa/ej1KsD5mFBik8bnGncHedweBW+aGanuFR2VhuJ6ZxQe
+fXyFmPE9Vktu1jyBCV2tbIxmRVptJmO4gfcgpwIDAQABAoIBAEpiBlZzTYi4Q1V/
+gO/9vzYZt6akxw7jJZzUL2Y6g6U0KLq+deZoLMF3sB4lZJIgATe1NHYmMCz2Coq1
+/N/Ib+rF8Bu7ivWN1TdWWmft8Bs3UvYfSXVjXG3FQjWaIjzuTCe6nxcwgOkXBBqn
+S5g1fAKJj8TATBCyfAa4uyFwWe+eGRs0W9pOMP8eU0EtvTer34rSU4L/LG3d7UcI
+upm/0T5QeLqv6Htv8UbHNQto701vJQVdWLavALMXGfGO112yTSz7OpitKpBEYDrV
+3+781zYm8AKkFIsRMXVK2HiBEF43zIrnNuoozsKpps/tZdlv9VqCSJ4hIaHm9mxJ
+3zMN3OECgYEA8dr5w68jTLrthDZ2qOG/6tZw9fMfXoF7hSUXplgxMN5Sohfr23Xm
+/IHVm7oiqhDNNZzplGyux7jB00x2/1ltOzay5mx4PMMLlsDBgiURgUwqS8C8dPVh
+0sN2RytdKGDmFP6lnKS7c15CEw1ChvdL4RwtqzjTKE0ZOK3zUY5/MykCgYEA6Wru
+Dusip4p4PA1K6eiCoC6SaqCuQCB7ZR5WPR5szAFkgoW63rNtC8S4Bl1qXXUb/v/V
+ptaVsGrqBc8/CxvCac1KCREbcyjuVWUAfw2VwdwgDbfrEieWrZNvsDs86EgB+Bo4
+Jm/cUjrFqSTJAbtvp4SYl1reax86XmCsHhNNf08CgYEApAhxd9/0IBlz+ET8K8SY
+5sy0ZouTjgRh40bqCF8uVcej4d45kGoh1Ma2Ot1+nzuwApm+7nTcAgd0JjxpRPzB
+EfUiVxfgYM2ksYVgeUVs3vXqheBdsTGwPENnmBN4Jme6BSlE573uiOu4ArXulh1p
+sG7tJoDu7hmEbqXELl9oNCkCgYEA51zWGnN3JhpakyuZ1cBhueRvvMEH9wg7Rz+K
+u4oszQmUVsu3Locqzz9uKODvTTOHTHrJi1WnifZvgNKr6pbZXYXenJ4YV01676nt
+lAIjLsTCANcMajJTaDl7u3L8LEEzsnhKr86w09Dtm3qawtzHD4Seu2eWjxelA2dP
+M4BukIECgYAn5n+HhCi5JD3I1VCX70uE5nj8alYyQ85qE57Lopmau1RyVfP4oeCt
+gMsy0o7vIF+xW1Z2yDxm+mJghOY/myDsbTGX9G8rY7PC7tWE8okjsQT5UoayFzKp
+mmvrTV8TQBVcTQqn0Jyj7T5MBnuwfioXYN9pKPQlvc4pPmHbqPi7CA==
+-----END RSA PRIVATE KEY-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/client.pem
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/client.pem b/thirdparty/civetweb-1.10/resources/cert/client.pem
new file mode 100644
index 0000000..6974c4c
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/client.pem
@@ -0,0 +1,46 @@
+-----BEGIN CERTIFICATE-----
+MIIDBjCCAe4CCQCFpskbTEyGpTANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJB
+VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMB4XDTE3MDkwMzE5MjIwNVoXDTI3MDkwMTE5MjIwNVowRTELMAkG
+A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
+IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+ANyFUuYxv/uexSr/K9aSmcnEcylNH4S3NdlvMwFvW3XFqAV05tV6HnPnSELEk6t3
+8aMDUGKDBrrjwsVK6+S7OyrkioXeB9dWldHbqD7o3MkIM3sUxUtaR6x0RMZ+sIX4
+XpE0xULcip1bG0etP4Z2frEP2IOOValQcm4SCnKYZJyTr/oR31NmlIPU/47s74U6
+rqwwUE92bzvf1jGeUHEn7IAgSJNIUBNsOIdRQAMBuTJIAmG2qawXaetjLi/NBwNS
+d0OX2v3o9SrA+ZhQYpPG5xp3B3ncHgVvmhmp7hUdlYbiemcUHn18hZjxPVZLbtY8
+gQldrWyMZkVabSZjuIH3IKcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAUZsxxYVK
+l0tH8E0FCnRJTvG6gjOeiqJRIk7Mmg+hfFZK/ewqBixxg1OBM/xmPXfnI/ULRz74
+UMXnyDIsGakzrFDqWqPt3xots35yHHo2ZkVao6gV4qx0Reu86qeN5iRvG0EjoGMD
+7XRaw56E0XhvMBJW1CiUg944HSw4ptJli0dJCYa+P9s1Fop3lA0d9+dwKMKUyCDr
+yBz4XjyO9jXSQC/t0fkxC4gHhdH/ZaAq0Lem6Xxc40ZwoVc1+dHWFxn8d6L/RYvb
+16gOuw6s2Xt9h2K8OFKzehOgNZAkI2oUELRFUx9Wc8/Bcl6uEkBmPHRqeX5l35jo
+ztBrpAEsCy0cGg==
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA3IVS5jG/+57FKv8r1pKZycRzKU0fhLc12W8zAW9bdcWoBXTm
+1Xoec+dIQsSTq3fxowNQYoMGuuPCxUrr5Ls7KuSKhd4H11aV0duoPujcyQgzexTF
+S1pHrHRExn6whfhekTTFQtyKnVsbR60/hnZ+sQ/Yg45VqVBybhIKcphknJOv+hHf
+U2aUg9T/juzvhTqurDBQT3ZvO9/WMZ5QcSfsgCBIk0hQE2w4h1FAAwG5MkgCYbap
+rBdp62MuL80HA1J3Q5fa/ej1KsD5mFBik8bnGncHedweBW+aGanuFR2VhuJ6ZxQe
+fXyFmPE9Vktu1jyBCV2tbIxmRVptJmO4gfcgpwIDAQABAoIBAEpiBlZzTYi4Q1V/
+gO/9vzYZt6akxw7jJZzUL2Y6g6U0KLq+deZoLMF3sB4lZJIgATe1NHYmMCz2Coq1
+/N/Ib+rF8Bu7ivWN1TdWWmft8Bs3UvYfSXVjXG3FQjWaIjzuTCe6nxcwgOkXBBqn
+S5g1fAKJj8TATBCyfAa4uyFwWe+eGRs0W9pOMP8eU0EtvTer34rSU4L/LG3d7UcI
+upm/0T5QeLqv6Htv8UbHNQto701vJQVdWLavALMXGfGO112yTSz7OpitKpBEYDrV
+3+781zYm8AKkFIsRMXVK2HiBEF43zIrnNuoozsKpps/tZdlv9VqCSJ4hIaHm9mxJ
+3zMN3OECgYEA8dr5w68jTLrthDZ2qOG/6tZw9fMfXoF7hSUXplgxMN5Sohfr23Xm
+/IHVm7oiqhDNNZzplGyux7jB00x2/1ltOzay5mx4PMMLlsDBgiURgUwqS8C8dPVh
+0sN2RytdKGDmFP6lnKS7c15CEw1ChvdL4RwtqzjTKE0ZOK3zUY5/MykCgYEA6Wru
+Dusip4p4PA1K6eiCoC6SaqCuQCB7ZR5WPR5szAFkgoW63rNtC8S4Bl1qXXUb/v/V
+ptaVsGrqBc8/CxvCac1KCREbcyjuVWUAfw2VwdwgDbfrEieWrZNvsDs86EgB+Bo4
+Jm/cUjrFqSTJAbtvp4SYl1reax86XmCsHhNNf08CgYEApAhxd9/0IBlz+ET8K8SY
+5sy0ZouTjgRh40bqCF8uVcej4d45kGoh1Ma2Ot1+nzuwApm+7nTcAgd0JjxpRPzB
+EfUiVxfgYM2ksYVgeUVs3vXqheBdsTGwPENnmBN4Jme6BSlE573uiOu4ArXulh1p
+sG7tJoDu7hmEbqXELl9oNCkCgYEA51zWGnN3JhpakyuZ1cBhueRvvMEH9wg7Rz+K
+u4oszQmUVsu3Locqzz9uKODvTTOHTHrJi1WnifZvgNKr6pbZXYXenJ4YV01676nt
+lAIjLsTCANcMajJTaDl7u3L8LEEzsnhKr86w09Dtm3qawtzHD4Seu2eWjxelA2dP
+M4BukIECgYAn5n+HhCi5JD3I1VCX70uE5nj8alYyQ85qE57Lopmau1RyVfP4oeCt
+gMsy0o7vIF+xW1Z2yDxm+mJghOY/myDsbTGX9G8rY7PC7tWE8okjsQT5UoayFzKp
+mmvrTV8TQBVcTQqn0Jyj7T5MBnuwfioXYN9pKPQlvc4pPmHbqPi7CA==
+-----END RSA PRIVATE KEY-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/make_certs.bat
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/make_certs.bat b/thirdparty/civetweb-1.10/resources/cert/make_certs.bat
new file mode 100644
index 0000000..66a091d
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/make_certs.bat
@@ -0,0 +1,55 @@
+@echo off
+REM We need admin rights, otherwise the random state cannot be written
+REM Thanks to http://stackoverflow.com/a/10052222/1531708
+
+:: BatchGotAdmin
+:-------------------------------------
+REM --> Check for permissions
+ IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
+>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
+) ELSE (
+>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
+)
+
+REM --> If error flag set, we do not have admin.
+if '%errorlevel%' NEQ '0' (
+ echo Requesting administrative privileges...
+ goto UACPrompt
+) else ( goto gotAdmin )
+
+:UACPrompt
+ echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
+ set params = %*:"=""
+ echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
+
+ "%temp%\getadmin.vbs"
+ del "%temp%\getadmin.vbs"
+ exit /B
+
+:gotAdmin
+ pushd "%CD%"
+ CD /D "%~dp0"
+:--------------------------------------
+
+del server.*
+
+c:\OpenSSL-Win32\bin\openssl.exe genrsa -des3 -out server.key 4096
+
+c:\OpenSSL-Win32\bin\openssl.exe req -sha256 -new -key server.key -out server.csr -utf8
+
+copy server.key server.key.orig
+
+c:\OpenSSL-Win32\bin\openssl.exe rsa -in server.key.orig -out server.key
+
+echo [ v3_ca ] > server.ext.txt
+echo [ req ] >> server.ext.txt
+echo req_extensions = my_extensions >> server.ext.txt
+echo [ my_extensions ] >> server.ext.txt
+echo extendedKeyUsage=serverAuth >> server.ext.txt
+echo crlDistributionPoints=URI:http://localhost/crl.pem >> server.ext.txt
+
+c:\OpenSSL-Win32\bin\openssl.exe x509 -req -days 365 -extensions v3_ca -extfile server.ext.txt -in server.csr -signkey server.key -out server.crt
+
+copy server.crt server.pem
+
+type server.key >> server.pem
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/make_certs.sh
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/make_certs.sh b/thirdparty/civetweb-1.10/resources/cert/make_certs.sh
new file mode 100644
index 0000000..b4b6714
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/make_certs.sh
@@ -0,0 +1,64 @@
+#!/bin/sh
+#using "pass" for every password
+
+echo "Generating client certificate ..."
+
+openssl genrsa -des3 -out client.key 2048
+openssl req -new -key client.key -out client.csr
+
+cp client.key client.key.orig
+
+openssl rsa -in client.key.orig -out client.key
+
+openssl x509 -req -days 3650 -in client.csr -signkey client.key -out client.crt
+
+cp client.crt client.pem
+cat client.key >> client.pem
+
+openssl pkcs12 -export -inkey client.key -in client.pem -name ClientName -out client.pfx
+
+
+echo "Generating first server certificate ..."
+
+openssl genrsa -des3 -out server.key 2048
+openssl req -new -key server.key -out server.csr
+
+cp server.key server.key.orig
+
+openssl rsa -in server.key.orig -out server.key
+
+openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
+
+cp server.crt server.pem
+cat server.key >> server.pem
+
+openssl pkcs12 -export -inkey server.key -in server.pem -name ServerName -out server.pfx
+
+echo "First server certificate hash for Public-Key-Pins header:"
+
+openssl x509 -pubkey < server.crt | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64 > server.pin
+
+cat server.pin
+
+echo "Generating backup server certificate ..."
+
+openssl genrsa -des3 -out server_bkup.key 2048
+openssl req -new -key server_bkup.key -out server_bkup.csr
+
+cp server_bkup.key server_bkup.key.orig
+
+openssl rsa -in server_bkup.key.orig -out server_bkup.key
+
+openssl x509 -req -days 3650 -in server_bkup.csr -signkey server_bkup.key -out server_bkup.crt
+
+cp server_bkup.crt server_bkup.pem
+cat server_bkup.key >> server_bkup.pem
+
+openssl pkcs12 -export -inkey server_bkup.key -in server_bkup.pem -name ServerName -out server_bkup.pfx
+
+echo "Backup server certificate hash for Public-Key-Pins header:"
+
+openssl x509 -pubkey < server_bkup.crt | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64 > server_bkup.pin
+
+cat server_bkup.pin
+
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server.crt
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server.crt b/thirdparty/civetweb-1.10/resources/cert/server.crt
new file mode 100644
index 0000000..a13fa01
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDBjCCAe4CCQDDIH/hK1C0BjANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJB
+VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMB4XDTE3MDkwMzE5MjIyOVoXDTI3MDkwMTE5MjIyOVowRTELMAkG
+A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
+IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+ALUmHEoJcebkUOyqEAhH2OdEuTTk8AxjjVvq9B1dXjlf/dvxGnZX2InScGCJA9Uy
+kO1XI8nLXKAGl6OL9jDt/0K3/oFLedDLtZf1qE+kEBuaqAgL+VVAPqwtQZcyCoI9
+zx777I1tPUOl1Q1ass3T7lYsTN8QADmW5zjJn4MJPMQ55qoQUL7HVQR4VJ/ELAXu
+xGkQlJFBY5q0Qq6buN102D2upNKXKpDYYPc0OgyJ73fR2+rzQapc52QD4Oh6cbD8
+Fh5Vh/qGNMckh1cQsVm6fRtlkoUqxANZk58rqkEwOuk04p7vlnVvZTidOng7G2nW
+1n7YQXCycI+JhofCqOqT9x8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEATx5GZCxU
+KKQCDsafzAwoodbjRlpsJhvdCBGpgMrFTPyQo7BNF/E2XyVCDXbCmbxTRlhFafJG
+Loj/73toGkU8+1qUIy/Fffsmeh9YCyMlA2bE+85ccMCVKgCIEx0+fa6Au6/Ref7/
+n7vN/9deJzxWUaNbP26LNq3prbuIbKN6WFNT5mR8HLTmP3O45sqy1jwOZgSwvbgH
+bhugE4tSsKghMV5rUgiMhGIrEakFH+1LCZjQh+ojcWWEWyVk3QTQMmSd6tAZf4pb
+/Y1GuN6DAiLfzbabUQZCeQ1iZcgrwIOGHWJUPAf+BTPcFLlR3k/kYA9lrqvra7ln
+dFIuUv3YzfenfA==
+-----END CERTIFICATE-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server.csr
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server.csr b/thirdparty/civetweb-1.10/resources/cert/server.csr
new file mode 100644
index 0000000..fe5f3fc
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server.csr
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
+ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALUmHEoJcebkUOyqEAhH2OdEuTTk8AxjjVvq9B1d
+Xjlf/dvxGnZX2InScGCJA9UykO1XI8nLXKAGl6OL9jDt/0K3/oFLedDLtZf1qE+k
+EBuaqAgL+VVAPqwtQZcyCoI9zx777I1tPUOl1Q1ass3T7lYsTN8QADmW5zjJn4MJ
+PMQ55qoQUL7HVQR4VJ/ELAXuxGkQlJFBY5q0Qq6buN102D2upNKXKpDYYPc0OgyJ
+73fR2+rzQapc52QD4Oh6cbD8Fh5Vh/qGNMckh1cQsVm6fRtlkoUqxANZk58rqkEw
+Ouk04p7vlnVvZTidOng7G2nW1n7YQXCycI+JhofCqOqT9x8CAwEAAaAAMA0GCSqG
+SIb3DQEBCwUAA4IBAQCbJgy8LBoI+XCliwPGVM+ZuxEVuR15iaUSX7epuKb4jvyC
+y2+YQnNyxLkK8Bu2z9uxXUBbmhqXNiXZd7/SnbTR9MGMq3vyYg6Ggypo24DWez04
+tFaUiLJZsKVoVM6DP3zwpaKKSSJILU2GbNQKW87PHIPSdmAEh+gFD2Uy5sFrvuFJ
+LtHfIMMAhMSoEMjmjaLI7N4GVgFhGEr5q5HGpLuAU8cKGyKPkIkSyYN5Ott4u22d
+rpASF3TXfCJJ0YiM84U86rhZ0BrMqrVtw8r3uj+4G7hrE92eBU+DDn1D8jWzbyVc
+6dlTZaknMeJqsQe2/vq+T5P2yl+/39TnlvDO+cS2
+-----END CERTIFICATE REQUEST-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server.key
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server.key b/thirdparty/civetweb-1.10/resources/cert/server.key
new file mode 100644
index 0000000..bd010ef
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAtSYcSglx5uRQ7KoQCEfY50S5NOTwDGONW+r0HV1eOV/92/Ea
+dlfYidJwYIkD1TKQ7VcjyctcoAaXo4v2MO3/Qrf+gUt50Mu1l/WoT6QQG5qoCAv5
+VUA+rC1BlzIKgj3PHvvsjW09Q6XVDVqyzdPuVixM3xAAOZbnOMmfgwk8xDnmqhBQ
+vsdVBHhUn8QsBe7EaRCUkUFjmrRCrpu43XTYPa6k0pcqkNhg9zQ6DInvd9Hb6vNB
+qlznZAPg6HpxsPwWHlWH+oY0xySHVxCxWbp9G2WShSrEA1mTnyuqQTA66TTinu+W
+dW9lOJ06eDsbadbWfthBcLJwj4mGh8Ko6pP3HwIDAQABAoIBAGgaacGGogW+Cl+n
+8CTCHX3y+bjTJL0J7S/426eQg9jXOI3QhpOiMlgqLtjbhO9d6vnqzS9oBmgUwcqE
+YcyGyd5u3P0zAeOjXk3hKIP0Vil2/L/7GaQLkrjiHUKlyHJG0SQORUiVkdKxl7nf
++Mfe1qaBOQAsMuTluyXggSIOCfT+FdHoi6nr/+Nugyx7e/UrZ3GWHVbh8KXOlvHh
+kETfcI6KUkWKtE+YJx9w89Bjh8TBvU0nkOntR11T2SMNllyIS9nND8pqa7QPz3N0
+Ag/iN4Wh8S5f4Nn4GccAOtIORuYuw9Pmt1E9dFWEna1fGztBHlClFQPOLUhZ+/zR
+MfQV5bkCgYEA3pQTLZ5ldX1Kvg5sYw63wwewr147R0pav6AoJ8HTnWGqi5y485CX
+uKE/IcJseidG9FmkO7rfexQaBtW9eW0GCVru416VSP9g2r1iUu0ViaqctYt7ZacE
+UEI+g4FmaXHyn1CKTjJXgUAdoDbtlyHwLmLmNt+B3zKGa1lPIb5MwdMCgYEA0Fl7
+VCTnmdyFH8m/bK76uW7SgkYmKYd5AvDr2QFCSqY3tdZh2VIukoUPmheCFq0kpDc0
++eT680rF/m6CCu+00nM6v/3TNARRANeQ2G73kTPpyiphE+ttKCBQ/tke3TcHQA85
+7cI6bfkMonyKi0JRdLs4QEWf86Avr6p6JKdQWgUCgYEA3oAT8+SF9D89umRcwWFz
+HcnQPF7sz0VrFmiZ+7RtQMTjYhFXalQ+91hp7euX2TzuV1JNNVCIG1dq9S4x7PKp
+uCxo5m4kugZg4gm0AsXyY95kLa+zuViOnVS7fWab5Aj+y3gN6kG07AYWF5URSaWp
+nhVLocso3uB5M1LiIg9EV/UCgYBNrN6Wyz9xFE6pQDzWlxGwakme+eomV3RdDVbQ
+S3DchcWFTEykicgFJghgCV2deKWNd2uPsreAVqMkLSzcSOuf/gesJkREQ0uzxaoh
+lpVDlBgYH96bX40NhabMrEOec3KHhmWxZ1UDRPNZ7JZ2Pp5Bp77b71knqdO9aRAq
+dBo3xQKBgQCnxheQbozuzPO/6nixAng1GP1GuuB2bVb4e5Z0+0dt2RfI8+MSqnSL
+q9Yr2+p/fJFkVthrOUYwJkMf7ujhK2uNCJ7aKmwHPSIRztNV3UDGFd9wgpj3Pebx
+36ahCvDzidTEG+EEra6zPJ1An3KEbPsfXwcy1NVEZ/kFQyzczL0AOw==
+-----END RSA PRIVATE KEY-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server.pem
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server.pem b/thirdparty/civetweb-1.10/resources/cert/server.pem
new file mode 100644
index 0000000..9a0027c
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server.pem
@@ -0,0 +1,46 @@
+-----BEGIN CERTIFICATE-----
+MIIDBjCCAe4CCQDDIH/hK1C0BjANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJB
+VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMB4XDTE3MDkwMzE5MjIyOVoXDTI3MDkwMTE5MjIyOVowRTELMAkG
+A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
+IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+ALUmHEoJcebkUOyqEAhH2OdEuTTk8AxjjVvq9B1dXjlf/dvxGnZX2InScGCJA9Uy
+kO1XI8nLXKAGl6OL9jDt/0K3/oFLedDLtZf1qE+kEBuaqAgL+VVAPqwtQZcyCoI9
+zx777I1tPUOl1Q1ass3T7lYsTN8QADmW5zjJn4MJPMQ55qoQUL7HVQR4VJ/ELAXu
+xGkQlJFBY5q0Qq6buN102D2upNKXKpDYYPc0OgyJ73fR2+rzQapc52QD4Oh6cbD8
+Fh5Vh/qGNMckh1cQsVm6fRtlkoUqxANZk58rqkEwOuk04p7vlnVvZTidOng7G2nW
+1n7YQXCycI+JhofCqOqT9x8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEATx5GZCxU
+KKQCDsafzAwoodbjRlpsJhvdCBGpgMrFTPyQo7BNF/E2XyVCDXbCmbxTRlhFafJG
+Loj/73toGkU8+1qUIy/Fffsmeh9YCyMlA2bE+85ccMCVKgCIEx0+fa6Au6/Ref7/
+n7vN/9deJzxWUaNbP26LNq3prbuIbKN6WFNT5mR8HLTmP3O45sqy1jwOZgSwvbgH
+bhugE4tSsKghMV5rUgiMhGIrEakFH+1LCZjQh+ojcWWEWyVk3QTQMmSd6tAZf4pb
+/Y1GuN6DAiLfzbabUQZCeQ1iZcgrwIOGHWJUPAf+BTPcFLlR3k/kYA9lrqvra7ln
+dFIuUv3YzfenfA==
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAtSYcSglx5uRQ7KoQCEfY50S5NOTwDGONW+r0HV1eOV/92/Ea
+dlfYidJwYIkD1TKQ7VcjyctcoAaXo4v2MO3/Qrf+gUt50Mu1l/WoT6QQG5qoCAv5
+VUA+rC1BlzIKgj3PHvvsjW09Q6XVDVqyzdPuVixM3xAAOZbnOMmfgwk8xDnmqhBQ
+vsdVBHhUn8QsBe7EaRCUkUFjmrRCrpu43XTYPa6k0pcqkNhg9zQ6DInvd9Hb6vNB
+qlznZAPg6HpxsPwWHlWH+oY0xySHVxCxWbp9G2WShSrEA1mTnyuqQTA66TTinu+W
+dW9lOJ06eDsbadbWfthBcLJwj4mGh8Ko6pP3HwIDAQABAoIBAGgaacGGogW+Cl+n
+8CTCHX3y+bjTJL0J7S/426eQg9jXOI3QhpOiMlgqLtjbhO9d6vnqzS9oBmgUwcqE
+YcyGyd5u3P0zAeOjXk3hKIP0Vil2/L/7GaQLkrjiHUKlyHJG0SQORUiVkdKxl7nf
++Mfe1qaBOQAsMuTluyXggSIOCfT+FdHoi6nr/+Nugyx7e/UrZ3GWHVbh8KXOlvHh
+kETfcI6KUkWKtE+YJx9w89Bjh8TBvU0nkOntR11T2SMNllyIS9nND8pqa7QPz3N0
+Ag/iN4Wh8S5f4Nn4GccAOtIORuYuw9Pmt1E9dFWEna1fGztBHlClFQPOLUhZ+/zR
+MfQV5bkCgYEA3pQTLZ5ldX1Kvg5sYw63wwewr147R0pav6AoJ8HTnWGqi5y485CX
+uKE/IcJseidG9FmkO7rfexQaBtW9eW0GCVru416VSP9g2r1iUu0ViaqctYt7ZacE
+UEI+g4FmaXHyn1CKTjJXgUAdoDbtlyHwLmLmNt+B3zKGa1lPIb5MwdMCgYEA0Fl7
+VCTnmdyFH8m/bK76uW7SgkYmKYd5AvDr2QFCSqY3tdZh2VIukoUPmheCFq0kpDc0
++eT680rF/m6CCu+00nM6v/3TNARRANeQ2G73kTPpyiphE+ttKCBQ/tke3TcHQA85
+7cI6bfkMonyKi0JRdLs4QEWf86Avr6p6JKdQWgUCgYEA3oAT8+SF9D89umRcwWFz
+HcnQPF7sz0VrFmiZ+7RtQMTjYhFXalQ+91hp7euX2TzuV1JNNVCIG1dq9S4x7PKp
+uCxo5m4kugZg4gm0AsXyY95kLa+zuViOnVS7fWab5Aj+y3gN6kG07AYWF5URSaWp
+nhVLocso3uB5M1LiIg9EV/UCgYBNrN6Wyz9xFE6pQDzWlxGwakme+eomV3RdDVbQ
+S3DchcWFTEykicgFJghgCV2deKWNd2uPsreAVqMkLSzcSOuf/gesJkREQ0uzxaoh
+lpVDlBgYH96bX40NhabMrEOec3KHhmWxZ1UDRPNZ7JZ2Pp5Bp77b71knqdO9aRAq
+dBo3xQKBgQCnxheQbozuzPO/6nixAng1GP1GuuB2bVb4e5Z0+0dt2RfI8+MSqnSL
+q9Yr2+p/fJFkVthrOUYwJkMf7ujhK2uNCJ7aKmwHPSIRztNV3UDGFd9wgpj3Pebx
+36ahCvDzidTEG+EEra6zPJ1An3KEbPsfXwcy1NVEZ/kFQyzczL0AOw==
+-----END RSA PRIVATE KEY-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server.pin
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server.pin b/thirdparty/civetweb-1.10/resources/cert/server.pin
new file mode 100644
index 0000000..015792a
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server.pin
@@ -0,0 +1 @@
+uz1UTAPen+xb+UoQqkVlEx4H653LbMjfRJcZx5OrjbI=
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server_bkup.crt
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server_bkup.crt b/thirdparty/civetweb-1.10/resources/cert/server_bkup.crt
new file mode 100644
index 0000000..afe0d5d
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server_bkup.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDBjCCAe4CCQCFKfFGF1i10TANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJB
+VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMB4XDTE3MDkwMzE5MjI1MVoXDTI3MDkwMTE5MjI1MVowRTELMAkG
+A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
+IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+AKTJr3PzWOR1Hrjfk9bBA7TptI1hNYVn/Xvi2GSferhJaWg69b2Li4t5/JxElESR
+8fy0lBMzQ/yaFiQb51y7Q1c+Z6xWLxk322rfy3WhU3DYiFL2sJndrDvAhmso122Z
+xVADA0cQwo520MgFYpHNBF8BcFV2IRukzVX+/nVkki05XcwfbI2y6gqCRpOSXdE9
+gCDVan3tSRbtrwKu7IHy88mL6057o82Uezpl0KesoCwb4f5oqs2vThUmXKuxu8GO
+WpZNK4JFWnTgDOJrubZvKxzzL9E85DS9aXLk6dNKBJVKPCETnYw+2ArMgXzs+JuA
+C4AhV0e6unLX9DcavZ6j7JcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAJJWqVuQs
+guFZG/LZPeeh1WtZr9S6R5BT4+b+PH2teVyGtClXV6KpwcLNEVWzY3qPtrFFPQI1
+uEg6cY8w1JOiCmj/IWKsiHd+IdsqsFVKL+Bmvthm3HSgA6p6ZiVCG4E67p8xwiJP
+p5EwtMM/7BdS/tHLUOe1OpNZ8XtHRVUNbzy/+JV0So7WLP9ksGb6COL/9MF0/qG4
+4XrrvpZ9FAgRC9/22QyYiQqoaegGEy4E+KHOBxRmipInsU2H8aQA2sZzQ49Zew9E
+QI2jSJTC7EeuZ0OcZawKkJY1ZtIGmOo/Q956keOLdG8cxyq6pXW3gmq1X5QBxy1M
+pZYi5eIENGE63g==
+-----END CERTIFICATE-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server_bkup.csr
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server_bkup.csr b/thirdparty/civetweb-1.10/resources/cert/server_bkup.csr
new file mode 100644
index 0000000..c866b57
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server_bkup.csr
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICijCCAXICAQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
+ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAKTJr3PzWOR1Hrjfk9bBA7TptI1hNYVn/Xvi2GSf
+erhJaWg69b2Li4t5/JxElESR8fy0lBMzQ/yaFiQb51y7Q1c+Z6xWLxk322rfy3Wh
+U3DYiFL2sJndrDvAhmso122ZxVADA0cQwo520MgFYpHNBF8BcFV2IRukzVX+/nVk
+ki05XcwfbI2y6gqCRpOSXdE9gCDVan3tSRbtrwKu7IHy88mL6057o82Uezpl0Kes
+oCwb4f5oqs2vThUmXKuxu8GOWpZNK4JFWnTgDOJrubZvKxzzL9E85DS9aXLk6dNK
+BJVKPCETnYw+2ArMgXzs+JuAC4AhV0e6unLX9DcavZ6j7JcCAwEAAaAAMA0GCSqG
+SIb3DQEBCwUAA4IBAQBvbql7sAA8XOwsszRUzOCLkFxfDsWJ0l5re2mGgHTEd5hc
+eDfM+Vdy8SVZX9OySdioVD6ACTse3rc1ULYn8jj1wvOd3/z/J9aUBcBACJG5D1Dl
++j+xvfhvgAGCEQn7ZMaWLFWrLs++aQ+EKbl0SypEI2rTJkyZlYSDVpa+LhqX4UOa
++RNlq1CX+85HCjBn0sWBNzhjrf3gwERRn5NfTab4FqwqGp2+s4GvbOJHrm8saMWu
+BlhcTzGGLBRKCQUHo5i9393b3oBOqtcpWPcZGhyAF1NUbYL7USnsiH6lkGReeaFi
+xy7vYmUn9j//vT64SmASG0oF+ecUF0q2W42sSqnU
+-----END CERTIFICATE REQUEST-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server_bkup.key
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server_bkup.key b/thirdparty/civetweb-1.10/resources/cert/server_bkup.key
new file mode 100644
index 0000000..235c83a
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server_bkup.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEApMmvc/NY5HUeuN+T1sEDtOm0jWE1hWf9e+LYZJ96uElpaDr1
+vYuLi3n8nESURJHx/LSUEzND/JoWJBvnXLtDVz5nrFYvGTfbat/LdaFTcNiIUvaw
+md2sO8CGayjXbZnFUAMDRxDCjnbQyAVikc0EXwFwVXYhG6TNVf7+dWSSLTldzB9s
+jbLqCoJGk5Jd0T2AINVqfe1JFu2vAq7sgfLzyYvrTnujzZR7OmXQp6ygLBvh/miq
+za9OFSZcq7G7wY5alk0rgkVadOAM4mu5tm8rHPMv0TzkNL1pcuTp00oElUo8IROd
+jD7YCsyBfOz4m4ALgCFXR7q6ctf0Nxq9nqPslwIDAQABAoIBAE/B7lHIrnWk2kHQ
+tNV0hj7B/smPC0COnHmhyeqp5dPcdFAmeVpMeDYBzOo1py2pFd6h6CmC3p0cVysS
+9mBDosxPQA6BiDpEdsa7mtZMRv6PTywYilFuoTYqcOTc16gMjRu02ZlD22boyxSE
+xria6kqxf5Vdn5ipo1jEGpTnIHkSS+Y8CetCaYgcezLaXlXN3RyjF6tCHMeS3iLl
+/zY2O4avG2BM+vvDGDW2FWtZg+hN+5Yk90Qt8dFTwvWRCfYaSWfi7id91p5X0rnL
+x1G07qw18LziKJj4HZiueqbDcDOYhfcA6sd0OHcvtXfGIoeqkXxi54cIOReRhN2/
+7ib3iUECgYEA2DNH5aiwc5uqTAL9RHTnuuFwQe46onJwnBkho+xEvvdsp2Q2f7VR
+c5M17fL+Rb5gq0O4vzeegKiYpo8gKjFp3Duv9Gdc/TB9sLEEt4NQMD4shV7ihBwC
+Rjsflww45dt0mccFZp1ncDYKWHDFzdhO+WB828FPFh/5dl6S+v4Q9bUCgYEAwx+G
+XhheTMSqoKGVJ283+4bNZWUSE99wcAhx9J3FkJera030mh0OHoCn0myBjRjxOSY/
+eBH8/0YoLkGYvTdEU/tYiLIWJ/ehC0eweXiwDehb5meco6u9WCeYvyPMLErXbe3K
+BQVyfcFzva4eC3dZ7lzxmyVyKXVTYgY0Hf7biJsCgYBKHdJg/eJ3z36jDkdK55Tl
+cRFt2MCLHhZSvR7WNlIe8W1zORyhzUP+DhJn32yh9jDnpZC5JNUWoDWsq9ZIAKac
+1G1uqNytA6mjIBxQ2RhtYXMbybp3ta5l6zDaNFtxGTmw2hSU6BMk2bHUPdzhw2zX
+eudy4qM9H3sCxEs49k5UHQKBgDz7I0FRGFehtznQhg73AWYIsTSZK9cuI7O/z+2F
+SXNxE0/L40AvCHSb/NcUtkBkpS8ZNwjNhmY5hOE/+v5XwXEFwpumHKqNB7XAx/SO
+tWcDUYVmqFu2lsxwQ5qpE2xcT4u5n0OGeku3I/cJ7bXjrSWDwracM1uloVOnYK5n
+MjE1AoGAeM6Wrb0VXRq025+OEfoFis3P9S0REkkkabM9+VLRSWi63uxg2cyipxUg
+qJUThbUm1aSS1F+XWjG7vrDjWT/GQTYj9/CH3mZRflZgLUltVHEZesLwWqn15Gl/
+BDwaV6RN7F3BCSzgEfCutrfGJqxA0tx5TTcupOgwpZVakN+hm3c=
+-----END RSA PRIVATE KEY-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server_bkup.pem
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server_bkup.pem b/thirdparty/civetweb-1.10/resources/cert/server_bkup.pem
new file mode 100644
index 0000000..a409c14
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server_bkup.pem
@@ -0,0 +1,46 @@
+-----BEGIN CERTIFICATE-----
+MIIDBjCCAe4CCQCFKfFGF1i10TANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJB
+VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMB4XDTE3MDkwMzE5MjI1MVoXDTI3MDkwMTE5MjI1MVowRTELMAkG
+A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
+IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+AKTJr3PzWOR1Hrjfk9bBA7TptI1hNYVn/Xvi2GSferhJaWg69b2Li4t5/JxElESR
+8fy0lBMzQ/yaFiQb51y7Q1c+Z6xWLxk322rfy3WhU3DYiFL2sJndrDvAhmso122Z
+xVADA0cQwo520MgFYpHNBF8BcFV2IRukzVX+/nVkki05XcwfbI2y6gqCRpOSXdE9
+gCDVan3tSRbtrwKu7IHy88mL6057o82Uezpl0KesoCwb4f5oqs2vThUmXKuxu8GO
+WpZNK4JFWnTgDOJrubZvKxzzL9E85DS9aXLk6dNKBJVKPCETnYw+2ArMgXzs+JuA
+C4AhV0e6unLX9DcavZ6j7JcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAJJWqVuQs
+guFZG/LZPeeh1WtZr9S6R5BT4+b+PH2teVyGtClXV6KpwcLNEVWzY3qPtrFFPQI1
+uEg6cY8w1JOiCmj/IWKsiHd+IdsqsFVKL+Bmvthm3HSgA6p6ZiVCG4E67p8xwiJP
+p5EwtMM/7BdS/tHLUOe1OpNZ8XtHRVUNbzy/+JV0So7WLP9ksGb6COL/9MF0/qG4
+4XrrvpZ9FAgRC9/22QyYiQqoaegGEy4E+KHOBxRmipInsU2H8aQA2sZzQ49Zew9E
+QI2jSJTC7EeuZ0OcZawKkJY1ZtIGmOo/Q956keOLdG8cxyq6pXW3gmq1X5QBxy1M
+pZYi5eIENGE63g==
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEApMmvc/NY5HUeuN+T1sEDtOm0jWE1hWf9e+LYZJ96uElpaDr1
+vYuLi3n8nESURJHx/LSUEzND/JoWJBvnXLtDVz5nrFYvGTfbat/LdaFTcNiIUvaw
+md2sO8CGayjXbZnFUAMDRxDCjnbQyAVikc0EXwFwVXYhG6TNVf7+dWSSLTldzB9s
+jbLqCoJGk5Jd0T2AINVqfe1JFu2vAq7sgfLzyYvrTnujzZR7OmXQp6ygLBvh/miq
+za9OFSZcq7G7wY5alk0rgkVadOAM4mu5tm8rHPMv0TzkNL1pcuTp00oElUo8IROd
+jD7YCsyBfOz4m4ALgCFXR7q6ctf0Nxq9nqPslwIDAQABAoIBAE/B7lHIrnWk2kHQ
+tNV0hj7B/smPC0COnHmhyeqp5dPcdFAmeVpMeDYBzOo1py2pFd6h6CmC3p0cVysS
+9mBDosxPQA6BiDpEdsa7mtZMRv6PTywYilFuoTYqcOTc16gMjRu02ZlD22boyxSE
+xria6kqxf5Vdn5ipo1jEGpTnIHkSS+Y8CetCaYgcezLaXlXN3RyjF6tCHMeS3iLl
+/zY2O4avG2BM+vvDGDW2FWtZg+hN+5Yk90Qt8dFTwvWRCfYaSWfi7id91p5X0rnL
+x1G07qw18LziKJj4HZiueqbDcDOYhfcA6sd0OHcvtXfGIoeqkXxi54cIOReRhN2/
+7ib3iUECgYEA2DNH5aiwc5uqTAL9RHTnuuFwQe46onJwnBkho+xEvvdsp2Q2f7VR
+c5M17fL+Rb5gq0O4vzeegKiYpo8gKjFp3Duv9Gdc/TB9sLEEt4NQMD4shV7ihBwC
+Rjsflww45dt0mccFZp1ncDYKWHDFzdhO+WB828FPFh/5dl6S+v4Q9bUCgYEAwx+G
+XhheTMSqoKGVJ283+4bNZWUSE99wcAhx9J3FkJera030mh0OHoCn0myBjRjxOSY/
+eBH8/0YoLkGYvTdEU/tYiLIWJ/ehC0eweXiwDehb5meco6u9WCeYvyPMLErXbe3K
+BQVyfcFzva4eC3dZ7lzxmyVyKXVTYgY0Hf7biJsCgYBKHdJg/eJ3z36jDkdK55Tl
+cRFt2MCLHhZSvR7WNlIe8W1zORyhzUP+DhJn32yh9jDnpZC5JNUWoDWsq9ZIAKac
+1G1uqNytA6mjIBxQ2RhtYXMbybp3ta5l6zDaNFtxGTmw2hSU6BMk2bHUPdzhw2zX
+eudy4qM9H3sCxEs49k5UHQKBgDz7I0FRGFehtznQhg73AWYIsTSZK9cuI7O/z+2F
+SXNxE0/L40AvCHSb/NcUtkBkpS8ZNwjNhmY5hOE/+v5XwXEFwpumHKqNB7XAx/SO
+tWcDUYVmqFu2lsxwQ5qpE2xcT4u5n0OGeku3I/cJ7bXjrSWDwracM1uloVOnYK5n
+MjE1AoGAeM6Wrb0VXRq025+OEfoFis3P9S0REkkkabM9+VLRSWi63uxg2cyipxUg
+qJUThbUm1aSS1F+XWjG7vrDjWT/GQTYj9/CH3mZRflZgLUltVHEZesLwWqn15Gl/
+BDwaV6RN7F3BCSzgEfCutrfGJqxA0tx5TTcupOgwpZVakN+hm3c=
+-----END RSA PRIVATE KEY-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/cert/server_bkup.pin
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/cert/server_bkup.pin b/thirdparty/civetweb-1.10/resources/cert/server_bkup.pin
new file mode 100644
index 0000000..0e05612
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/cert/server_bkup.pin
@@ -0,0 +1 @@
+pf3px1MBPmlTGAPoiHWqaSJ9L9Z+DKfwgsU7LfLnmsk=
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb.conf
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb.conf b/thirdparty/civetweb-1.10/resources/civetweb.conf
new file mode 100644
index 0000000..00aacde
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/civetweb.conf
@@ -0,0 +1,32 @@
+# Civetweb web server configuration file.
+# For detailed description of every option, visit
+# https://github.com/civetweb/civetweb/blob/master/docs/UserManual.md
+# Lines starting with '#' and empty lines are ignored.
+# To make a change, remove leading '#', modify option's value,
+# save this file and then restart Civetweb.
+
+document_root .
+listening_ports 8080
+
+# cgi_pattern **.cgi$|**.pl$|**.php$
+# cgi_environment
+# put_delete_auth_file
+# cgi_interpreter
+# protect_uri
+# authentication_domain mydomain.com
+# ssi_pattern **.shtml$|**.shtm$
+# throttle
+# access_log_file
+# enable_directory_listing yes
+# error_log_file
+# global_auth_file
+# index_files index.html,index.htm,index.cgi,index.shtml,index.php,index.lp
+# enable_keep_alive no
+# access_control_list
+# extra_mime_types
+# ssl_certificate
+# num_threads 50
+# run_as_user
+# url_rewrite_patterns
+# hide_files_patterns
+# request_timeout_ms 30000
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb.icns
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb.icns b/thirdparty/civetweb-1.10/resources/civetweb.icns
new file mode 100644
index 0000000..af1f121
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb.icns differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb.psd
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb.psd b/thirdparty/civetweb-1.10/resources/civetweb.psd
new file mode 100644
index 0000000..accbe31
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb.psd differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb_16x16.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb_16x16.png b/thirdparty/civetweb-1.10/resources/civetweb_16x16.png
new file mode 100644
index 0000000..10ea1d2
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb_16x16.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb_16x16@2.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb_16x16@2.png b/thirdparty/civetweb-1.10/resources/civetweb_16x16@2.png
new file mode 100644
index 0000000..7621fb1
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb_16x16@2.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb_22x22.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb_22x22.png b/thirdparty/civetweb-1.10/resources/civetweb_22x22.png
new file mode 100644
index 0000000..f0b9094
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb_22x22.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb_22x22@2.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb_22x22@2.png b/thirdparty/civetweb-1.10/resources/civetweb_22x22@2.png
new file mode 100644
index 0000000..bdb3614
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb_22x22@2.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb_32x32.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb_32x32.png b/thirdparty/civetweb-1.10/resources/civetweb_32x32.png
new file mode 100644
index 0000000..62471e3
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb_32x32.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb_32x32@2.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb_32x32@2.png b/thirdparty/civetweb-1.10/resources/civetweb_32x32@2.png
new file mode 100644
index 0000000..e192a45
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb_32x32@2.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb_64x64.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb_64x64.png b/thirdparty/civetweb-1.10/resources/civetweb_64x64.png
new file mode 100644
index 0000000..bc8b995
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb_64x64.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/civetweb_64x64@2.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/civetweb_64x64@2.png b/thirdparty/civetweb-1.10/resources/civetweb_64x64@2.png
new file mode 100644
index 0000000..d6ad7b4
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/civetweb_64x64@2.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/coverity_check.sh
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/coverity_check.sh b/thirdparty/civetweb-1.10/resources/coverity_check.sh
new file mode 100755
index 0000000..063d7c8
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/coverity_check.sh
@@ -0,0 +1,60 @@
+#! /bin/sh
+
+# check if we use the correct directory
+ls src/civetweb.c
+if [ "$?" = "0" ]; then
+ echo "Building files for coverity check ..."
+else
+ echo "Run this script from the root directory of project!" 1>&2
+ echo "username@hostname:/somewhere/civetweb$ ./resources/coverity_check.sh" 1>&2
+ exit 1
+fi
+
+# remove last build
+rm -rf cov_build/
+
+# copy files to build folder
+mkdir cov_build
+mkdir cov_build/src
+mkdir cov_build/include
+mkdir cov_build/resources
+
+cp Makefile cov_build/
+cp src/*.c cov_build/src/
+cp src/*.inl cov_build/src/
+cp include/civetweb.h cov_build/include/
+cp resources/Makefile.in-os cov_build/resources/
+
+cd cov_build
+
+# new scan build
+../../cov-analysis-linux64-8.7.0/bin/cov-build --dir cov-int make WITH_IPV6=1 WITH_WEBSOCKET=1 WITH_SERVER_STATS=1
+
+
+# pack build results for upload
+tar czvf civetweb_coverity_check.tgz cov-int
+
+cd ..
+
+# check if the build was successful
+echo
+ls -la cov_build/civetweb_coverity_check.tgz
+
+if [ "$?" = "0" ]; then
+ echo "... done"
+ echo
+ echo "submit to https://scan.coverity.com/projects/bel2125-civetweb"
+ echo
+ echo "last commit was"
+ git log -n 1
+ echo
+ echo
+else
+ echo "No civetweb_coverity_check.tgz file" 1>&2
+ echo
+ exit 1
+fi
+
+# return "ok"
+exit 0
+
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/duktape-logo.png
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/duktape-logo.png b/thirdparty/civetweb-1.10/resources/duktape-logo.png
new file mode 100644
index 0000000..afdc0f8
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/duktape-logo.png differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/itworks.html
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/itworks.html b/thirdparty/civetweb-1.10/resources/itworks.html
new file mode 100644
index 0000000..cba3bad
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/itworks.html
@@ -0,0 +1,23 @@
+<html>
+<head>
+<title>Civetweb: It Works!</title>
+</head>
+<body>
+<div style="float:right; width:100%; text-align:center;">
+</div>
+<div style="float:left; height:50%; margin-bottom:-200px;"></div>
+<div style="clear:both; height:400px; width:400px; margin: auto; position:relative;">
+<img src="civetweb_64x64.png" alt="logo"/>
+<p>
+<b style="font-size:larger"><a style="text-decoration:none" href="https://sourceforge.net/projects/civetweb/">Civetweb</a></b><br>
+<i>Your web server</i>
+<ul>
+<li><a href="https://github.com/civetweb/civetweb/blob/master/docs/UserManual.md">User Manual</a></li>
+<li><a href="https://github.com/civetweb/civetweb/blob/master/RELEASE_NOTES.md">Release Notes</a></li>
+<li><a href="https://sourceforge.net/projects/civetweb/">Downloads</a></li>
+<li><a href="https://github.com/civetweb/civetweb">GitHub</a></li>
+</ul>
+</p>
+</div>
+</body>
+</html>
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/jni/Android.mk
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/jni/Android.mk b/thirdparty/civetweb-1.10/resources/jni/Android.mk
new file mode 100644
index 0000000..f24981a
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/jni/Android.mk
@@ -0,0 +1,6 @@
+LOCAL_PATH := $(call my-dir)/../..
+include $(CLEAR_VARS)
+LOCAL_CFLAGS := -std=c99 -O2 -W -Wall -pthread -pipe $(COPT)
+LOCAL_MODULE := civetweb
+LOCAL_SRC_FILES := src\main.c src\civetweb.c
+include $(BUILD_EXECUTABLE)
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/lua-logo.jpg
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/lua-logo.jpg b/thirdparty/civetweb-1.10/resources/lua-logo.jpg
new file mode 100644
index 0000000..67de666
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/lua-logo.jpg differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/luafilesystem-logo.jpg
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/luafilesystem-logo.jpg b/thirdparty/civetweb-1.10/resources/luafilesystem-logo.jpg
new file mode 100644
index 0000000..4a2e855
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/luafilesystem-logo.jpg differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/luasqlite-logo.jpg
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/luasqlite-logo.jpg b/thirdparty/civetweb-1.10/resources/luasqlite-logo.jpg
new file mode 100644
index 0000000..9388126
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/luasqlite-logo.jpg differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/luaxml-logo.jpg
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/luaxml-logo.jpg b/thirdparty/civetweb-1.10/resources/luaxml-logo.jpg
new file mode 100644
index 0000000..9916f6e
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/luaxml-logo.jpg differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/mingw.bat
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/mingw.bat b/thirdparty/civetweb-1.10/resources/mingw.bat
new file mode 100644
index 0000000..8703266
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/mingw.bat
@@ -0,0 +1,15 @@
+@rem MinGW build test - used to test MinGW builds locally
+@rem Adapt path/versions before use
+
+@rem This batch file must be used from the repository root
+@if exist mingw.bat cd ..
+
+
+@set PATH=%ProgramFiles%\mingw-w64\i686-4.9.2-win32-dwarf-rt_v3-rev1\mingw32\bin;%PATH%
+@set PATH=%ProgramFiles%\GnuWin32\bin;%PATH%
+
+@rem Alternative ways to use mingw
+@rem make CC=gcc CFLAGS=-w CFLAGS+=-Iinclude/ CFLAGS+=-lws2_32 CFLAGS+=-liphlpapi
+@rem gcc src\civetweb.c src\main.c -Iinclude\ -lws2_32 -lpthread -lcomdlg32 -w
+
+make build CC=gcc WITH_LUA=1 WITH_WEBSOCKET=1
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/res.rc
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/res.rc b/thirdparty/civetweb-1.10/resources/res.rc
new file mode 100644
index 0000000..38a80bb
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/res.rc
@@ -0,0 +1 @@
+100 ICON DISCARDABLE "systray.ico"
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/sqlite3-logo.jpg
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/sqlite3-logo.jpg b/thirdparty/civetweb-1.10/resources/sqlite3-logo.jpg
new file mode 100644
index 0000000..14b01df
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/sqlite3-logo.jpg differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/ssl_cert.pem
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/ssl_cert.pem b/thirdparty/civetweb-1.10/resources/ssl_cert.pem
new file mode 100644
index 0000000..f7e15a0
--- /dev/null
+++ b/thirdparty/civetweb-1.10/resources/ssl_cert.pem
@@ -0,0 +1,50 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEAwONaLOP7EdegqjRuQKSDXzvHmFMZfBufjhELhNjo5KsL4ieH
+hMSGCcSV6y32hzhqR5lvTViaQez+xhc58NZRu+OUgEhodRBW/vAOjpz/xdMz5HaC
+EhP3E9W1pkitVseS8B5rrgJo1BfCGai1fPav1nutPq2Kj7vMy24+g460Lonf6ln1
+di4aTIRtAqXtUU6RFpPJP35PkCXbTK65O8HJSxxt/XtfoezHCU5+UIwmZGYx46UB
+Wzg3IfK6bGPSiHU3pdiTol0uMPt/GUK+x4NyZJ4/ImsNAicRwMBdja4ywHKXJehH
+gXBthsVIHbL21x+4ibsg9eVM/XioTV6tW3IrdwIDAQABAoIBACFfdLutmkQFBcRN
+HAJNNHmmsyr0vcUOVnXTFyYeDXV67qxrYHQlOHe6LqIpKq1Mon7O2kYMnWvooFAP
+trOnsS6L+qaTYJdYg2TKjgo4ubw1hZXytyB/mdExuaMSkgMgtpia+tB5lD+V+LxN
+x1DesZ+veFMO3Zluyckswt4qM5yVa04YFrt31H0E1rJfIen61lidXIKYmHHWuRxK
+SadjFfbcqJ6P9ZF22BOkleg5Fm5NaxJmyQynOWaAkSZa5w1XySFfRjRfsbDr64G6
++LSG8YtRuvfxnvUNhynVPHcpE40eiPo6v8Ho6yZKXpV5klCKciodXAORsswSoGJa
+N3nnu/ECgYEA6Yb2rM3QUEPIALdL8f/OzZ1GBSdiQB2WSAxzl9pR/dLF2H+0pitS
+to0830mk92ppVmRVD3JGxYDRZQ56tlFXyGaCzJBMRIcsotAhBoNbjV0i9n5bLJYf
+BmjU9yvWcgsTt0tr3B0FrtYyp2tCvwHqlxvFpFdUCj2oRw2uGpkhmNkCgYEA03M6
+WxFhsix3y6eVCVvShfbLBSOqp8l0qiTEty+dgVQcWN4CO/5eyaZXKxlCG9KMmKxy
+Yx+YgxZrDhfaZ0cxhHGPRKEAxM3IKwT2C8/wCaSiLWXZZpTifnSD99vtOt4wEfrG
++AghNd5kamFiM9tU0AyvhJc2vdJFuXrfeC7ntM8CgYBGDA+t4cZcbRhu7ow/OKYF
+kulP3nJgHP/Y+LMrl3cEldZ2jEfZmCElVNQvfd2XwTl7injhOzvzPiKRF3jDez7D
+g8w0JAxceddvttJRK9GoY4l7OoeKpjUELSnEQkf+yUfOsTbXPXVY7jMfeNL6jE6b
+qN7t3qv8rmXtejMBE3G6cQKBgGR5W2BMiRSlxqKx1cKlrApV87BUe1HRCyuR3xuA
+d6Item7Lx1oEi7vb242yKdSYnpApWQ06xTh83Y/Ly87JaIEbiM0+h+P8OEIg0F1a
+iB+86AcUX1I8KseVy+Np0HbpfwP8GrFfA5DaRPK7pXMopEtby8cAJ1XZZaI1/ZvZ
+BebHAoGAcQU9WvCkT+nIp9FpXfBybYUsvgkaizMIqp66/l3GYgYAq8p1VLGvN4v5
+ec0dW58SJrCpqsM3NP78DtEzQf9OOsk+FsjBFzDU2RkeUreyt2/nQBj/2mN/+hEy
+hYN0Zii2yTb63jGxKY6gH1R/r9dL8kXaJmcZrfSa3AgywnteJWg=
+-----END RSA PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIDBjCCAe4CCQCX05m0b053QzANBgkqhkiG9w0BAQQFADBFMQswCQYDVQQGEwJB
+VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0
+cyBQdHkgTHRkMB4XDTA4MTIwNzEwMjUyMloXDTE4MTIwNTEwMjUyMlowRTELMAkG
+A1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0
+IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+AMDjWizj+xHXoKo0bkCkg187x5hTGXwbn44RC4TY6OSrC+Inh4TEhgnElest9oc4
+akeZb01YmkHs/sYXOfDWUbvjlIBIaHUQVv7wDo6c/8XTM+R2ghIT9xPVtaZIrVbH
+kvAea64CaNQXwhmotXz2r9Z7rT6tio+7zMtuPoOOtC6J3+pZ9XYuGkyEbQKl7VFO
+kRaTyT9+T5Al20yuuTvByUscbf17X6HsxwlOflCMJmRmMeOlAVs4NyHyumxj0oh1
+N6XYk6JdLjD7fxlCvseDcmSePyJrDQInEcDAXY2uMsBylyXoR4FwbYbFSB2y9tcf
+uIm7IPXlTP14qE1erVtyK3cCAwEAATANBgkqhkiG9w0BAQQFAAOCAQEAW4yZdqpB
+oIdiuXRosr86Sg9FiMg/cn+2OwQ0QIaA8ZBwKsc+wIIHEgXCS8J6316BGQeUvMD+
+plNe0r4GWzzmlDMdobeQ5arPRB89qd9skE6pAMdLg3FyyfEjz3A0VpskolW5VBMr
+P5R7uJ1FLgH12RyAjZCWYcCRqEMOffqvyMCH6oAjyDmQOA5IssRKX/HsHntSH/HW
+W7slTcP45ty1b44Nq22/ubYk0CJRQgqKOIQ3cLgPomN1jNFQbAbfVTaK1DpEysrQ
+5V8a8gNW+3sVZmV6d1Mj3pN2Le62wUKuV2g6BNU7iiwcoY8HI68aRxz2hVMS+t5f
+SEGI4JSxV56lYg==
+-----END CERTIFICATE-----
+-----BEGIN DH PARAMETERS-----
+MEYCQQD+ef8hZ4XbdoyIpJyCTF2UrUEfX6mYDvxuS5O1UNYcslUqlj6JkA11e/yS
+6DK8Z86W6mSj5CEk4IjbyEOECXH7AgEC
+-----END DH PARAMETERS-----
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/resources/systray.ico
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/resources/systray.ico b/thirdparty/civetweb-1.10/resources/systray.ico
new file mode 100644
index 0000000..380c0ee
Binary files /dev/null and b/thirdparty/civetweb-1.10/resources/systray.ico differ
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/CMakeLists.txt b/thirdparty/civetweb-1.10/src/CMakeLists.txt
new file mode 100644
index 0000000..a0528b2
--- /dev/null
+++ b/thirdparty/civetweb-1.10/src/CMakeLists.txt
@@ -0,0 +1,297 @@
+# The C API library
+add_library(c-library civetweb.c)
+set_target_properties(c-library PROPERTIES
+ OUTPUT_NAME "civetweb"
+ VERSION ${CIVETWEB_VERSION}
+ SOVERSION ${CIVETWEB_VERSION}
+)
+if (BUILD_SHARED_LIBS)
+ target_compile_definitions(c-library PRIVATE CIVETWEB_DLL_EXPORTS)
+endif()
+target_include_directories(
+ c-library PUBLIC
+ ${PROJECT_SOURCE_DIR}/include)
+install(
+ TARGETS c-library
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin
+ COMPONENT c-library)
+install(FILES
+ ${PROJECT_SOURCE_DIR}/include/civetweb.h
+ DESTINATION include
+ COMPONENT c-library)
+
+# Need Windows sockets if available
+find_package(WinSock)
+if (WINSOCK_FOUND)
+ target_link_libraries(c-library WINSOCK::WINSOCK)
+endif()
+
+# We need threading
+find_package(Threads)
+target_link_libraries(c-library ${CMAKE_THREAD_LIBS_INIT})
+
+# Need the realtime library if we're using timers
+find_package(LibRt)
+if (CIVETWEB_ENABLE_WEBSOCKETS AND CIVETWEB_ENABLE_LUA AND LIBRT_FOUND)
+ target_link_libraries(c-library LIBRT::LIBRT)
+endif()
+
+# We need to link OpenSSL if not dynamically loading
+if (CIVETWEB_ENABLE_SSL)
+ if (CIVETWEB_ENABLE_SSL_DYNAMIC_LOADING)
+ find_package(LibDl)
+ if (LIBDL_FOUND)
+ target_link_libraries(c-library -ldl)
+ endif()
+ else()
+ find_package(OpenSSL)
+ include_directories(${OPENSSL_INCLUDE_DIR})
+ message(STATUS "OpenSSL include directory: ${OPENSSL_INCLUDE_DIR}")
+ target_link_libraries(c-library ${OPENSSL_LIBRARIES})
+ endif()
+endif()
+
+# If Lua support is needed we build some extra Lua libraries
+if (CIVETWEB_ENABLE_LUA)
+ include(ExternalProject)
+
+ # Determine if we should print to the output
+ if (CIVETWEB_ENABLE_THIRD_PARTY_OUTPUT)
+ set(THIRD_PARTY_LOGGING 0)
+ else()
+ set(THIRD_PARTY_LOGGING 1)
+ endif()
+
+ # If Lua is static we must build it from source
+ if (NOT CIVETWEB_ENABLE_LUA_SHARED)
+ if (LINUX)
+ set(LUA_MAKE_TARGET linux)
+ elseif(DARWIN)
+ set(LUA_MAKE_TARGET macosx)
+ elseif(FREEBSD)
+ set(LUA_MAKE_TARGET freebsd)
+ elseif(WINDOWS)
+ set(LUA_MAKE_TARGET mingw)
+ elseif(UNIX)
+ set(LUA_MAKE_TARGET posix)
+ else()
+ set(LUA_MAKE_TARGET generic)
+ endif()
+ set(LUA_BUILD_COMMAND "${CMAKE_MAKE_PROGRAM};${LUA_MAKE_TARGET}")
+ if (BUILD_SHARED_LIBS)
+ set(LUA_BUILD_COMMAND "${LUA_BUILD_COMMAND};MYCFLAGS=-fPIC")
+ endif()
+ ExternalProject_Add(lua
+ URL "http://www.lua.org/ftp/lua-${CIVETWEB_LUA_VERSION}.tar.gz"
+ URL_MD5 ${CIVETWEB_LUA_MD5_HASH}
+ PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ${LUA_BUILD_COMMAND}
+ BUILD_IN_SOURCE 1
+ INSTALL_COMMAND make install "INSTALL_TOP=<INSTALL_DIR>"
+ LOG_DOWNLOAD ${THIRD_PARTY_LOGGING}
+ LOG_UPDATE ${THIRD_PARTY_LOGGING}
+ LOG_CONFIGURE ${THIRD_PARTY_LOGGING}
+ LOG_BUILD ${THIRD_PARTY_LOGGING}
+ LOG_TEST ${THIRD_PARTY_LOGGING}
+ LOG_INSTALL ${THIRD_PARTY_LOGGING})
+ ExternalProject_Get_Property(lua INSTALL_DIR)
+ set(LUA_INSTALL_DIR ${INSTALL_DIR})
+ unset(INSTALL_DIR)
+ link_directories("${LUA_INSTALL_DIR}/lib")
+ include_directories("${LUA_INSTALL_DIR}/include")
+ set(LUA_LIBRARIES "${LUA_INSTALL_DIR}/lib/liblua.a")
+ add_dependencies(c-library lua)
+ else()
+ find_package(Lua)
+ endif()
+
+ # Lua Filesystem Support
+ string(REPLACE "." "_" LUA_FILESYSTEM_VERSION_UNDERSCORE ${CIVETWEB_LUA_FILESYSTEM_VERSION})
+ ExternalProject_Add(luafilesystem
+ URL "https://github.com/keplerproject/luafilesystem/archive/v_${LUA_FILESYSTEM_VERSION_UNDERSCORE}.tar.gz"
+ URL_MD5 ${CIVETWEB_LUA_FILESYSTEM_MD5_HASH}
+ PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
+ PATCH_COMMAND ${CMAKE_COMMAND} -E copy
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/luafilesystem/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
+ CMAKE_ARGS
+ "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ LOG_DOWNLOAD ${THIRD_PARTY_LOGGING}
+ LOG_UPDATE ${THIRD_PARTY_LOGGING}
+ LOG_CONFIGURE ${THIRD_PARTY_LOGGING}
+ LOG_BUILD ${THIRD_PARTY_LOGGING}
+ LOG_TEST ${THIRD_PARTY_LOGGING}
+ LOG_INSTALL ${THIRD_PARTY_LOGGING})
+ ExternalProject_Get_Property(luafilesystem INSTALL_DIR)
+ set(LUA_FILESYSTEM_INSTALL_DIR ${INSTALL_DIR})
+ unset(INSTALL_DIR)
+ link_directories("${LUA_FILESYSTEM_INSTALL_DIR}/lib")
+ include_directories("${LUA_FILESYSTEM_INSTALL_DIR}/include")
+ set(LUA_LIBRARIES "${LUA_LIBRARIES};${LUA_FILESYSTEM_INSTALL_DIR}/lib/libluafilesystem.a")
+ add_dependencies(c-library luafilesystem)
+
+ # Lua SQLite Support
+ if (${CIVETWEB_LUA_SQLITE_VERSION} VERSION_EQUAL "0.9.3")
+ set(LUA_SQLITE_FILENAME lsqlite3_fsl09w.zip)
+ elseif (${CIVETWEB_LUA_SQLITE_VERSION} VERSION_EQUAL "0.9.2")
+ set(LUA_SQLITE_FILENAME lsqlite3_fsl09v.zip)
+ elseif (${CIVETWEB_LUA_SQLITE_VERSION} VERSION_EQUAL "0.9.1")
+ set(LUA_SQLITE_FILENAME lsqlite3_fsl09t.zip)
+ else()
+ message(FATAL_ERROR "The Lua SQLite archive filename is unknown for version ${CIVETWEB_LUA_SQLITE_VERSION}")
+ endif()
+ ExternalProject_Add(luasqlite
+ URL "http://lua.sqlite.org/index.cgi/zip/${LUA_SQLITE_FILENAME}"
+ URL_MD5 ${CIVETWEB_LUA_SQLITE_MD5_HASH}
+ PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
+ PATCH_COMMAND ${CMAKE_COMMAND} -E copy
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/luasqlite/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
+ CMAKE_ARGS
+ "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ LOG_DOWNLOAD ${THIRD_PARTY_LOGGING}
+ LOG_UPDATE ${THIRD_PARTY_LOGGING}
+ LOG_CONFIGURE ${THIRD_PARTY_LOGGING}
+ LOG_BUILD ${THIRD_PARTY_LOGGING}
+ LOG_TEST ${THIRD_PARTY_LOGGING}
+ LOG_INSTALL ${THIRD_PARTY_LOGGING})
+ ExternalProject_Get_Property(luasqlite INSTALL_DIR)
+ set(LUA_SQLITE_INSTALL_DIR ${INSTALL_DIR})
+ unset(INSTALL_DIR)
+ link_directories("${LUA_SQLITE_INSTALL_DIR}/lib")
+ set(LUA_LIBRARIES "${LUA_LIBRARIES};${LUA_SQLITE_INSTALL_DIR}/lib/libluasqlite.a")
+ add_dependencies(c-library luasqlite)
+
+ # Lua XML Support
+ if (${CIVETWEB_LUA_XML_VERSION} VERSION_EQUAL "1.8.0")
+ set(LUA_XML_FILENAME LuaXML_130610.zip)
+ elseif (${CIVETWEB_LUA_XML_VERSION} VERSION_EQUAL "1.7.4")
+ set(LUA_XML_FILENAME LuaXML_101012.zip)
+ else()
+ message(FATAL_ERROR "The Lua XML archive filename is unknown for version ${CIVETWEB_LUA_XML_VERSION}")
+ endif()
+ ExternalProject_Add(luaxml
+ URL "http://viremo.eludi.net/LuaXML/${LUA_XML_FILENAME}"
+ URL_MD5 ${CIVETWEB_LUA_XML_MD5_HASH}
+ PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
+ PATCH_COMMAND ${CMAKE_COMMAND} -E copy
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/luaxml/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
+ CMAKE_ARGS
+ "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ LOG_DOWNLOAD ${THIRD_PARTY_LOGGING}
+ LOG_UPDATE ${THIRD_PARTY_LOGGING}
+ LOG_CONFIGURE ${THIRD_PARTY_LOGGING}
+ LOG_BUILD ${THIRD_PARTY_LOGGING}
+ LOG_TEST ${THIRD_PARTY_LOGGING}
+ LOG_INSTALL ${THIRD_PARTY_LOGGING})
+ ExternalProject_Get_Property(luaxml INSTALL_DIR)
+ set(LUA_XML_INSTALL_DIR ${INSTALL_DIR})
+ unset(INSTALL_DIR)
+ link_directories("${LUA_XML_INSTALL_DIR}/lib")
+ set(LUA_LIBRARIES "${LUA_LIBRARIES};${LUA_XML_INSTALL_DIR}/lib/libluaxml.a")
+ add_dependencies(c-library luaxml)
+
+ # SQLite Support
+ string (REGEX MATCHALL "[0-9]+" SQLITE_VERSION_MATCHES ${CIVETWEB_SQLITE_VERSION})
+ list(GET SQLITE_VERSION_MATCHES 0 SQLITE_VERSION_MAJOR)
+ list(GET SQLITE_VERSION_MATCHES 1 SQLITE_VERSION_MINOR)
+ list(GET SQLITE_VERSION_MATCHES 2 SQLITE_VERSION_PATCH)
+ set(SQLITE_FILE_VERSION ${SQLITE_VERSION_MAJOR}0${SQLITE_VERSION_MINOR}0${SQLITE_VERSION_PATCH}00)
+ ExternalProject_Add(sqlite
+ URL "http://www.sqlite.org/2015/sqlite-amalgamation-${SQLITE_FILE_VERSION}.zip"
+ URL_MD5 ${CIVETWEB_SQLITE_MD5_HASH}
+ PREFIX "${CIVETWEB_THIRD_PARTY_DIR}"
+ PATCH_COMMAND ${CMAKE_COMMAND} -E copy
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/sqlite/CMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
+ CMAKE_ARGS
+ "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}"
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ LOG_DOWNLOAD ${THIRD_PARTY_LOGGING}
+ LOG_UPDATE ${THIRD_PARTY_LOGGING}
+ LOG_CONFIGURE ${THIRD_PARTY_LOGGING}
+ LOG_BUILD ${THIRD_PARTY_LOGGING}
+ LOG_TEST ${THIRD_PARTY_LOGGING}
+ LOG_INSTALL ${THIRD_PARTY_LOGGING})
+ ExternalProject_Get_Property(sqlite INSTALL_DIR)
+ set(SQLITE_INSTALL_DIR ${INSTALL_DIR})
+ unset(INSTALL_DIR)
+ link_directories("${SQLITE_INSTALL_DIR}/lib")
+ include_directories("${SQLITE_INSTALL_DIR}/include")
+ set(LUA_LIBRARIES "${LUA_LIBRARIES};${SQLITE_INSTALL_DIR}/lib/libsqlite.a")
+ add_dependencies(c-library sqlite)
+
+ # Link all the Lua libraries
+ target_link_libraries(c-library ${LUA_LIBRARIES})
+endif()
+
+# The web server executable
+add_executable(c-executable main.c)
+set_target_properties(c-executable PROPERTIES
+ OUTPUT_NAME "civetweb"
+)
+if (CIVETWEB_INSTALL_EXECUTABLE)
+ install(
+ TARGETS c-executable
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin
+ COMPONENT server)
+endif()
+if (BUILD_SHARED_LIBS)
+ target_compile_definitions(c-executable PRIVATE CIVETWEB_DLL_IMPORTS)
+endif()
+target_include_directories(
+ c-executable PUBLIC
+ ${PROJECT_SOURCE_DIR}/include)
+target_link_libraries(c-executable c-library)
+if (LIBRT_FOUND)
+ target_link_libraries(c-executable LIBRT::LIBRT)
+endif()
+
+if (CIVETWEB_ENABLE_LUA)
+ add_library(lua-library third_party/lfs.c third_party/lsqlite3.c third_party/LuaXML_lib.c third_party/sqlite3.c)
+ set_target_properties(lua-library PROPERTIES
+ OUTPUT_NAME "lua-library"
+ VERSION ${CIVETWEB_VERSION}
+ SOVERSION ${CIVETWEB_VERSION}
+ )
+ target_include_directories(
+ lua-library PUBLIC
+ ${PROJECT_SOURCE_DIR}/src/third_party/lua-5.2.4)
+ install(
+ TARGETS lua-library
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin
+ COMPONENT lua-library)
+endif()
+
+# The C++ API library
+if (CIVETWEB_ENABLE_CXX)
+ add_library(civetweb-cpp CivetServer.cpp)
+ set_target_properties(civetweb-cpp PROPERTIES
+ OUTPUT_NAME "civetweb-cpp"
+ VERSION ${CIVETWEB_VERSION}
+ SOVERSION ${CIVETWEB_VERSION}
+ )
+ if (BUILD_SHARED_LIBS)
+ target_compile_definitions(civetweb-cpp PRIVATE CIVETWEB_DLL_EXPORTS)
+ endif()
+ target_include_directories(
+ civetweb-cpp PUBLIC
+ ${PROJECT_SOURCE_DIR}/include)
+ install(
+ TARGETS civetweb-cpp
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin
+ COMPONENT civetweb-cpp)
+ install(FILES
+ ${PROJECT_SOURCE_DIR}/include/CivetServer.h
+ DESTINATION include
+ COMPONENT civetweb-cpp)
+endif()
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/src/CivetServer.cpp
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.10/src/CivetServer.cpp b/thirdparty/civetweb-1.10/src/CivetServer.cpp
new file mode 100644
index 0000000..186f18b
--- /dev/null
+++ b/thirdparty/civetweb-1.10/src/CivetServer.cpp
@@ -0,0 +1,609 @@
+/* Copyright (c) 2013-2017 the Civetweb developers
+ * Copyright (c) 2013 No Face Press, LLC
+ *
+ * License http://opensource.org/licenses/mit-license.php MIT License
+ */
+
+#include "CivetServer.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <stdexcept>
+
+#ifndef UNUSED_PARAMETER
+#define UNUSED_PARAMETER(x) (void)(x)
+#endif
+
+bool
+CivetHandler::handleGet(CivetServer *server, struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return false;
+}
+
+bool
+CivetHandler::handlePost(CivetServer *server, struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return false;
+}
+
+bool
+CivetHandler::handleHead(CivetServer *server, struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return false;
+}
+
+bool
+CivetHandler::handlePut(CivetServer *server, struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return false;
+}
+
+bool
+CivetHandler::handlePatch(CivetServer *server, struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return false;
+}
+
+bool
+CivetHandler::handleDelete(CivetServer *server, struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return false;
+}
+
+bool
+CivetHandler::handleOptions(CivetServer *server, struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return false;
+}
+
+bool
+CivetWebSocketHandler::handleConnection(CivetServer *server,
+ const struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return true;
+}
+
+void
+CivetWebSocketHandler::handleReadyState(CivetServer *server,
+ struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return;
+}
+
+bool
+CivetWebSocketHandler::handleData(CivetServer *server,
+ struct mg_connection *conn,
+ int bits,
+ char *data,
+ size_t data_len)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ UNUSED_PARAMETER(bits);
+ UNUSED_PARAMETER(data);
+ UNUSED_PARAMETER(data_len);
+ return true;
+}
+
+void
+CivetWebSocketHandler::handleClose(CivetServer *server,
+ const struct mg_connection *conn)
+{
+ UNUSED_PARAMETER(server);
+ UNUSED_PARAMETER(conn);
+ return;
+}
+
+int
+CivetServer::requestHandler(struct mg_connection *conn, void *cbdata)
+{
+ const struct mg_request_info *request_info = mg_get_request_info(conn);
+ assert(request_info != NULL);
+ CivetServer *me = (CivetServer *)(request_info->user_data);
+ assert(me != NULL);
+
+ // Happens when a request hits the server before the context is saved
+ if (me->context == NULL)
+ return 0;
+
+ mg_lock_context(me->context);
+ me->connections[conn] = CivetConnection();
+ mg_unlock_context(me->context);
+
+ CivetHandler *handler = (CivetHandler *)cbdata;
+
+ if (handler) {
+ if (strcmp(request_info->request_method, "GET") == 0) {
+ return handler->handleGet(me, conn) ? 1 : 0;
+ } else if (strcmp(request_info->request_method, "POST") == 0) {
+ return handler->handlePost(me, conn) ? 1 : 0;
+ } else if (strcmp(request_info->request_method, "HEAD") == 0) {
+ return handler->handleHead(me, conn) ? 1 : 0;
+ } else if (strcmp(request_info->request_method, "PUT") == 0) {
+ return handler->handlePut(me, conn) ? 1 : 0;
+ } else if (strcmp(request_info->request_method, "DELETE") == 0) {
+ return handler->handleDelete(me, conn) ? 1 : 0;
+ } else if (strcmp(request_info->request_method, "OPTIONS") == 0) {
+ return handler->handleOptions(me, conn) ? 1 : 0;
+ } else if (strcmp(request_info->request_method, "PATCH") == 0) {
+ return handler->handlePatch(me, conn) ? 1 : 0;
+ }
+ }
+
+ return 0; // No handler found
+}
+
+int
+CivetServer::authHandler(struct mg_connection *conn, void *cbdata)
+{
+ const struct mg_request_info *request_info = mg_get_request_info(conn);
+ assert(request_info != NULL);
+ CivetServer *me = (CivetServer *)(request_info->user_data);
+ assert(me != NULL);
+
+ // Happens when a request hits the server before the context is saved
+ if (me->context == NULL)
+ return 0;
+
+ mg_lock_context(me->context);
+ me->connections[conn] = CivetConnection();
+ mg_unlock_context(me->context);
+
+ CivetAuthHandler *handler = (CivetAuthHandler *)cbdata;
+
+ if (handler) {
+ return handler->authorize(me, conn) ? 1 : 0;
+ }
+
+ return 0; // No handler found
+}
+
+int
+CivetServer::webSocketConnectionHandler(const struct mg_connection *conn,
+ void *cbdata)
+{
+ const struct mg_request_info *request_info = mg_get_request_info(conn);
+ assert(request_info != NULL);
+ CivetServer *me = (CivetServer *)(request_info->user_data);
+ assert(me != NULL);
+
+ // Happens when a request hits the server before the context is saved
+ if (me->context == NULL)
+ return 0;
+
+ CivetWebSocketHandler *handler = (CivetWebSocketHandler *)cbdata;
+
+ if (handler) {
+ return handler->handleConnection(me, conn) ? 0 : 1;
+ }
+
+ return 1; // No handler found, close connection
+}
+
+void
+CivetServer::webSocketReadyHandler(struct mg_connection *conn, void *cbdata)
+{
+ const struct mg_request_info *request_info = mg_get_request_info(conn);
+ assert(request_info != NULL);
+ CivetServer *me = (CivetServer *)(request_info->user_data);
+ assert(me != NULL);
+
+ // Happens when a request hits the server before the context is saved
+ if (me->context == NULL)
+ return;
+
+ CivetWebSocketHandler *handler = (CivetWebSocketHandler *)cbdata;
+
+ if (handler) {
+ handler->handleReadyState(me, conn);
+ }
+}
+
+int
+CivetServer::webSocketDataHandler(struct mg_connection *conn,
+ int bits,
+ char *data,
+ size_t data_len,
+ void *cbdata)
+{
+ const struct mg_request_info *request_info = mg_get_request_info(conn);
+ assert(request_info != NULL);
+ CivetServer *me = (CivetServer *)(request_info->user_data);
+ assert(me != NULL);
+
+ // Happens when a request hits the server before the context is saved
+ if (me->context == NULL)
+ return 0;
+
+ CivetWebSocketHandler *handler = (CivetWebSocketHandler *)cbdata;
+
+ if (handler) {
+ return handler->handleData(me, conn, bits, data, data_len) ? 1 : 0;
+ }
+
+ return 1; // No handler found
+}
+
+void
+CivetServer::webSocketCloseHandler(const struct mg_connection *conn,
+ void *cbdata)
+{
+ const struct mg_request_info *request_info = mg_get_request_info(conn);
+ assert(request_info != NULL);
+ CivetServer *me = (CivetServer *)(request_info->user_data);
+ assert(me != NULL);
+
+ // Happens when a request hits the server before the context is saved
+ if (me->context == NULL)
+ return;
+
+ CivetWebSocketHandler *handler = (CivetWebSocketHandler *)cbdata;
+
+ if (handler) {
+ handler->handleClose(me, conn);
+ }
+}
+
+CivetCallbacks::CivetCallbacks()
+{
+ memset(this, 0, sizeof(*this));
+}
+
+CivetServer::CivetServer(const char **options,
+ const struct CivetCallbacks *_callbacks,
+ const void *UserContextIn)
+ : context(0)
+{
+ struct CivetCallbacks callbacks;
+
+ UserContext = UserContextIn;
+
+ if (_callbacks) {
+ callbacks = *_callbacks;
+ userCloseHandler = _callbacks->connection_close;
+ } else {
+ userCloseHandler = NULL;
+ }
+ callbacks.connection_close = closeHandler;
+ context = mg_start(&callbacks, this, options);
+ if (context == NULL)
+ throw CivetException("null context when constructing CivetServer. "
+ "Possible problem binding to port.");
+}
+
+CivetServer::CivetServer(std::vector<std::string> options,
+ const struct CivetCallbacks *_callbacks,
+ const void *UserContextIn)
+ : context(0)
+{
+ struct CivetCallbacks callbacks;
+
+ UserContext = UserContextIn;
+
+ if (_callbacks) {
+ callbacks = *_callbacks;
+ userCloseHandler = _callbacks->connection_close;
+ } else {
+ userCloseHandler = NULL;
+ }
+ callbacks.connection_close = closeHandler;
+
+ std::vector<const char *> pointers(options.size());
+ for (size_t i = 0; i < options.size(); i++) {
+ pointers[i] = (options[i].c_str());
+ }
+ pointers.push_back(0);
+
+ context = mg_start(&callbacks, this, &pointers[0]);
+ if (context == NULL)
+ throw CivetException("null context when constructing CivetServer. "
+ "Possible problem binding to port.");
+}
+
+CivetServer::~CivetServer()
+{
+ close();
+}
+
+void
+CivetServer::closeHandler(const struct mg_connection *conn)
+{
+ CivetServer *me = (CivetServer *)mg_get_user_data(mg_get_context(conn));
+ assert(me != NULL);
+
+ // Happens when a request hits the server before the context is saved
+ if (me->context == NULL)
+ return;
+
+ if (me->userCloseHandler) {
+ me->userCloseHandler(conn);
+ }
+ mg_lock_context(me->context);
+ me->connections.erase(const_cast<struct mg_connection *>(conn));
+ mg_unlock_context(me->context);
+}
+
+void
+CivetServer::addHandler(const std::string &uri, CivetHandler *handler)
+{
+ mg_set_request_handler(context, uri.c_str(), requestHandler, handler);
+}
+
+void
+CivetServer::addWebSocketHandler(const std::string &uri,
+ CivetWebSocketHandler *handler)
+{
+ mg_set_websocket_handler(context,
+ uri.c_str(),
+ webSocketConnectionHandler,
+ webSocketReadyHandler,
+ webSocketDataHandler,
+ webSocketCloseHandler,
+ handler);
+}
+
+void
+CivetServer::addAuthHandler(const std::string &uri, CivetAuthHandler *handler)
+{
+ mg_set_auth_handler(context, uri.c_str(), authHandler, handler);
+}
+
+void
+CivetServer::removeHandler(const std::string &uri)
+{
+ mg_set_request_handler(context, uri.c_str(), NULL, NULL);
+}
+
+void
+CivetServer::removeWebSocketHandler(const std::string &uri)
+{
+ mg_set_websocket_handler(
+ context, uri.c_str(), NULL, NULL, NULL, NULL, NULL);
+}
+
+void
+CivetServer::removeAuthHandler(const std::string &uri)
+{
+ mg_set_auth_handler(context, uri.c_str(), NULL, NULL);
+}
+
+void
+CivetServer::close()
+{
+ if (context) {
+ mg_stop(context);
+ context = 0;
+ }
+}
+
+int
+CivetServer::getCookie(struct mg_connection *conn,
+ const std::string &cookieName,
+ std::string &cookieValue)
+{
+ // Maximum cookie length as per microsoft is 4096.
+ // http://msdn.microsoft.com/en-us/library/ms178194.aspx
+ char _cookieValue[4096];
+ const char *cookie = mg_get_header(conn, "Cookie");
+ int lRead = mg_get_cookie(cookie,
+ cookieName.c_str(),
+ _cookieValue,
+ sizeof(_cookieValue));
+ cookieValue.clear();
+ cookieValue.append(_cookieValue);
+ return lRead;
+}
+
+const char *
+CivetServer::getHeader(struct mg_connection *conn,
+ const std::string &headerName)
+{
+ return mg_get_header(conn, headerName.c_str());
+}
+
+void
+CivetServer::urlDecode(const char *src,
+ std::string &dst,
+ bool is_form_url_encoded)
+{
+ urlDecode(src, strlen(src), dst, is_form_url_encoded);
+}
+
+void
+CivetServer::urlDecode(const char *src,
+ size_t src_len,
+ std::string &dst,
+ bool is_form_url_encoded)
+{
+ int i, j, a, b;
+#define HEXTOI(x) (isdigit(x) ? x - '0' : x - 'W')
+
+ dst.clear();
+ for (i = j = 0; i < (int)src_len; i++, j++) {
+ if (i < (int)src_len - 2 && src[i] == '%'
+ && isxdigit(*(const unsigned char *)(src + i + 1))
+ && isxdigit(*(const unsigned char *)(src + i + 2))) {
+ a = tolower(*(const unsigned char *)(src + i + 1));
+ b = tolower(*(const unsigned char *)(src + i + 2));
+ dst.push_back((char)((HEXTOI(a) << 4) | HEXTOI(b)));
+ i += 2;
+ } else if (is_form_url_encoded && src[i] == '+') {
+ dst.push_back(' ');
+ } else {
+ dst.push_back(src[i]);
+ }
+ }
+}
+
+bool
+CivetServer::getParam(struct mg_connection *conn,
+ const char *name,
+ std::string &dst,
+ size_t occurrence)
+{
+ const char *formParams = NULL;
+ const struct mg_request_info *ri = mg_get_request_info(conn);
+ assert(ri != NULL);
+ CivetServer *me = (CivetServer *)(ri->user_data);
+ assert(me != NULL);
+ mg_lock_context(me->context);
+ CivetConnection &conobj = me->connections[conn];
+ mg_lock_connection(conn);
+ mg_unlock_context(me->context);
+
+ if (conobj.postData != NULL) {
+ formParams = conobj.postData;
+ } else {
+ const char *con_len_str = mg_get_header(conn, "Content-Length");
+ if (con_len_str) {
+ unsigned long con_len = atoi(con_len_str);
+ if (con_len > 0) {
+ // Add one extra character: in case the post-data is a text, it
+ // is required as 0-termination.
+ // Do not increment con_len, since the 0 terminating is not part
+ // of the content (text or binary).
+ conobj.postData = (char *)malloc(con_len + 1);
+ if (conobj.postData != NULL) {
+ // malloc may fail for huge requests
+ mg_read(conn, conobj.postData, con_len);
+ conobj.postData[con_len] = 0;
+ formParams = conobj.postData;
+ conobj.postDataLen = con_len;
+ }
+ }
+ }
+ }
+ if (formParams == NULL) {
+ // get requests do store html <form> field values in the http
+ // query_string
+ formParams = ri->query_string;
+ }
+ mg_unlock_connection(conn);
+
+ if (formParams != NULL) {
+ return getParam(formParams, strlen(formParams), name, dst, occurrence);
+ }
+
+ return false;
+}
+
+bool
+CivetServer::getParam(const char *data,
+ size_t data_len,
+ const char *name,
+ std::string &dst,
+ size_t occurrence)
+{
+ const char *p, *e, *s;
+ size_t name_len;
+
+ dst.clear();
+ if (data == NULL || name == NULL || data_len == 0) {
+ return false;
+ }
+ name_len = strlen(name);
+ e = data + data_len;
+
+ // data is "var1=val1&var2=val2...". Find variable first
+ for (p = data; p + name_len < e; p++) {
+ if ((p == data || p[-1] == '&') && p[name_len] == '='
+ && !mg_strncasecmp(name, p, name_len) && 0 == occurrence--) {
+
+ // Point p to variable value
+ p += name_len + 1;
+
+ // Point s to the end of the value
+ s = (const char *)memchr(p, '&', (size_t)(e - p));
+ if (s == NULL) {
+ s = e;
+ }
+ assert(s >= p);
+
+ // Decode variable into destination buffer
+ urlDecode(p, (int)(s - p), dst, true);
+ return true;
+ }
+ }
+ return false;
+}
+
+void
+CivetServer::urlEncode(const char *src, std::string &dst, bool append)
+{
+ urlEncode(src, strlen(src), dst, append);
+}
+
+void
+CivetServer::urlEncode(const char *src,
+ size_t src_len,
+ std::string &dst,
+ bool append)
+{
+ static const char *dont_escape = "._-$,;~()";
+ static const char *hex = "0123456789abcdef";
+
+ if (!append)
+ dst.clear();
+
+ for (; src_len > 0; src++, src_len--) {
+ if (isalnum(*(const unsigned char *)src)
+ || strchr(dont_escape, *(const unsigned char *)src) != NULL) {
+ dst.push_back(*src);
+ } else {
+ dst.push_back('%');
+ dst.push_back(hex[(*(const unsigned char *)src) >> 4]);
+ dst.push_back(hex[(*(const unsigned char *)src) & 0xf]);
+ }
+ }
+}
+
+std::vector<int>
+CivetServer::getListeningPorts()
+{
+ std::vector<int> ports(50);
+ std::vector<struct mg_server_ports> server_ports(50);
+ int size = mg_get_server_ports(context,
+ (int)server_ports.size(),
+ &server_ports[0]);
+ if (size <= 0) {
+ ports.resize(0);
+ return ports;
+ }
+ ports.resize(size);
+ server_ports.resize(size);
+ for (int i = 0; i < size; i++) {
+ ports[i] = server_ports[i].port;
+ }
+
+ return ports;
+}
+
+CivetServer::CivetConnection::CivetConnection()
+{
+ postData = NULL;
+ postDataLen = 0;
+}
+
+CivetServer::CivetConnection::~CivetConnection()
+{
+ free(postData);
+}