summaryrefslogtreecommitdiffstats
path: root/aclk
diff options
context:
space:
mode:
authorTimotej S <6674623+underhood@users.noreply.github.com>2022-01-04 10:11:04 +0100
committerGitHub <noreply@github.com>2022-01-04 10:11:04 +0100
commit5736b4bcb179896280cb579ee1dbe0cfa464064c (patch)
tree3b703557152bf0970cd80cdc72032a00fb6b16e7 /aclk
parent2546c02f89581b0c20f9805d65bd060ad9f8af49 (diff)
Removes ACLK Legacy (#11841)
* remove legacy from makefiles * remove ACLK Legacy from installer * remove ACLK Legacy from configure.ac * remove legacy from cmake * aclk api cleanup * remove legacy files from packaging * changes for CI from Austin
Diffstat (limited to 'aclk')
-rw-r--r--aclk/aclk.c12
-rw-r--r--aclk/aclk.h12
-rw-r--r--aclk/aclk_api.c157
-rw-r--r--aclk/legacy/Makefile.am19
-rw-r--r--aclk/legacy/aclk_common.c53
-rw-r--r--aclk/legacy/aclk_common.h51
-rw-r--r--aclk/legacy/aclk_lws_https_client.c244
-rw-r--r--aclk/legacy/aclk_lws_https_client.h18
-rw-r--r--aclk/legacy/aclk_lws_wss_client.c622
-rw-r--r--aclk/legacy/aclk_lws_wss_client.h92
-rw-r--r--aclk/legacy/aclk_query.c843
-rw-r--r--aclk/legacy/aclk_query.h41
-rw-r--r--aclk/legacy/aclk_rx_msgs.c388
-rw-r--r--aclk/legacy/aclk_rx_msgs.h13
-rw-r--r--aclk/legacy/aclk_stats.c411
-rw-r--r--aclk/legacy/aclk_stats.h100
-rw-r--r--aclk/legacy/agent_cloud_link.c1502
-rw-r--r--aclk/legacy/agent_cloud_link.h85
-rw-r--r--aclk/legacy/mqtt.c370
-rw-r--r--aclk/legacy/mqtt.h25
-rw-r--r--aclk/legacy/tests/fake-charts.d.plugin24
-rw-r--r--aclk/legacy/tests/install-fake-charts.d.sh.in6
-rwxr-xr-xaclk/legacy/tests/launch-paho.sh4
-rw-r--r--aclk/legacy/tests/paho-inspection.py59
-rw-r--r--aclk/legacy/tests/paho.Dockerfile14
25 files changed, 22 insertions, 5143 deletions
diff --git a/aclk/aclk.c b/aclk/aclk.c
index 693cb6e4b4..d5f7818c2f 100644
--- a/aclk/aclk.c
+++ b/aclk/aclk.c
@@ -859,7 +859,7 @@ exit:
// fix this in both old and new ACLK
extern void health_alarm_entry2json_nolock(BUFFER *wb, ALARM_ENTRY *ae, RRDHOST *host);
-void ng_aclk_alarm_reload(void)
+void aclk_alarm_reload(void)
{
ACLK_SHARED_STATE_LOCK;
if (unlikely(aclk_shared_state.agent_state == ACLK_HOST_INITIALIZING)) {
@@ -871,7 +871,7 @@ void ng_aclk_alarm_reload(void)
aclk_queue_query(aclk_query_new(METADATA_ALARMS));
}
-int ng_aclk_update_alarm(RRDHOST *host, ALARM_ENTRY *ae)
+int aclk_update_alarm(RRDHOST *host, ALARM_ENTRY *ae)
{
BUFFER *local_buffer;
json_object *msg;
@@ -902,7 +902,7 @@ int ng_aclk_update_alarm(RRDHOST *host, ALARM_ENTRY *ae)
return 0;
}
-int ng_aclk_update_chart(RRDHOST *host, char *chart_name, int create)
+int aclk_update_chart(RRDHOST *host, char *chart_name, int create)
{
struct aclk_query *query;
@@ -926,7 +926,7 @@ int ng_aclk_update_chart(RRDHOST *host, char *chart_name, int create)
* Add a new collector to the list
* If it exists, update the chart count
*/
-void ng_aclk_add_collector(RRDHOST *host, const char *plugin_name, const char *module_name)
+void aclk_add_collector(RRDHOST *host, const char *plugin_name, const char *module_name)
{
struct aclk_query *query;
struct _collector *tmp_collector;
@@ -969,7 +969,7 @@ void ng_aclk_add_collector(RRDHOST *host, const char *plugin_name, const char *m
* This function will release the memory used and schedule
* a cloud update
*/
-void ng_aclk_del_collector(RRDHOST *host, const char *plugin_name, const char *module_name)
+void aclk_del_collector(RRDHOST *host, const char *plugin_name, const char *module_name)
{
struct aclk_query *query;
struct _collector *tmp_collector;
@@ -1010,7 +1010,7 @@ void ng_aclk_del_collector(RRDHOST *host, const char *plugin_name, const char *m
aclk_queue_query(query);
}
-void ng_aclk_host_state_update(RRDHOST *host, int cmd)
+void aclk_host_state_update(RRDHOST *host, int cmd)
{
uuid_t node_id;
int ret;
diff --git a/aclk/aclk.h b/aclk/aclk.h
index 444de86bec..4d85463141 100644
--- a/aclk/aclk.h
+++ b/aclk/aclk.h
@@ -32,18 +32,18 @@ extern struct aclk_shared_state {
int mqtt_shutdown_msg_rcvd;
} aclk_shared_state;
-void ng_aclk_alarm_reload(void);
-int ng_aclk_update_alarm(RRDHOST *host, ALARM_ENTRY *ae);
+void aclk_alarm_reload(void);
+int aclk_update_alarm(RRDHOST *host, ALARM_ENTRY *ae);
/* Informs ACLK about created/deleted chart
* @param create 0 - if chart was deleted, other if chart created
*/
-int ng_aclk_update_chart(RRDHOST *host, char *chart_name, int create);
+int aclk_update_chart(RRDHOST *host, char *chart_name, int create);
-void ng_aclk_add_collector(RRDHOST *host, const char *plugin_name, const char *module_name);
-void ng_aclk_del_collector(RRDHOST *host, const char *plugin_name, const char *module_name);
+void aclk_add_collector(RRDHOST *host, const char *plugin_name, const char *module_name);
+void aclk_del_collector(RRDHOST *host, const char *plugin_name, const char *module_name);
-void ng_aclk_host_state_update(RRDHOST *host, int cmd);
+void aclk_host_state_update(RRDHOST *host, int cmd);
void aclk_send_node_instances(void);
diff --git a/aclk/aclk_api.c b/aclk/aclk_api.c
index 251f5b7082..172cf29827 100644
--- a/aclk/aclk_api.c
+++ b/aclk/aclk_api.c
@@ -2,12 +2,9 @@
#include "libnetdata/libnetdata.h"
#include "database/rrd.h"
-#ifdef ACLK_NG
+#ifdef ENABLE_ACLK
#include "aclk.h"
#endif
-#ifdef ACLK_LEGACY
-#include "legacy/agent_cloud_link.h"
-#endif
int aclk_connected = 0;
int aclk_kill_link = 0;
@@ -20,12 +17,6 @@ int aclk_disable_single_updates = 0;
int aclk_stats_enabled;
-#ifdef ACLK_NG
-int aclk_ng = 1;
-#else
-int aclk_ng = 0;
-#endif
-
#define ACLK_IMPL_KEY_NAME "aclk implementation"
#ifdef ENABLE_ACLK
@@ -33,41 +24,13 @@ void *aclk_starter(void *ptr) {
char *aclk_impl_req = config_get(CONFIG_SECTION_CLOUD, ACLK_IMPL_KEY_NAME, "ng");
if (!strcasecmp(aclk_impl_req, "ng")) {
- aclk_ng = 1;
+ return aclk_main(ptr);
} else if (!strcasecmp(aclk_impl_req, "legacy")) {
- aclk_ng = 0;
+ error("Legacy ACLK is not supported anymore key \"" ACLK_IMPL_KEY_NAME "\" in section \"" CONFIG_SECTION_CLOUD "\" ignored. Using ACLK-NG.");
} else {
- error("Unknown value \"%s\" of key \"" ACLK_IMPL_KEY_NAME "\" in section \"" CONFIG_SECTION_CLOUD "\". Trying default ACLK %s.", aclk_impl_req, aclk_ng ? "NG" : "Legacy");
- }
-
-#ifndef ACLK_NG
- if (aclk_ng) {
- error("Configuration requests ACLK-NG but it is not available in this agent. Switching to Legacy.");
- aclk_ng = 0;
- }
-#endif
-
-#ifndef ACLK_LEGACY
- if (!aclk_ng) {
- error("Configuration requests ACLK Legacy but it is not available in this agent. Switching to NG.");
- aclk_ng = 1;
- }
-#endif
-
-#ifdef ACLK_NG
- if (aclk_ng) {
- info("Starting ACLK-NG");
- return aclk_main(ptr);
- }
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng) {
- info("Starting ACLK Legacy");
- return legacy_aclk_main(ptr);
+ error("Unknown value \"%s\" of key \"" ACLK_IMPL_KEY_NAME "\" in section \"" CONFIG_SECTION_CLOUD "\". Using ACLK-NG. This config key will be deprecated.", aclk_impl_req);
}
-#endif
- error_report("No ACLK could be started");
- return NULL;
+ return aclk_main(ptr);
}
void aclk_single_update_disable()
@@ -79,99 +42,15 @@ void aclk_single_update_enable()
{
aclk_disable_single_updates = 0;
}
-
-void aclk_alarm_reload(void)
-{
-#ifdef ACLK_NG
- if (aclk_ng)
- ng_aclk_alarm_reload();
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng)
- legacy_aclk_alarm_reload();
-#endif
-}
-
-int aclk_update_chart(RRDHOST *host, char *chart_name, int create)
-{
-#ifdef ACLK_NG
- if (aclk_ng)
- return ng_aclk_update_chart(host, chart_name, create);
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng)
- return legacy_aclk_update_chart(host, chart_name, create);
-#endif
- error_report("No usable aclk_update_chart implementation");
- return 1;
-}
-
-int aclk_update_alarm(RRDHOST *host, ALARM_ENTRY *ae)
-{
-#ifdef ACLK_NG
- if (aclk_ng)
- return ng_aclk_update_alarm(host, ae);
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng)
- return legacy_aclk_update_alarm(host, ae);
-#endif
- error_report("No usable aclk_update_alarm implementation");
- return 1;
-}
-
-void aclk_add_collector(RRDHOST *host, const char *plugin_name, const char *module_name)
-{
-#ifdef ACLK_NG
- if (aclk_ng)
- return ng_aclk_add_collector(host, plugin_name, module_name);
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng)
- return legacy_aclk_add_collector(host, plugin_name, module_name);
-#endif
- error_report("No usable aclk_add_collector implementation");
-}
-
-void aclk_del_collector(RRDHOST *host, const char *plugin_name, const char *module_name)
-{
-#ifdef ACLK_NG
- if (aclk_ng)
- return ng_aclk_del_collector(host, plugin_name, module_name);
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng)
- return legacy_aclk_del_collector(host, plugin_name, module_name);
-#endif
- error_report("No usable aclk_del_collector implementation");
-}
-
-void aclk_host_state_update(RRDHOST *host, int connect)
-{
-#ifdef ACLK_NG
- if (aclk_ng)
- return ng_aclk_host_state_update(host, connect);
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng)
- return legacy_aclk_host_state_update(host, connect);
-#endif
- error_report("Couldn't use any version of aclk_host_state_update");
-}
-
#endif /* ENABLE_ACLK */
struct label *add_aclk_host_labels(struct label *label) {
-#ifdef ACLK_NG
+#ifdef ENABLE_ACLK
label = add_label_to_list(label, "_aclk_ng_available", "true", LABEL_SOURCE_AUTO);
#else
label = add_label_to_list(label, "_aclk_ng_available", "false", LABEL_SOURCE_AUTO);
#endif
-#ifdef ACLK_LEGACY
- label = add_label_to_list(label, "_aclk_legacy_available", "true", LABEL_SOURCE_AUTO);
-#else
label = add_label_to_list(label, "_aclk_legacy_available", "false", LABEL_SOURCE_AUTO);
-#endif
#ifdef ENABLE_ACLK
ACLK_PROXY_TYPE aclk_proxy;
char *proxy_str;
@@ -189,7 +68,7 @@ struct label *add_aclk_host_labels(struct label *label) {
break;
}
- label = add_label_to_list(label, "_aclk_impl", aclk_ng ? "Next Generation" : "Legacy", LABEL_SOURCE_AUTO);
+ label = add_label_to_list(label, "_aclk_impl", "Next Generation", LABEL_SOURCE_AUTO);
label = add_label_to_list(label, "_aclk_proxy", proxy_str, LABEL_SOURCE_AUTO);
#endif
return label;
@@ -199,30 +78,14 @@ char *aclk_state(void) {
#ifndef ENABLE_ACLK
return strdupz("ACLK Available: No");
#else
-#ifdef ACLK_NG
- if (aclk_ng)
- return ng_aclk_state();
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng)
- return legacy_aclk_state();
+ return ng_aclk_state();
#endif
-#endif /* ENABLE_ACLK */
- return NULL;
}
char *aclk_state_json(void) {
#ifndef ENABLE_ACLK
- return strdupz("{\"aclk-available\": false}");
+ return strdupz("{\"aclk-available\":false}");
#else
-#ifdef ACLK_NG
- if (aclk_ng)
- return ng_aclk_state_json();
-#endif
-#ifdef ACLK_LEGACY
- if (!aclk_ng)
- return legacy_aclk_state_json();
+ return ng_aclk_state_json();
#endif
-#endif /* ENABLE_ACLK */
- return NULL;
}
diff --git a/aclk/legacy/Makefile.am b/aclk/legacy/Makefile.am
deleted file mode 100644
index 1cd876b401..0000000000
--- a/aclk/legacy/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-AUTOMAKE_OPTIONS = subdir-objects
-MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
-
-CLEANFILES = \
- tests/install-fake-charts.d.sh \
- $(NULL)
-
-include $(top_srcdir)/build/subst.inc
-SUFFIXES = .in
-
-#sbin_SCRIPTS = \
-# tests/install-fake-charts.d.sh \
-# $(NULL)
-
-dist_noinst_SCRIPTS = tests/install-fake-charts.d.sh
-dist_noinst_DATA = tests/install-fake-charts.d.sh.in
-
diff --git a/aclk/legacy/aclk_common.c b/aclk/legacy/aclk_common.c
deleted file mode 100644
index 7f8368e442..0000000000
--- a/aclk/legacy/aclk_common.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include "aclk_common.h"
-
-#include "daemon/common.h"
-
-#ifdef ENABLE_ACLK
-#include <libwebsockets.h>
-#endif
-
-netdata_mutex_t legacy_aclk_shared_state_mutex = NETDATA_MUTEX_INITIALIZER;
-
-struct legacy_aclk_shared_state legacy_aclk_shared_state = {
- .version_neg = 0,
- .version_neg_wait_till = 0
-};
-
-int aclk_decode_base_url(char *url, char **aclk_hostname, int *aclk_port)
-{
- int pos = 0;
- if (!strncmp("https://", url, 8)) {
- pos = 8;
- } else if (!strncmp("http://", url, 7)) {
- error("Cannot connect ACLK over %s -> unencrypted link is not supported", url);
- return 1;
- }
- int host_end = pos;
- while (url[host_end] != 0 && url[host_end] != '/' && url[host_end] != ':')
- host_end++;
- if (url[host_end] == 0) {
- *aclk_hostname = strdupz(url + pos);
- *aclk_port = 443;
- info("Setting ACLK target host=%s port=%d from %s", *aclk_hostname, *aclk_port, url);
- return 0;
- }
- if (url[host_end] == ':') {
- *aclk_hostname = callocz(host_end - pos + 1, 1);
- strncpy(*aclk_hostname, url + pos, host_end - pos);
- int port_end = host_end + 1;
- while (url[port_end] >= '0' && url[port_end] <= '9')
- port_end++;
- if (port_end - host_end > 6) {
- error("Port specified in %s is invalid", url);
- return 0;
- }
- *aclk_port = atoi(&url[host_end+1]);
- }
- if (url[host_end] == '/') {
- *aclk_port = 443;
- *aclk_hostname = callocz(1, host_end - pos + 1);
- strncpy(*aclk_hostname, url+pos, host_end - pos);
- }
- info("Setting ACLK target host=%s port=%d from %s", *aclk_hostname, *aclk_port, url);
- return 0;
-}
diff --git a/aclk/legacy/aclk_common.h b/aclk/legacy/aclk_common.h
deleted file mode 100644
index 080680ff11..0000000000
--- a/aclk/legacy/aclk_common.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef ACLK_COMMON_H
-#define ACLK_COMMON_H
-
-#include "../aclk_rrdhost_state.h"
-#include "daemon/common.h"
-
-extern netdata_mutex_t legacy_aclk_shared_state_mutex;
-#define legacy_aclk_shared_state_LOCK netdata_mutex_lock(&legacy_aclk_shared_state_mutex)
-#define legacy_aclk_shared_state_UNLOCK netdata_mutex_unlock(&legacy_aclk_shared_state_mutex)
-
-// minimum and maximum supported version of ACLK
-// in this version of agent
-#define ACLK_VERSION_MIN 2
-#define ACLK_VERSION_MAX 3
-
-// Version negotiation messages have they own versioning
-// this is also used for LWT message as we set that up
-// before version negotiation
-#define ACLK_VERSION_NEG_VERSION 1
-
-// Maximum time to wait for version negotiation before aborting
-// and defaulting to oldest supported version
-#define VERSION_NEG_TIMEOUT 3
-
-#if ACLK_VERSION_MIN > ACLK_VERSION_MAX
-#error "ACLK_VERSION_MAX must be >= than ACLK_VERSION_MIN"
-#endif
-
-// Define ACLK Feature Version Boundaries Here
-#define ACLK_V_COMPRESSION 2
-#define ACLK_V_CHILDRENSTATE 3
-
-#define ACLK_IS_HOST_INITIALIZING(host) (host->aclk_state.state == ACLK_HOST_INITIALIZING)
-#define ACLK_IS_HOST_POPCORNING(host) (ACLK_IS_HOST_INITIALIZING(host) && host->aclk_state.t_last_popcorn_update)
-
-extern struct legacy_aclk_shared_state {
- // optimization to avoid looping through hosts
- // every time Query Thread wakes up
- RRDHOST *next_popcorn_host;
-
- // read only while ACLK connected
- // protect by lock otherwise
- int version_neg;
- usec_t version_neg_wait_till;
-} legacy_aclk_shared_state;
-
-const char *aclk_proxy_type_to_s(ACLK_PROXY_TYPE *type);
-
-int aclk_decode_base_url(char *url, char **aclk_hostname, int *aclk_port);
-
-#endif //ACLK_COMMON_H
diff --git a/aclk/legacy/aclk_lws_https_client.c b/aclk/legacy/aclk_lws_https_client.c
deleted file mode 100644
index 8a490c6f40..0000000000
--- a/aclk/legacy/aclk_lws_https_client.c
+++ /dev/null
@@ -1,244 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#define ACLK_LWS_HTTPS_CLIENT_INTERNAL
-#include "aclk_lws_https_client.h"
-#include "aclk_common.h"
-#include "aclk_lws_wss_client.h"
-
-#define SMALL_BUFFER 16
-
-struct simple_hcc_data {
- char *data;
- size_t data_size;
- size_t written;
- char lws_work_buffer[1024 + LWS_PRE];
- char *payload;
- int response_code;
- int done;
-};
-
-static int simple_https_client_callback(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len)
-{
- UNUSED(user);
- int n;
- char *ptr;
- char buffer[SMALL_BUFFER];
- struct simple_hcc_data *perconn_data = lws_get_opaque_user_data(wsi);
-
- switch (reason) {
- case LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ:
- debug(D_ACLK, "LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ");
- if (perconn_data->data_size - 1 - perconn_data->written < len)
- return 1;
- memcpy(&perconn_data->data[perconn_data->written], in, len);
- perconn_data->written += len;
- return 0;
- case LWS_CALLBACK_RECEIVE_CLIENT_HTTP:
- debug(D_ACLK, "LWS_CALLBACK_RECEIVE_CLIENT_HTTP");
- if(!perconn_data) {
- error("Missing Per Connect Data");
- return -1;
- }
- n = sizeof(perconn_data->lws_work_buffer) - LWS_PRE;
- ptr = perconn_data->lws_work_buffer + LWS_PRE;
- if (lws_http_client_read(wsi, &ptr, &n) < 0)
- return -1;
- perconn_data->data[perconn_data->written] = '\0';
- return 0;
- case LWS_CALLBACK_WSI_DESTROY:
- debug(D_ACLK, "LWS_CALLBACK_WSI_DESTROY");
- if(perconn_data)
- perconn_data->done = 1;
- return 0;
- case LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP:
- debug(D_ACLK, "LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP");
- if(perconn_data)
- perconn_data->response_code = lws_http_client_http_response(wsi);
- return 0;
- case LWS_CALLBACK_CLOSED_CLIENT_HTTP:
- debug(D_ACLK, "LWS_CALLBACK_CLOSED_CLIENT_HTTP");
- return 0;
- case LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS:
- debug(D_ACLK, "LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS");
- return 0;
- case LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER:
- debug(D_ACLK, "LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER");
- if(perconn_data && perconn_data->payload) {
- unsigned char **p = (unsigned char **)in, *end = (*p) + len;
- snprintfz(buffer, SMALL_BUFFER, "%zu", strlen(perconn_data->payload));
- if (lws_add_http_header_by_token(wsi,
- WSI_TOKEN_HTTP_CONTENT_LENGTH,
- (unsigned char *)buffer, strlen(buffer), p, end))
- return -1;
- if (lws_add_http_header_by_token(wsi,
- WSI_TOKEN_HTTP_CONTENT_TYPE,
- (unsigned char *)ACLK_CONTENT_TYPE_JSON,
- strlen(ACLK_CONTENT_TYPE_JSON), p, end))
- return -1;
- lws_client_http_body_pending(wsi, 1);
- lws_callback_on_writable(wsi);
- }
- return 0;
- case LWS_CALLBACK_CLIENT_HTTP_WRITEABLE:
- debug(D_ACLK, "LWS_CALLBACK_CLIENT_HTTP_WRITEABLE");
- if(perconn_data && perconn_data->payload) {
- n = strlen(perconn_data->payload);
- if(perconn_data->data_size < (size_t)LWS_PRE + n + 1) {
- error("Buffer given is not big enough");
- return 1;
- }
-
- memcpy(&perconn_data->data[LWS_PRE], perconn_data->payload, n);
- if(n != lws_write(wsi, (unsigned char*)&perconn_data->data[LWS_PRE], n, LWS_WRITE_HTTP)) {
- error("lws_write error");
- perconn_data->data[0] = 0;
- return 1;
- }
- lws_client_http_body_pending(wsi, 0);
- // clean for subsequent reply read
- perconn_data->data[0] = 0;
- }
- return 0;
- case LWS_CALLBACK_CLIENT_HTTP_BIND_PROTOCOL:
- debug(D_ACLK, "LWS_CALLBACK_CLIENT_HTTP_BIND_PROTOCOL");
- return 0;
- case LWS_CALLBACK_WSI_CREATE:
- debug(D_ACLK, "LWS_CALLBACK_WSI_CREATE");
- return 0;
- case LWS_CALLBACK_PROTOCOL_INIT:
- debug(D_ACLK, "LWS_CALLBACK_PROTOCOL_INIT");
- return 0;
- case LWS_CALLBACK_CLIENT_HTTP_DROP_PROTOCOL:
- debug(D_ACLK, "LWS_CALLBACK_CLIENT_HTTP_DROP_PROTOCOL");
- return 0;
- case LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED:
- debug(D_ACLK, "LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED");
- return 0;
- case LWS_CALLBACK_GET_THREAD_ID:
- debug(D_ACLK, "LWS_CALLBACK_GET_THREAD_ID");
- return 0;
- case LWS_CALLBACK_EVENT_WAIT_CANCELLED:
- debug(D_ACLK, "LWS_CALLBACK_EVENT_WAIT_CANCELLED");
- return 0;
- case LWS_CALLBACK_OPENSSL_PERFORM_SERVER_CERT_VERIFICATION:
- debug(D_ACLK, "LWS_CALLBACK_OPENSSL_PERFORM_SERVER_CERT_VERIFICATION");
- return 0;
- case LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH:
- debug(D_ACLK, "LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH");
- return 0;
- default:
- debug(D_ACLK, "Unknown callback %d", (int)reason);
- return 0;
- }
-}
-
-static const struct lws_protocols protocols[] = {
- {
- "http",
- simple_https_client_callback,
- 0,
- 0,
- 0,
- 0,
- 0
- },
- { NULL, NULL, 0, 0, 0, 0, 0 }
-};
-
-static void simple_hcc_log_divert(int level, const char *line)
-{
- UNUSED(level);
- error("Libwebsockets: %s", line);
-}
-
-int aclk_send_https_request(char *method, char *host, int port, char *url, char *b, size_t b_size, char *payload)
-{
- info("%s %s", __func__, method);
-
- struct lws_context_creation_info info;
- struct lws_client_connect_info i;
- struct lws_context *context;
-
- struct simple_hcc_data *data = callocz(1, sizeof(struct simple_hcc_data));
- data->data = b;
- data->data[0] = 0;
- data->data_size = b_size;
- data->payload = payload;
-
- int n = 0;
- time_t timestamp;
-
- struct lws_vhost *vhost;
-
- memset(&info, 0, sizeof info);
-
- info.options = LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;
- info.port = CONTEXT_PORT_NO_LISTEN;
- info.protocols = protocols;
-
-
- context = lws_create_context(&info);
- if (!context) {
- error("Error creating LWS context");
- freez(data);
- return 1;
- }
-
- lws_set_log_level(LLL_ERR | LLL_WARN, simple_hcc_log_divert);
-
- lws_service(context, 0);
-
- memset(&i, 0, sizeof i); /* otherwise uninitialized garbage */
- i.context = context;
-
-#ifdef ACLK_SSL_ALLOW_SELF_SIGNED
- i.ssl_connection = LCCSCF_USE_SSL | LCCSCF_ALLOW_SELFSIGNED | LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK | LCCSCF_ALLOW_INSECURE;
- info("Disabling SSL certificate checks");
-#else
- i.ssl_connection = LCCSCF_USE_SSL;
-#endif
-#if defined(HAVE_X509_VERIFY_PARAM_set1_host) && HAVE_X509_VERIFY_PARAM_set1_host == 0
-#warning DISABLING SSL HOSTNAME VALIDATION BECAUSE IT IS NOT AVAILABLE ON THIS SYSTEM.
- i.ssl_connection |= LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK;
-#endif
-
- i.port = port;
- i.address = host;
- i.path = url;
-
- i.host = i.address;
- i.origin = i.address;
- i.method = method;
- i.opaque_user_data = data;
- i.alpn = "http/1.1";
-
- i.protocol = protocols[0].name;
-
- vhost = lws_get_vhost_by_name(context, "default");
- if(!vhost)
- fatal("Could not find the default LWS vhost.");
-
- //set up proxy
- aclk_wss_set_proxy(vhost);
-
- lws_client_connect_via_info(&i);
-
- // libwebsockets handle connection timeouts already
- // this adds additional safety in case of bug in LWS
- timestamp = now_monotonic_sec();
- while( n >= 0 && !data->done && !netdata_exit) {
- n = lws_service(context, 0);
- if( now_monotonic_sec() - timestamp > SEND_HTTPS_REQUEST_TIMEOUT ) {
- data->data[0] = 0;
- data->done = 1;
- error("Servicing LWS took too long.");
- }
- }
-
- lws_context_destroy(context);
-
- n = data->response_code;
-
- freez(data);
- return (n < 200 || n >= 300);
-}
diff --git a/aclk/legacy/aclk_lws_https_client.h b/aclk/legacy/aclk_lws_https_client.h
deleted file mode 100644
index 5f30a37fda..0000000000
--- a/aclk/legacy/aclk_lws_https_client.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#ifndef NETDATA_LWS_HTTPS_CLIENT_H
-#define NETDATA_LWS_HTTPS_CLIENT_H
-
-#include "daemon/common.h"
-#include "libnetdata/libnetdata.h"
-
-#define DATAMAXLEN 1024*16
-
-#ifdef ACLK_LWS_HTTPS_CLIENT_INTERNAL
-#define ACLK_CONTENT_TYPE_JSON "application/json"
-#define SEND_HTTPS_REQUEST_TIMEOUT 30
-#endif
-
-int aclk_send_https_request(char *method, char *host, int port, char *url, char *b, size_t b_size, char *payload);
-
-#endif /* NETDATA_LWS_HTTPS_CLIENT_H */
diff --git a/aclk/legacy/aclk_lws_wss_client.c b/aclk/legacy/aclk_lws_wss_client.c
deleted file mode 100644
index 012f2a8cc1..0000000000
--- a/aclk/legacy/aclk_lws_wss_client.c
+++ /dev/null
@@ -1,622 +0,0 @@
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-#include "aclk_lws_wss_client.h"
-
-#include "libnetdata/libnetdata.h"
-#include "daemon/common.h"
-#include "aclk_common.h"
-#include "aclk_stats.h"
-#include "../aclk_proxy.h"
-
-extern int aclk_shutting_down;
-
-static int aclk_lws_wss_callback(struct lws *wsi, enum lws_callback_reasons reason, void *user, void *in, size_t len);
-
-struct aclk_lws_wss_perconnect_data {
- int todo;
-};
-
-static struct aclk_lws_wss_engine_instance *engine_instance = NULL;
-
-void lws_wss_check_queues(size_t *write_len, size_t *write_len_bytes, size_t *read_len)
-{
- if (write_len != NULL && write_len_bytes != NULL)
- {
- *write_len = 0;
- *write_len_bytes = 0;
- if (engine_instance != NULL)
- {
- aclk_lws_mutex_lock(&engine_instance->write_buf_mutex);
-
- struct lws_wss_packet_buffer *write_b;
- size_t w,wb;
- for(w=0, wb=0, write_b = engine_instance->write_buffer_head; write_b != NULL; write_b = write_b->next)
- {
- w++;
- wb += write_b->data_size - write_b->written;
- }
- *write_len = w;
- *write_len_bytes = wb;
- aclk_lws_mutex_unlock(&engine_instance->write_buf_mutex);
- }
- }
- else if (write_len != NULL)
- {
- *write_len = 0;
- if (engine_instance != NULL)
- {
- aclk_lws_mutex_lock(&engine_instance->write_buf_mutex);
-
- struct lws_wss_packet_buffer *write_b;
- size_t w;
- for(w=0, write_b = engine_instance->write_buffer_head; write_b != NULL; write_b = write_b->next)
- w++;
- *write_len = w;
- aclk_lws_mutex_unlock(&engine_instance->write_buf_mutex);
- }
- }
- if (read_len != NULL)
- {
- *read_len = 0;
- if (engine_instance != NULL)
- {
- aclk_lws_mutex_lock(&engine_instance->read_buf_mutex);
- *read_len = lws_ring_get_count_waiting_elements(engine_instance->read_ringbuffer, NULL);
- aclk_lws_mutex_unlock(&engine_instance->read_buf_mutex);
- }
- }
-}
-
-static inline struct lws_wss_packet_buffer *lws_wss_packet_buffer_new(void *data, size_t size)
-{
- struct lws_wss_packet_buffer *new = callocz(1, sizeof(struct lws_wss_packet_buffer));
- if (data) {
- new->data = mallocz(LWS_PRE + size);
- memcpy(new->data + LWS_PRE, data, size);
- new->data_size = size;
- new->written = 0;
- }
- return new;
-}
-
-static inline void lws_wss_packet_buffer_append(struct lws_wss_packet_buffer **list, struct lws_wss_packet_buffer *item)
-{
- struct lws_wss_packet_buffer *tail = *list;
- if (!*list) {
- *list = item;
- return;
- }
- while (tail->next) {
- tail = tail->next;
- }
- tail->next = item;
-}
-
-static inline struct lws_wss_packet_buffer *lws_wss_packet_b