MXS-1220: Add /users/ resource
The /users/ resource shows all user accounts that can be used with MaxScale. This resource is further split into two resource collections, /users/inet and /users/unix, which contain the network users and Linux accounts respectively.
This commit is contained in:
@ -33,6 +33,14 @@ MXS_BEGIN_DECLS
|
||||
static const char INET_DEFAULT_USERNAME[] = "admin";
|
||||
static const char INET_DEFAULT_PASSWORD[] = "mariadb";
|
||||
|
||||
/** User types */
|
||||
enum user_type
|
||||
{
|
||||
USER_TYPE_ALL, // Type that matches all users
|
||||
USER_TYPE_INET, // Network users
|
||||
USER_TYPE_UNIX // Linux accounts
|
||||
};
|
||||
|
||||
/*
|
||||
* MySQL session specific data
|
||||
*
|
||||
@ -49,16 +57,39 @@ typedef struct admin_session
|
||||
#endif
|
||||
} ADMIN_session;
|
||||
|
||||
extern const char *admin_enable_linux_account(const char *uname);
|
||||
extern const char *admin_disable_linux_account(const char *uname);
|
||||
extern bool admin_linux_account_enabled(const char *uname);
|
||||
void admin_users_init();
|
||||
|
||||
extern const char *admin_add_inet_user(const char *uname, const char *password);
|
||||
extern const char *admin_remove_inet_user(const char *uname, const char *password);
|
||||
extern bool admin_inet_user_exists(const char *uname);
|
||||
const char* admin_enable_linux_account(const char *uname);
|
||||
const char* admin_disable_linux_account(const char *uname);
|
||||
bool admin_linux_account_enabled(const char *uname);
|
||||
|
||||
extern bool admin_verify_inet_user(const char *uname, const char *password);
|
||||
const char* admin_add_inet_user(const char *uname, const char *password);
|
||||
const char* admin_remove_inet_user(const char *uname, const char *password);
|
||||
bool admin_inet_user_exists(const char *uname);
|
||||
bool admin_verify_inet_user(const char *uname, const char *password);
|
||||
|
||||
extern void dcb_PrintAdminUsers(DCB *dcb);
|
||||
/**
|
||||
* @brief Convert all admin users to JSON
|
||||
*
|
||||
* @param host Hostname of this server
|
||||
* @param type USER_TYPE_INET for networks users, USER_TYPE_UNIX for unix accounts
|
||||
* or USER_TYPE_ALL for all users
|
||||
*
|
||||
* @return Collection of users resources
|
||||
*/
|
||||
json_t* admin_all_users_to_json(const char* host, enum user_type type);
|
||||
|
||||
/**
|
||||
* @brief Convert an admin user into JSON
|
||||
*
|
||||
* @param host Hostname of this server
|
||||
* @param user Username to convert
|
||||
* @param type The type of user, either USER_TYPE_INET or USER_TYPE_UNIX
|
||||
*
|
||||
* @return The user converted to JSON
|
||||
*/
|
||||
json_t* admin_user_to_json(const char* host, const char* user, enum user_type type);
|
||||
|
||||
void dcb_PrintAdminUsers(DCB *dcb);
|
||||
|
||||
MXS_END_DECLS
|
||||
|
@ -39,6 +39,7 @@ MXS_BEGIN_DECLS
|
||||
/** JSON Pointers to key parts of JSON objects */
|
||||
#define MXS_JSON_PTR_DATA "/data"
|
||||
#define MXS_JSON_PTR_ID "/data/id"
|
||||
#define MXS_JSON_PTR_TYPE "/data/type"
|
||||
#define MXS_JSON_PTR_PARAMETERS "/data/attributes/parameters"
|
||||
|
||||
/** Pointers to relation lists */
|
||||
@ -95,6 +96,7 @@ extern const char CN_FILTERS[];
|
||||
extern const char CN_FILTER[];
|
||||
extern const char CN_GATEWAY[];
|
||||
extern const char CN_ID[];
|
||||
extern const char CN_INET[];
|
||||
extern const char CN_LISTENER[];
|
||||
extern const char CN_LISTENERS[];
|
||||
extern const char CN_LOCALHOST_MATCH_WILDCARD_HOST[];
|
||||
@ -143,7 +145,9 @@ extern const char CN_SSL_VERSION[];
|
||||
extern const char CN_STRIP_DB_ESC[];
|
||||
extern const char CN_THREADS[];
|
||||
extern const char CN_TYPE[];
|
||||
extern const char CN_UNIX[];
|
||||
extern const char CN_USER[];
|
||||
extern const char CN_USERS[];
|
||||
extern const char CN_VERSION_STRING[];
|
||||
extern const char CN_WEIGHTBY[];
|
||||
|
||||
|
@ -32,6 +32,7 @@ MXS_BEGIN_DECLS
|
||||
#define MXS_JSON_API_LOGS "/maxscale/logs/"
|
||||
#define MXS_JSON_API_TASKS "/maxscale/tasks/"
|
||||
#define MXS_JSON_API_MODULES "/maxscale/modules/"
|
||||
#define MXS_JSON_API_USERS "/users/"
|
||||
|
||||
/**
|
||||
* @brief Create a JSON object
|
||||
|
Reference in New Issue
Block a user