master
c 70 lines 2.75 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #include "pluginsd_dyncfg.h"
4
5
6 // ----------------------------------------------------------------------------
7
8 PARSER_RC pluginsd_config(char **words, size_t num_words, PARSER *parser) {
9 // config command is only available to localhost
10 RRDHOST *host = localhost; /* pluginsd_require_scope_host(parser, PLUGINSD_KEYWORD_CONFIG);*/
11 if(!host) return PARSER_RC_ERROR;
12
13 size_t i = 1;
14 char *id = get_word(words, num_words, i++);
15 char *action = get_word(words, num_words, i++);
16
17 if(strcmp(action, PLUGINSD_KEYWORD_CONFIG_ACTION_CREATE) == 0) {
18 char *status_str = get_word(words, num_words, i++);
19 char *type_str = get_word(words, num_words, i++);
20 char *path = get_word(words, num_words, i++);
21 char *source_type_str = get_word(words, num_words, i++);
22 char *source = get_word(words, num_words, i++);
23 char *supported_cmds_str = get_word(words, num_words, i++);
24 char *view_permissions_str = get_word(words, num_words, i++);
25 char *edit_permissions_str = get_word(words, num_words, i++);
26
27 DYNCFG_STATUS status = dyncfg_status2id(status_str);
28 DYNCFG_TYPE type = dyncfg_type2id(type_str);
29 DYNCFG_SOURCE_TYPE source_type = dyncfg_source_type2id(source_type_str);
30 DYNCFG_CMDS cmds = dyncfg_cmds2id(supported_cmds_str);
31 HTTP_ACCESS view_access = http_access_from_hex(view_permissions_str);
32 HTTP_ACCESS edit_access = http_access_from_hex(edit_permissions_str);
33
34 if(!dyncfg_add_low_level(
35 host,
36 id,
37 path,
38 status,
39 type,
40 source_type,
41 source,
42 cmds,
43 0,
44 0,
45 false,
46 view_access,
47 edit_access,
48 pluginsd_function_execute_cb,
49 parser))
50 return PARSER_RC_ERROR;
51 }
52 else if(strcmp(action, PLUGINSD_KEYWORD_CONFIG_ACTION_DELETE) == 0) {
53 dyncfg_del_low_level(host, id);
54 }
55 else if(strcmp(action, PLUGINSD_KEYWORD_CONFIG_ACTION_STATUS) == 0) {
56 char *status_str = get_word(words, num_words, i++);
57 dyncfg_status_low_level(host, id, dyncfg_status2id(status_str));
58 }
59 else
60 nd_log(NDLS_COLLECTORS, NDLP_WARNING, "DYNCFG: unknown action '%s' received from plugin", action);
61
62 parser->user.data_collections_count++;
63 return PARSER_RC_OK;
64 }
65
66 // ----------------------------------------------------------------------------
67
68 PARSER_RC pluginsd_dyncfg_noop(char **words __maybe_unused, size_t num_words __maybe_unused, PARSER *parser __maybe_unused) {
69 return PARSER_RC_OK;
70 }