diff options
author | Timotej S <6674623+underhood@users.noreply.github.com> | 2020-09-24 11:54:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-24 11:54:57 +0200 |
commit | b2ac03cf4bf6bf19783ff726585dc5b62bb55520 (patch) | |
tree | 13ee644aed282f7876b630e941a7a23841ee8410 /aclk | |
parent | 7a309223604417cb27dc87a3ae81e7ed71df7f94 (diff) |
allows using LWS without SOCKS5 (#9973)
* allows using LWS without SOCKS5
Diffstat (limited to 'aclk')
-rw-r--r-- | aclk/aclk_common.c | 25 | ||||
-rw-r--r-- | aclk/aclk_lws_wss_client.c | 8 | ||||
-rw-r--r-- | aclk/agent_cloud_link.c | 14 |
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); |