aclk_api.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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_disable_single_updates = 0;
  13. int aclk_stats_enabled;
  14. int use_mqtt_5 = 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. void aclk_single_update_disable()
  29. {
  30. aclk_disable_single_updates = 1;
  31. }
  32. void aclk_single_update_enable()
  33. {
  34. aclk_disable_single_updates = 0;
  35. }
  36. #endif /* ENABLE_ACLK */
  37. struct label *add_aclk_host_labels(struct label *label) {
  38. #ifdef ENABLE_ACLK
  39. label = add_label_to_list(label, "_aclk_ng_available", "true", LABEL_SOURCE_AUTO);
  40. #else
  41. label = add_label_to_list(label, "_aclk_ng_available", "false", LABEL_SOURCE_AUTO);
  42. #endif
  43. label = add_label_to_list(label, "_aclk_legacy_available", "false", LABEL_SOURCE_AUTO);
  44. #ifdef ENABLE_ACLK
  45. ACLK_PROXY_TYPE aclk_proxy;
  46. char *proxy_str;
  47. aclk_get_proxy(&aclk_proxy);
  48. switch(aclk_proxy) {
  49. case PROXY_TYPE_SOCKS5:
  50. proxy_str = "SOCKS5";
  51. break;
  52. case PROXY_TYPE_HTTP:
  53. proxy_str = "HTTP";
  54. break;
  55. default:
  56. proxy_str = "none";
  57. break;
  58. }
  59. int mqtt5 = config_get_boolean(CONFIG_SECTION_CLOUD, "mqtt5", CONFIG_BOOLEAN_NO);
  60. label = add_label_to_list(label, "_mqtt_version", mqtt5 ? "5" : "3", LABEL_SOURCE_AUTO);
  61. label = add_label_to_list(label, "_aclk_impl", "Next Generation", LABEL_SOURCE_AUTO);
  62. label = add_label_to_list(label, "_aclk_proxy", proxy_str, LABEL_SOURCE_AUTO);
  63. #ifdef ENABLE_NEW_CLOUD_PROTOCOL
  64. label = add_label_to_list(label, "_aclk_ng_new_cloud_protocol", "true", LABEL_SOURCE_AUTO);
  65. #else
  66. label = add_label_to_list(label, "_aclk_ng_new_cloud_protocol", "false", LABEL_SOURCE_AUTO);
  67. #endif
  68. #endif
  69. return label;
  70. }
  71. char *aclk_state(void) {
  72. #ifndef ENABLE_ACLK
  73. return strdupz("ACLK Available: No");
  74. #else
  75. return ng_aclk_state();
  76. #endif
  77. }
  78. char *aclk_state_json(void) {
  79. #ifndef ENABLE_ACLK
  80. return strdupz("{\"aclk-available\":false}");
  81. #else
  82. return ng_aclk_state_json();
  83. #endif
  84. }