http_access.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #include "../libnetdata.h"
  3. static struct {
  4. HTTP_ACCESS access;
  5. const char *name;
  6. } access_levels[] = {
  7. { .access = HTTP_ACCESS_NONE, .name = "none" },
  8. { .access = HTTP_ACCESS_MEMBER, .name = "member" },
  9. { .access = HTTP_ACCESS_ADMIN, .name = "admin" },
  10. { .access = HTTP_ACCESS_ANY, .name = "any" },
  11. { .access = HTTP_ACCESS_MEMBER, .name = "members" },
  12. { .access = HTTP_ACCESS_ADMIN, .name = "admins" },
  13. { .access = HTTP_ACCESS_ANY, .name = "all" },
  14. // terminator
  15. { .access = 0, .name = NULL },
  16. };
  17. HTTP_ACCESS http_access2id(const char *access) {
  18. if(!access || !*access)
  19. return HTTP_ACCESS_MEMBER;
  20. for(size_t i = 0; access_levels[i].name ;i++) {
  21. if(strcmp(access_levels[i].name, access) == 0)
  22. return access_levels[i].access;
  23. }
  24. nd_log(NDLS_DAEMON, NDLP_WARNING, "HTTP access level '%s' is not valid", access);
  25. return HTTP_ACCESS_NONE;
  26. }
  27. const char *http_id2access(HTTP_ACCESS access) {
  28. for(size_t i = 0; access_levels[i].name ;i++) {
  29. if(access == access_levels[i].access)
  30. return access_levels[i].name;
  31. }
  32. nd_log(NDLS_DAEMON, NDLP_WARNING, "HTTP access level %d is not valid", access);
  33. return "none";
  34. }