http_access.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_HTTP_ACCESS_H
  3. #define NETDATA_HTTP_ACCESS_H
  4. typedef enum __attribute__((packed)) {
  5. HTTP_ACCESS_NONE = 0,
  6. HTTP_ACCESS_ADMIN = 1,
  7. HTTP_ACCESS_MEMBER = 2,
  8. HTTP_ACCESS_ANY = 3,
  9. // keep this list so that lower numbers are more strict access levels
  10. } HTTP_ACCESS;
  11. const char *http_id2access(HTTP_ACCESS access);
  12. HTTP_ACCESS http_access2id(const char *access);
  13. typedef enum __attribute__((packed)) {
  14. HTTP_ACL_NONE = (0),
  15. HTTP_ACL_NOCHECK = (1 << 0), // Don't check anything - this should work on all channels
  16. HTTP_ACL_DASHBOARD = (1 << 1),
  17. HTTP_ACL_REGISTRY = (1 << 2),
  18. HTTP_ACL_BADGE = (1 << 3),
  19. HTTP_ACL_MGMT = (1 << 4),
  20. HTTP_ACL_STREAMING = (1 << 5),
  21. HTTP_ACL_NETDATACONF = (1 << 6),
  22. HTTP_ACL_SSL_OPTIONAL = (1 << 7),
  23. HTTP_ACL_SSL_FORCE = (1 << 8),
  24. HTTP_ACL_SSL_DEFAULT = (1 << 9),
  25. HTTP_ACL_ACLK = (1 << 10),
  26. HTTP_ACL_WEBRTC = (1 << 11),
  27. HTTP_ACL_BEARER_IF_PROTECTED = (1 << 12), // allow unprotected access if bearer is not enabled in netdata
  28. HTTP_ACL_BEARER_REQUIRED = (1 << 13), // allow access only if a valid bearer is used
  29. HTTP_ACL_BEARER_OPTIONAL = (1 << 14), // the call may or may not need a bearer - will be determined later
  30. } HTTP_ACL;
  31. #define HTTP_ACL_DASHBOARD_ACLK_WEBRTC (HTTP_ACL_DASHBOARD | HTTP_ACL_ACLK | HTTP_ACL_WEBRTC | HTTP_ACL_BEARER_IF_PROTECTED)
  32. #define HTTP_ACL_ACLK_WEBRTC_DASHBOARD_WITH_OPTIONAL_BEARER (HTTP_ACL_DASHBOARD | HTTP_ACL_ACLK | HTTP_ACL_WEBRTC | HTTP_ACL_BEARER_OPTIONAL)
  33. #ifdef NETDATA_DEV_MODE
  34. #define ACL_DEV_OPEN_ACCESS HTTP_ACL_NOCHECK
  35. #else
  36. #define ACL_DEV_OPEN_ACCESS 0
  37. #endif
  38. #define http_can_access_dashboard(w) ((w)->acl & HTTP_ACL_DASHBOARD)
  39. #define http_can_access_registry(w) ((w)->acl & HTTP_ACL_REGISTRY)
  40. #define http_can_access_badges(w) ((w)->acl & HTTP_ACL_BADGE)
  41. #define http_can_access_mgmt(w) ((w)->acl & HTTP_ACL_MGMT)
  42. #define http_can_access_stream(w) ((w)->acl & HTTP_ACL_STREAMING)
  43. #define http_can_access_netdataconf(w) ((w)->acl & HTTP_ACL_NETDATACONF)
  44. #define http_is_using_ssl_optional(w) ((w)->port_acl & HTTP_ACL_SSL_OPTIONAL)
  45. #define http_is_using_ssl_force(w) ((w)->port_acl & HTTP_ACL_SSL_FORCE)
  46. #define http_is_using_ssl_default(w) ((w)->port_acl & HTTP_ACL_SSL_DEFAULT)
  47. #endif //NETDATA_HTTP_ACCESS_H