master
h 37 lines 962 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_USER_AUTH_H
4 #define NETDATA_USER_AUTH_H
5
6 #include "../libnetdata.h"
7 #include "../template-enum.h"
8
9 #define CLOUD_CLIENT_NAME_LENGTH 64
10
11 typedef enum auth_type {
12 USER_AUTH_METHOD_NONE = 0,
13 USER_AUTH_METHOD_CLOUD,
14 USER_AUTH_METHOD_BEARER,
15 USER_AUTH_METHOD_GOD,
16 } USER_AUTH_METHOD;
17
18 typedef struct user_auth {
19 char client_ip[INET6_ADDRSTRLEN];
20 char forwarded_for[INET6_ADDRSTRLEN];
21 char client_name[CLOUD_CLIENT_NAME_LENGTH];
22 ND_UUID cloud_account_id;
23 USER_AUTH_METHOD method;
24 HTTP_USER_ROLE user_role;
25 HTTP_ACCESS access;
26 } USER_AUTH;
27
28 // Declare the enum-to-string conversion functions
29 ENUM_STR_DEFINE_FUNCTIONS_EXTERN(USER_AUTH_METHOD)
30
31 bool user_auth_from_source(const char *src, USER_AUTH *parsed);
32
33 bool user_auth_source_is_cloud(const char *source);
34
35 void user_auth_to_source_buffer(USER_AUTH *user_auth, BUFFER *source);
36
37 #endif //NETDATA_USER_AUTH_H