]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
stats: event exporters - Support https
authorAki Tuomi <aki.tuomi@open-xchange.com>
Mon, 29 Jul 2019 08:11:11 +0000 (11:11 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 10 Sep 2019 07:02:05 +0000 (10:02 +0300)
src/stats/Makefile.am
src/stats/event-exporter-transport-http-post.c
src/stats/main.c

index e376879b1388db6379954fa1b0c07e690e511218..d01a6c685ec72d32a6450e9fa3ca9cf1c473abe3 100644 (file)
@@ -7,12 +7,16 @@ AM_CPPFLAGS = \
        -I$(top_srcdir)/src/lib-settings \
        -I$(top_srcdir)/src/lib-master \
        -I$(top_srcdir)/src/lib-http \
+       -I$(top_srcdir)/src/lib-ssl-iostream \
        $(BINARY_CFLAGS)
 
 stats_LDADD = $(LIBDOVECOT) \
+       $(DOVECOT_SSL_LIBS) \
        $(BINARY_LDFLAGS)
 
-stats_DEPENDENCIES = $(LIBDOVECOT_DEPS)
+stats_DEPENDENCIES = \
+       $(DOVECOT_SSL_LIBS) \
+       $(LIBDOVECOT_DEPS)
 
 stats_SOURCES = \
        client-reader.c \
index fbf40773b85b70e8a2e72213f5bb3ed45cf58a80..22240fbead47c280dd87018219c6fdb45422f8a4 100644 (file)
@@ -5,6 +5,9 @@
 #include "str.h"
 #include "event-exporter.h"
 #include "http-client.h"
+#include "iostream-ssl.h"
+#include "master-service.h"
+#include "master-service-ssl-settings.h"
 
 /* the http client used to export all events with exporter=http-post */
 static struct http_client *exporter_http_client;
@@ -44,12 +47,24 @@ void event_export_transport_http_post(const struct exporter *exporter,
                                      const buffer_t *buf)
 {
        struct http_client_request *req;
-       const struct http_client_settings set = {
-               .dns_client_socket_path = "dns-client",
-       };
 
-       if (exporter_http_client == NULL)
+       if (exporter_http_client == NULL) {
+               const struct master_service_ssl_settings *master_ssl_set =
+                       master_service_ssl_settings_get(master_service);
+               struct ssl_iostream_settings ssl_set;
+               i_zero(&ssl_set);
+               if (master_ssl_set != NULL) {
+                       master_service_ssl_settings_to_iostream_set(master_ssl_set,
+                               pool_datastack_create(),
+                               MASTER_SERVICE_SSL_SETTINGS_TYPE_CLIENT,
+                               &ssl_set);
+               }
+               const struct http_client_settings set = {
+                       .dns_client_socket_path = "dns-client",
+                       .ssl = &ssl_set,
+               };
                exporter_http_client = http_client_init(&set);
+       }
 
        req = http_client_request_url_str(exporter_http_client, "POST",
                                          exporter->transport_args,
index 85f6e462c18877fb369601e732260788dbb8dc42..83f587ebe8077dbd05ce39cda1f95aecda12d06c 100644 (file)
@@ -77,6 +77,8 @@ int main(int argc, char *argv[])
                NULL
        };
        const enum master_service_flags service_flags =
+               MASTER_SERVICE_FLAG_USE_SSL_SETTINGS |
+               MASTER_SERVICE_FLAG_NO_SSL_INIT |
                MASTER_SERVICE_FLAG_DONT_SEND_STATS |
                MASTER_SERVICE_FLAG_NO_IDLE_DIE |
                MASTER_SERVICE_FLAG_UPDATE_PROCTITLE;