registry_internals.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_REGISTRY_INTERNALS_H_H
  3. #define NETDATA_REGISTRY_INTERNALS_H_H 1
  4. #include "registry.h"
  5. #define REGISTRY_URL_FLAGS_DEFAULT 0x00
  6. #define REGISTRY_URL_FLAGS_EXPIRED 0x01
  7. #define DICTIONARY_FLAGS (DICTIONARY_FLAG_VALUE_LINK_DONT_CLONE | DICTIONARY_FLAG_NAME_LINK_DONT_CLONE | DICTIONARY_FLAG_SINGLE_THREADED)
  8. // ----------------------------------------------------------------------------
  9. // COMMON structures
  10. struct registry {
  11. int enabled;
  12. // entries counters / statistics
  13. unsigned long long persons_count;
  14. unsigned long long machines_count;
  15. unsigned long long usages_count;
  16. unsigned long long urls_count;
  17. unsigned long long persons_urls_count;
  18. unsigned long long machines_urls_count;
  19. unsigned long long log_count;
  20. // memory counters / statistics
  21. unsigned long long persons_memory;
  22. unsigned long long machines_memory;
  23. unsigned long long urls_memory;
  24. unsigned long long persons_urls_memory;
  25. unsigned long long machines_urls_memory;
  26. // configuration
  27. unsigned long long save_registry_every_entries;
  28. char *registry_domain;
  29. char *hostname;
  30. char *registry_to_announce;
  31. char *cloud_base_url;
  32. time_t persons_expiration; // seconds to expire idle persons
  33. int verify_cookies_redirects;
  34. int enable_cookies_samesite_secure;
  35. size_t max_url_length;
  36. size_t max_name_length;
  37. // file/path names
  38. char *pathname;
  39. char *db_filename;
  40. char *log_filename;
  41. char *machine_guid_filename;
  42. // open files
  43. FILE *log_fp;
  44. // the database
  45. DICTIONARY *persons; // dictionary of REGISTRY_PERSON *, with key the REGISTRY_PERSON.guid
  46. DICTIONARY *machines; // dictionary of REGISTRY_MACHINE *, with key the REGISTRY_MACHINE.guid
  47. avl_tree_type registry_urls_root_index;
  48. netdata_mutex_t lock;
  49. };
  50. #include "registry_url.h"
  51. #include "registry_machine.h"
  52. #include "registry_person.h"
  53. #include "registry.h"
  54. extern struct registry registry;
  55. // REGISTRY LOW-LEVEL REQUESTS (in registry-internals.c)
  56. extern REGISTRY_PERSON *registry_request_access(char *person_guid, char *machine_guid, char *url, char *name, time_t when);
  57. extern REGISTRY_PERSON *registry_request_delete(char *person_guid, char *machine_guid, char *url, char *delete_url, time_t when);
  58. extern REGISTRY_MACHINE *registry_request_machine(char *person_guid, char *machine_guid, char *url, char *request_machine, time_t when);
  59. // REGISTRY LOG (in registry_log.c)
  60. extern void registry_log(char action, REGISTRY_PERSON *p, REGISTRY_MACHINE *m, REGISTRY_URL *u, char *name);
  61. extern int registry_log_open(void);
  62. extern void registry_log_close(void);
  63. extern void registry_log_recreate(void);
  64. extern ssize_t registry_log_load(void);
  65. // REGISTRY DB (in registry_db.c)
  66. extern int registry_db_save(void);
  67. extern size_t registry_db_load(void);
  68. extern int registry_db_should_be_saved(void);
  69. #endif //NETDATA_REGISTRY_INTERNALS_H_H