summaryrefslogtreecommitdiffstats
path: root/web/api/web_api_v1.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-10-17 09:30:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-10-17 09:30:20 +0000
commit386ccdd61e8256c8b21ee27ee2fc12438fc5ca98 (patch)
treec9fbcacdb01f029f46133a5ba7ecd610c2bcb041 /web/api/web_api_v1.c
parentAdding upstream version 1.42.4. (diff)
downloadnetdata-386ccdd61e8256c8b21ee27ee2fc12438fc5ca98.tar.xz
netdata-386ccdd61e8256c8b21ee27ee2fc12438fc5ca98.zip
Adding upstream version 1.43.0.upstream/1.43.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/api/web_api_v1.c')
-rw-r--r--web/api/web_api_v1.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/web/api/web_api_v1.c b/web/api/web_api_v1.c
index 6371f86b7..648864017 100644
--- a/web/api/web_api_v1.c
+++ b/web/api/web_api_v1.c
@@ -644,7 +644,7 @@ inline int web_client_api_request_v1_charts(RRDHOST *host, struct web_client *w,
buffer_flush(w->response.data);
w->response.data->content_type = CT_APPLICATION_JSON;
- charts2json(host, w->response.data, 0, 0);
+ charts2json(host, w->response.data, 0);
return HTTP_RESP_OK;
}
@@ -1013,11 +1013,7 @@ inline int web_client_api_request_v1_registry(RRDHOST *host, struct web_client *
#endif /* NETDATA_INTERNAL_CHECKS */
}
- if(unlikely(respect_web_browser_do_not_track_policy && web_client_has_donottrack(w))) {
- buffer_flush(w->response.data);
- buffer_sprintf(w->response.data, "Your web browser is sending 'DNT: 1' (Do Not Track). The registry requires persistent cookies on your browser to work.");
- return HTTP_RESP_BAD_REQUEST;
- }
+ bool do_not_track = respect_web_browser_do_not_track_policy && web_client_has_donottrack(w);
if(unlikely(action == 'H')) {
// HELLO request, dashboard ACL
@@ -1029,6 +1025,12 @@ inline int web_client_api_request_v1_registry(RRDHOST *host, struct web_client *
// everything else, registry ACL
if(unlikely(!web_client_can_access_registry(w)))
return web_client_permission_denied(w);
+
+ if(unlikely(do_not_track)) {
+ buffer_flush(w->response.data);
+ buffer_sprintf(w->response.data, "Your web browser is sending 'DNT: 1' (Do Not Track). The registry requires persistent cookies on your browser to work.");
+ return HTTP_RESP_BAD_REQUEST;
+ }
}
buffer_no_cacheable(w->response.data);
@@ -1079,7 +1081,7 @@ inline int web_client_api_request_v1_registry(RRDHOST *host, struct web_client *
return registry_request_switch_json(host, w, person_guid, machine_guid, machine_url, to_person_guid, now_realtime_sec());
case 'H':
- return registry_request_hello_json(host, w);
+ return registry_request_hello_json(host, w, do_not_track);
default:
buffer_flush(w->response.data);
@@ -1313,7 +1315,7 @@ int web_client_api_request_v1_ml_info(RRDHOST *host, struct web_client *w, char
(void) url;
if (!netdata_ready)
- return HTTP_RESP_BACKEND_FETCH_FAILED;
+ return HTTP_RESP_SERVICE_UNAVAILABLE;
BUFFER *wb = w->response.data;
buffer_flush(wb);
@@ -1332,7 +1334,7 @@ int web_client_api_request_v1_ml_models(RRDHOST *host, struct web_client *w, cha
(void) url;
if (!netdata_ready)
- return HTTP_RESP_BACKEND_FETCH_FAILED;
+ return HTTP_RESP_SERVICE_UNAVAILABLE;
BUFFER *wb = w->response.data;
buffer_flush(wb);
@@ -1346,7 +1348,7 @@ int web_client_api_request_v1_ml_models(RRDHOST *host, struct web_client *w, cha
inline int web_client_api_request_v1_info(RRDHOST *host, struct web_client *w, char *url) {
(void)url;
- if (!netdata_ready) return HTTP_RESP_BACKEND_FETCH_FAILED;
+ if (!netdata_ready) return HTTP_RESP_SERVICE_UNAVAILABLE;
BUFFER *wb = w->response.data;
buffer_flush(wb);
wb->content_type = CT_APPLICATION_JSON;
@@ -1360,7 +1362,7 @@ inline int web_client_api_request_v1_info(RRDHOST *host, struct web_client *w, c
static int web_client_api_request_v1_aclk_state(RRDHOST *host, struct web_client *w, char *url) {
UNUSED(url);
UNUSED(host);
- if (!netdata_ready) return HTTP_RESP_BACKEND_FETCH_FAILED;
+ if (!netdata_ready) return HTTP_RESP_SERVICE_UNAVAILABLE;
BUFFER *wb = w->response.data;
buffer_flush(wb);
@@ -1386,7 +1388,7 @@ int web_client_api_request_v1_weights(RRDHOST *host, struct web_client *w, char
int web_client_api_request_v1_function(RRDHOST *host, struct web_client *w, char *url) {
if (!netdata_ready)
- return HTTP_RESP_BACKEND_FETCH_FAILED;
+ return HTTP_RESP_SERVICE_UNAVAILABLE;
int timeout = 0;
const char *function = NULL;
@@ -1412,12 +1414,14 @@ int web_client_api_request_v1_function(RRDHOST *host, struct web_client *w, char
wb->content_type = CT_APPLICATION_JSON;
buffer_no_cacheable(wb);
- return rrd_call_function_and_wait(host, wb, timeout, function);
+ return rrd_function_run(host, wb, timeout, function, true, NULL,
+ NULL, NULL,
+ web_client_interrupt_callback, w, NULL);
}
int web_client_api_request_v1_functions(RRDHOST *host, struct web_client *w, char *url __maybe_unused) {
if (!netdata_ready)
- return HTTP_RESP_BACKEND_FETCH_FAILED;
+ return HTTP_RESP_SERVICE_UNAVAILABLE;
BUFFER *wb = w->response.data;
buffer_flush(wb);
@@ -1500,7 +1504,7 @@ static void web_client_api_v1_dbengine_stats_for_tier(BUFFER *wb, size_t tier) {
}
int web_client_api_request_v1_dbengine_stats(RRDHOST *host __maybe_unused, struct web_client *w, char *url __maybe_unused) {
if (!netdata_ready)
- return HTTP_RESP_BACKEND_FETCH_FAILED;
+ return HTTP_RESP_SERVICE_UNAVAILABLE;
BUFFER *wb = w->response.data;
buffer_flush(wb);