summaryrefslogtreecommitdiffstats
path: root/aclk
diff options
context:
space:
mode:
authorTimotej S <6674623+underhood@users.noreply.github.com>2020-09-24 11:54:57 +0200
committerGitHub <noreply@github.com>2020-09-24 11:54:57 +0200
commitb2ac03cf4bf6bf19783ff726585dc5b62bb55520 (patch)
tree13ee644aed282f7876b630e941a7a23841ee8410 /aclk
parent7a309223604417cb27dc87a3ae81e7ed71df7f94 (diff)
allows using LWS without SOCKS5 (#9973)
* allows using LWS without SOCKS5
Diffstat (limited to 'aclk')
-rw-r--r--aclk/aclk_common.c25
-rw-r--r--aclk/aclk_lws_wss_client.c8
-rw-r--r--aclk/agent_cloud_link.c14
3 files changed, 45 insertions, 2 deletions
diff --git a/aclk/aclk_common.c b/aclk/aclk_common.c
index 188f41a09c..57c86f6c52 100644
--- a/aclk/aclk_common.c
+++ b/aclk/aclk_common.c
@@ -2,6 +2,10 @@
#include "../daemon/common.h"
+#ifdef ENABLE_ACLK
+#include <libwebsockets.h>
+#endif
+
netdata_mutex_t aclk_shared_state_mutex = NETDATA_MUTEX_INITIALIZER;
int aclk_disable_runtime = 0;
@@ -144,14 +148,31 @@ const char *aclk_lws_wss_get_proxy_setting(ACLK_PROXY_TYPE *type)
return proxy;
if (strcmp(proxy, ACLK_PROXY_ENV) == 0) {
- if (check_socks_enviroment(&proxy) == 0)
+ if (check_socks_enviroment(&proxy) == 0) {
+#ifdef LWS_WITH_SOCKS5
*type = PROXY_TYPE_SOCKS5;
- else if (check_http_enviroment(&proxy) == 0)
+ return proxy;
+#else
+ safe_log_proxy_error("socks_proxy environment variable set to use SOCKS5 proxy "
+ "but Libwebsockets used doesn't have SOCKS5 support built in. "
+ "Ignoring and checking for other options.",
+ proxy);
+#endif
+ }
+ if (check_http_enviroment(&proxy) == 0)
*type = PROXY_TYPE_HTTP;
return proxy;
}
*type = aclk_verify_proxy(proxy);
+#ifndef LWS_WITH_SOCKS5
+ if (*type == PROXY_TYPE_SOCKS5) {
+ safe_log_proxy_error(
+ "Config var \"" ACLK_PROXY_CONFIG_VAR
+ "\" set to use SOCKS5 proxy but Libwebsockets used is built without support for SOCKS proxy. ACLK will be disabled.",
+ proxy);
+ }
+#endif
if (*type == PROXY_TYPE_UNKNOWN) {
*type = PROXY_DISABLED;
safe_log_proxy_error(
diff --git a/aclk/aclk_lws_wss_client.c b/aclk/aclk_lws_wss_client.c
index e5779cede1..a5e675355c 100644
--- a/aclk/aclk_lws_wss_client.c
+++ b/aclk/aclk_lws_wss_client.c
@@ -209,6 +209,7 @@ void aclk_lws_wss_client_destroy()
#endif
}
+#ifdef LWS_WITH_SOCKS5
static int aclk_wss_set_socks(struct lws_vhost *vhost, const char *socks)
{
char *proxy = strstr(socks, ACLK_PROXY_PROTO_ADDR_SEPARATOR);
@@ -223,6 +224,7 @@ static int aclk_wss_set_socks(struct lws_vhost *vhost, const char *socks)
return lws_set_socks(vhost, proxy);
}
+#endif
void aclk_wss_set_proxy(struct lws_vhost *vhost)
{
@@ -232,7 +234,9 @@ void aclk_wss_set_proxy(struct lws_vhost *vhost)
proxy = aclk_get_proxy(&proxy_type);
+#ifdef LWS_WITH_SOCKS5
lws_set_socks(vhost, ":");
+#endif
lws_set_proxy(vhost, ":");
if (proxy_type == PROXY_TYPE_UNKNOWN) {
@@ -247,9 +251,13 @@ void aclk_wss_set_proxy(struct lws_vhost *vhost)
freez(log);
}
if (proxy_type == PROXY_TYPE_SOCKS5) {
+#ifdef LWS_WITH_SOCKS5
if (aclk_wss_set_socks(vhost, proxy))
error("LWS failed to accept socks proxy.");
return;
+#else
+ fatal("We have no SOCKS5 support but we made it here. Programming error!");
+#endif
}
if (proxy_type == PROXY_TYPE_HTTP) {
if (lws_set_proxy(vhost, proxy))
diff --git a/aclk/agent_cloud_link.c b/aclk/agent_cloud_link.c
index 27d95c0002..47150fa920 100644
--- a/aclk/agent_cloud_link.c
+++ b/aclk/agent_cloud_link.c
@@ -7,6 +7,10 @@
#include "aclk_common.h"
#include "aclk_stats.h"
+#ifdef ENABLE_ACLK
+#include <libwebsockets.h>
+#endif
+
int aclk_shutting_down = 0;
// Other global state
@@ -886,6 +890,16 @@ void *aclk_main(void *ptr)
return NULL;
#endif
+#ifndef LWS_WITH_SOCKS5
+ ACLK_PROXY_TYPE proxy_type;
+ aclk_get_proxy(&proxy_type);
+ if(proxy_type == PROXY_TYPE_SOCKS5) {
+ error("Disabling ACLK due to requested SOCKS5 proxy.");
+ static_thread->enabled = NETDATA_MAIN_THREAD_EXITED;
+ return NULL;
+ }
+#endif
+
info("Waiting for netdata to be ready");
while (!netdata_ready) {
sleep_usec(USEC_PER_MS * 300);