From: Aki Tuomi Date: Mon, 29 Jul 2019 08:11:11 +0000 (+0300) Subject: stats: event exporters - Support https X-Git-Tag: 2.3.8~174 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9c268d3e5bc6122ae8c06cc82c6a99e3bd64421d;p=thirdparty%2Fdovecot%2Fcore.git stats: event exporters - Support https --- diff --git a/src/stats/Makefile.am b/src/stats/Makefile.am index e376879b13..d01a6c685e 100644 --- a/src/stats/Makefile.am +++ b/src/stats/Makefile.am @@ -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 \ diff --git a/src/stats/event-exporter-transport-http-post.c b/src/stats/event-exporter-transport-http-post.c index fbf40773b8..22240fbead 100644 --- a/src/stats/event-exporter-transport-http-post.c +++ b/src/stats/event-exporter-transport-http-post.c @@ -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, diff --git a/src/stats/main.c b/src/stats/main.c index 85f6e462c1..83f587ebe8 100644 --- a/src/stats/main.c +++ b/src/stats/main.c @@ -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;