@cryptotaxi247 / netdata-1 / commits / a05a8f407

Pre release fixes (#15405)

Costa Tsaousis committed Jul 14, 2023 at 21:04 UTC a05a8f4074d8bdf8320915590e2a3794997215c1
7 files changed +28 -37
daemon/main.c
+2
@@ -1904,6 +1904,8 @@ int main(int argc, char **argv) {
1904
1905 get_system_timezone();
1906
1907 + bearer_tokens_init();
1908 +
1909 replication_initialize();
1910
1911 // --------------------------------------------------------------------
database/rrdhost.c
+2
@@ -1065,12 +1065,14 @@ int rrd_init(char *hostname, struct rrdhost_system_info *system_info, bool unitt
1065 return 1;
1066 }
1067
1068 +#ifdef NETDATA_DEV_MODE
1069 // we register this only on localhost
1070 // for the other nodes, the origin server should register it
1071 rrd_collector_started(); // this creates a collector that runs for as long as netdata runs
1072 rrd_collector_add_function(localhost, NULL, "streaming", 10,
1073 RRDFUNCTIONS_STREAMING_HELP, true,
1074 rrdhost_function_streaming, NULL);
1075 +#endif
1076
1077 if (likely(system_info)) {
1078 migrate_localhost(&localhost->host_uuid);
libnetdata/socket/socket.h
+1
@@ -28,6 +28,7 @@ typedef enum web_client_acl {
28 } WEB_CLIENT_ACL;
29
30 #define WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC (WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK | WEB_CLIENT_ACL_WEBRTC | WEB_CLIENT_ACL_BEARER_OPTIONAL)
31 +#define WEB_CLIENT_ACL_ACLK_WEBRTC_DASHBOARD_WITH_BEARER (WEB_CLIENT_ACL_DASHBOARD | WEB_CLIENT_ACL_ACLK | WEB_CLIENT_ACL_WEBRTC | WEB_CLIENT_ACL_BEARER_REQUIRED)
32
33 #ifdef NETDATA_DEV_MODE
34 #define ACL_DEV_OPEN_ACCESS WEB_CLIENT_ACL_DASHBOARD
registry/registry.c
+11 -18
@@ -190,26 +190,19 @@ int registry_request_hello_json(RRDHOST *host, struct web_client *w) {
190 buffer_json_member_add_boolean(w->response.data, "anonymous_statistics", netdata_anonymous_statistics_enabled);
191
192 buffer_json_member_add_array(w->response.data, "nodes");
193 - {
193 + RRDHOST *h;
194 + dfe_start_read(rrdhost_root_index, h) {
195 buffer_json_add_array_item_object(w->response.data);
195 - buffer_json_member_add_string(w->response.data, "machine_guid", host->machine_guid);
196 - buffer_json_member_add_string(w->response.data, "hostname", rrdhost_registry_hostname(host));
196 + buffer_json_member_add_string(w->response.data, "machine_guid", h->machine_guid);
197 +
198 + if(h->node_id)
199 + buffer_json_member_add_uuid(w->response.data, "node_id", h->node_id);
200 +
201 + buffer_json_member_add_string(w->response.data, "hostname", rrdhost_registry_hostname(h));
202 + buffer_json_object_close(w->response.data);
203 }
198 - buffer_json_object_close(w->response.data); // nodes
199 -
200 -// RRDHOST *h;
201 -// dfe_start_read(rrdhost_root_index, h) {
202 -// buffer_json_add_array_item_object(w->response.data);
203 -// buffer_json_member_add_string(w->response.data, "machine_guid", h->machine_guid);
204 -//
205 -// if(h->node_id)
206 -// buffer_json_member_add_uuid(w->response.data, "node_id", h->node_id);
207 -//
208 -// buffer_json_member_add_string(w->response.data, "hostname", rrdhost_registry_hostname(h));
209 -// buffer_json_object_close(w->response.data);
210 -// }
211 -// dfe_done(h);
212 - buffer_json_array_close(w->response.data);
204 + dfe_done(h);
205 + buffer_json_array_close(w->response.data); // nodes
206
207 registry_json_footer(w);
208 return HTTP_RESP_OK;
web/api/web_api.h
+1
@@ -13,6 +13,7 @@ extern bool netdata_is_protected_by_bearer;
13 extern DICTIONARY *netdata_authorized_bearers;
14 bool api_check_bearer_token(struct web_client *w);
15 bool extract_bearer_token_from_request(struct web_client *w, char *dst, size_t dst_len);
16 +void bearer_tokens_init(void);
17
18 struct web_api_command {
19 const char *command;
web/api/web_api_v1.c
+4 -4
@@ -1545,18 +1545,18 @@ static struct web_api_command api_commands_v1[] = {
1545 // { "ml_models", 0, WEB_CLIENT_ACL_DASHBOARD, web_client_api_request_v1_ml_models },
1546 #endif
1547
1548 - {"manage/health", 0, WEB_CLIENT_ACL_MGMT | WEB_CLIENT_ACL_ACLK | WEB_CLIENT_ACL_BEARER_REQUIRED, web_client_api_request_v1_mgmt_health },
1548 + {"manage/health", 0, WEB_CLIENT_ACL_MGMT | WEB_CLIENT_ACL_ACLK_WEBRTC_DASHBOARD_WITH_BEARER, web_client_api_request_v1_mgmt_health },
1549 { "aclk", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_aclk_state },
1550 { "metric_correlations", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_metric_correlations },
1551 { "weights", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_weights },
1552
1553 - {"function", 0, WEB_CLIENT_ACL_ACLK | WEB_CLIENT_ACL_BEARER_REQUIRED | ACL_DEV_OPEN_ACCESS, web_client_api_request_v1_function },
1554 - {"functions", 0, WEB_CLIENT_ACL_ACLK | WEB_CLIENT_ACL_BEARER_REQUIRED | ACL_DEV_OPEN_ACCESS, web_client_api_request_v1_functions },
1553 + {"function", 0, WEB_CLIENT_ACL_ACLK_WEBRTC_DASHBOARD_WITH_BEARER | ACL_DEV_OPEN_ACCESS, web_client_api_request_v1_function },
1554 + {"functions", 0, WEB_CLIENT_ACL_ACLK_WEBRTC_DASHBOARD_WITH_BEARER | ACL_DEV_OPEN_ACCESS, web_client_api_request_v1_functions },
1555
1556 { "dbengine_stats", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v1_dbengine_stats },
1557
1558 // terminator
1559 - { NULL, 0, WEB_CLIENT_ACL_NONE, NULL },
1559 + { NULL, 0, WEB_CLIENT_ACL_NONE, NULL },
1560 };
1561
1562 inline int web_client_api_request_v1(RRDHOST *host, struct web_client *w, char *url_path_endpoint) {
web/api/web_api_v2.c
+7 -15
@@ -28,21 +28,13 @@ static void bearer_token_cleanup(void) {
28 dictionary_garbage_collect(netdata_authorized_bearers);
29 }
30
31 -static time_t bearer_get_token(uuid_t *uuid) {
32 - static SPINLOCK spinlock = NETDATA_SPINLOCK_INITIALIZER;
33 - static bool initialized = false;
34 -
35 - if(!initialized) {
36 - spinlock_lock(&spinlock);
37 - if (!netdata_authorized_bearers) {
38 - netdata_authorized_bearers = dictionary_create_advanced(
39 - DICT_OPTION_SINGLE_THREADED | DICT_OPTION_DONT_OVERWRITE_VALUE | DICT_OPTION_FIXED_SIZE,
40 - NULL, sizeof(struct bearer_token));
41 - }
42 - spinlock_unlock(&spinlock);
43 - initialized = true;
44 - }
31 +void bearer_tokens_init(void) {
32 + netdata_authorized_bearers = dictionary_create_advanced(
33 + DICT_OPTION_DONT_OVERWRITE_VALUE | DICT_OPTION_FIXED_SIZE,
34 + NULL, sizeof(struct bearer_token));
35 +}
36
37 +static time_t bearer_get_token(uuid_t *uuid) {
38 char uuid_str[UUID_STR_LEN];
39
40 uuid_generate_random(*uuid);
@@ -657,7 +649,7 @@ static struct web_api_command api_commands_v2[] = {
649 {"nodes", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_nodes},
650 {"node_instances", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_node_instances},
651 {"versions", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_versions},
660 - {"functions", 0, WEB_CLIENT_ACL_ACLK | WEB_CLIENT_ACL_BEARER_REQUIRED | ACL_DEV_OPEN_ACCESS, web_client_api_request_v2_functions},
652 + {"functions", 0, WEB_CLIENT_ACL_ACLK_WEBRTC_DASHBOARD_WITH_BEARER | ACL_DEV_OPEN_ACCESS, web_client_api_request_v2_functions},
653 {"q", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_q},
654 {"alerts", 0, WEB_CLIENT_ACL_DASHBOARD_ACLK_WEBRTC, web_client_api_request_v2_alerts},
655