aclk_api.c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #include "libnetdata/libnetdata.h"
  3. #include "database/rrd.h"
  4. #ifdef ENABLE_ACLK
  5. #include "aclk.h"
  6. #endif
  7. int aclk_connected = 0;
  8. int aclk_kill_link = 0;
  9. usec_t aclk_session_us = 0;
  10. time_t aclk_session_sec = 0;
  11. int aclk_disable_runtime = 0;
  12. int aclk_stats_enabled;
  13. int use_mqtt_5 = 0;
  14. int aclk_ctx_based = 0;
  15. #define ACLK_IMPL_KEY_NAME "aclk implementation"
  16. #ifdef ENABLE_ACLK
  17. void *aclk_starter(void *ptr) {
  18. char *aclk_impl_req = config_get(CONFIG_SECTION_CLOUD, ACLK_IMPL_KEY_NAME, "ng");
  19. if (!strcasecmp(aclk_impl_req, "ng")) {
  20. return aclk_main(ptr);
  21. } else if (!strcasecmp(aclk_impl_req, "legacy")) {
  22. error("Legacy ACLK is not supported anymore key \"" ACLK_IMPL_KEY_NAME "\" in section \"" CONFIG_SECTION_CLOUD "\" ignored. Using ACLK-NG.");
  23. } else {
  24. error("Unknown value \"%s\" of key \"" ACLK_IMPL_KEY_NAME "\" in section \"" CONFIG_SECTION_CLOUD "\". Using ACLK-NG. This config key will be deprecated.", aclk_impl_req);
  25. }
  26. return aclk_main(ptr);
  27. }
  28. #endif /* ENABLE_ACLK */
  29. void add_aclk_host_labels(void) {
  30. DICTIONARY *labels = localhost->host_labels;
  31. #ifdef ENABLE_ACLK
  32. rrdlabels_add(labels, "_aclk_ng_available", "true", RRDLABEL_SRC_AUTO|RRDLABEL_SRC_ACLK);
  33. #else
  34. rrdlabels_add(labels, "_aclk_ng_available", "false", RRDLABEL_SRC_AUTO|RRDLABEL_SRC_ACLK);
  35. #endif
  36. rrdlabels_add(labels, "_aclk_legacy_available", "false", RRDLABEL_SRC_AUTO|RRDLABEL_SRC_ACLK);
  37. #ifdef ENABLE_ACLK
  38. ACLK_PROXY_TYPE aclk_proxy;
  39. char *proxy_str;
  40. aclk_get_proxy(&aclk_proxy);
  41. switch(aclk_proxy) {
  42. case PROXY_TYPE_SOCKS5:
  43. proxy_str = "SOCKS5";
  44. break;
  45. case PROXY_TYPE_HTTP:
  46. proxy_str = "HTTP";
  47. break;
  48. default:
  49. proxy_str = "none";
  50. break;
  51. }
  52. int mqtt5 = config_get_boolean(CONFIG_SECTION_CLOUD, "mqtt5", CONFIG_BOOLEAN_YES);
  53. rrdlabels_add(labels, "_mqtt_version", mqtt5 ? "5" : "3", RRDLABEL_SRC_AUTO);
  54. rrdlabels_add(labels, "_aclk_impl", "Next Generation", RRDLABEL_SRC_AUTO);
  55. rrdlabels_add(labels, "_aclk_proxy", proxy_str, RRDLABEL_SRC_AUTO);
  56. rrdlabels_add(labels, "_aclk_ng_new_cloud_protocol", "true", RRDLABEL_SRC_AUTO|RRDLABEL_SRC_ACLK);
  57. #endif
  58. }
  59. char *aclk_state(void) {
  60. #ifndef ENABLE_ACLK
  61. return strdupz("ACLK Available: No");
  62. #else
  63. return ng_aclk_state();
  64. #endif
  65. }
  66. char *aclk_state_json(void) {
  67. #ifndef ENABLE_ACLK
  68. return strdupz("{\"aclk-available\":false}");
  69. #else
  70. return ng_aclk_state_json();
  71. #endif
  72. }