aclk_api.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. #define ACLK_IMPL_KEY_NAME "aclk implementation"
  15. #ifdef ENABLE_ACLK
  16. void *aclk_starter(void *ptr) {
  17. char *aclk_impl_req = config_get(CONFIG_SECTION_CLOUD, ACLK_IMPL_KEY_NAME, "ng");
  18. if (!strcasecmp(aclk_impl_req, "ng")) {
  19. return aclk_main(ptr);
  20. } else if (!strcasecmp(aclk_impl_req, "legacy")) {
  21. error("Legacy ACLK is not supported anymore key \"" ACLK_IMPL_KEY_NAME "\" in section \"" CONFIG_SECTION_CLOUD "\" ignored. Using ACLK-NG.");
  22. } else {
  23. 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);
  24. }
  25. return aclk_main(ptr);
  26. }
  27. void aclk_single_update_disable()
  28. {
  29. aclk_disable_single_updates = 1;
  30. }
  31. void aclk_single_update_enable()
  32. {
  33. aclk_disable_single_updates = 0;
  34. }
  35. #endif /* ENABLE_ACLK */
  36. struct label *add_aclk_host_labels(struct label *label) {
  37. #ifdef ENABLE_ACLK
  38. label = add_label_to_list(label, "_aclk_ng_available", "true", LABEL_SOURCE_AUTO);
  39. #else
  40. label = add_label_to_list(label, "_aclk_ng_available", "false", LABEL_SOURCE_AUTO);
  41. #endif
  42. label = add_label_to_list(label, "_aclk_legacy_available", "false", LABEL_SOURCE_AUTO);
  43. #ifdef ENABLE_ACLK
  44. ACLK_PROXY_TYPE aclk_proxy;
  45. char *proxy_str;
  46. aclk_get_proxy(&aclk_proxy);
  47. switch(aclk_proxy) {
  48. case PROXY_TYPE_SOCKS5:
  49. proxy_str = "SOCKS5";
  50. break;
  51. case PROXY_TYPE_HTTP:
  52. proxy_str = "HTTP";
  53. break;
  54. default:
  55. proxy_str = "none";
  56. break;
  57. }
  58. label = add_label_to_list(label, "_aclk_impl", "Next Generation", LABEL_SOURCE_AUTO);
  59. label = add_label_to_list(label, "_aclk_proxy", proxy_str, LABEL_SOURCE_AUTO);
  60. #ifdef ENABLE_NEW_CLOUD_PROTOCOL
  61. label = add_label_to_list(label, "_aclk_ng_new_cloud_protocol", "true", LABEL_SOURCE_AUTO);
  62. #else
  63. label = add_label_to_list(label, "_aclk_ng_new_cloud_protocol", "false", LABEL_SOURCE_AUTO);
  64. #endif
  65. #endif
  66. return label;
  67. }
  68. char *aclk_state(void) {
  69. #ifndef ENABLE_ACLK
  70. return strdupz("ACLK Available: No");
  71. #else
  72. return ng_aclk_state();
  73. #endif
  74. }
  75. char *aclk_state_json(void) {
  76. #ifndef ENABLE_ACLK
  77. return strdupz("{\"aclk-available\":false}");
  78. #else
  79. return ng_aclk_state_json();
  80. #endif
  81. }