diff --git a/include/maxscale/users.h b/include/maxscale/users.h index cf674c8e3..8d5fa69f8 100644 --- a/include/maxscale/users.h +++ b/include/maxscale/users.h @@ -115,10 +115,9 @@ int users_default_loadusers(SERV_LISTENER *port); /** * @brief Default authenticator diagnostic function * - * @param dcb DCB where data is printed * @param port Port whose data is to be printed */ -void users_default_diagnostic(DCB *dcb, SERV_LISTENER *port); +json_t* users_default_diagnostic(SERV_LISTENER *port); /** * Print details of the users storage mechanism diff --git a/server/core/users.cc b/server/core/users.cc index ae5f5d901..6a119c63d 100644 --- a/server/core/users.cc +++ b/server/core/users.cc @@ -109,32 +109,28 @@ void usersPrint(const USERS *users) hashtable_stats(users->data); } -void users_default_diagnostic(DCB *dcb, SERV_LISTENER *port) +json_t* users_default_diagnostic(SERV_LISTENER *port) { + json_t* rval = json_array(); + if (port->users && port->users->data) { HASHITERATOR *iter = hashtable_iterator(port->users->data); if (iter) { - dcb_printf(dcb, "User names: "); - const char *sep = ""; - void *user; + char* user; - while ((user = hashtable_next(iter)) != NULL) + while ((user = (char*)hashtable_next(iter))) { - dcb_printf(dcb, "%s%s", sep, (char *)user); - sep = ", "; + json_array_append(rval, json_string(user)); } - dcb_printf(dcb, "\n"); hashtable_iterator_free(iter); } } - else - { - dcb_printf(dcb, "Users table is empty\n"); - } + + return rval; } int users_default_loadusers(SERV_LISTENER *port) diff --git a/server/modules/authenticator/MySQLAuth/mysql_auth.c b/server/modules/authenticator/MySQLAuth/mysql_auth.c index 062662fb7..c3ef0f964 100644 --- a/server/modules/authenticator/MySQLAuth/mysql_auth.c +++ b/server/modules/authenticator/MySQLAuth/mysql_auth.c @@ -58,7 +58,7 @@ static int mysql_auth_set_client_data( MySQLProtocol *protocol, GWBUF *buffer); -void mysql_auth_diagnostic(DCB *dcb, SERV_LISTENER *port); +json_t* mysql_auth_diagnostic(SERV_LISTENER *port); int mysql_auth_reauthenticate(DCB *dcb, const char *user, uint8_t *token, size_t token_len, @@ -682,24 +682,28 @@ int mysql_auth_reauthenticate(DCB *dcb, const char *user, int diag_cb(void *data, int columns, char **row, char **field_names) { - DCB *dcb = (DCB*)data; - dcb_printf(dcb, "%s@%s ", row[0], row[1]); + json_t* obj = json_object(); + json_object_set_new(obj, "user", json_string(row[0])); + json_object_set_new(obj, "host", json_string(row[1])); + + json_t* arr = (json_t*)data; + json_array_append(arr, obj); return 0; } -void mysql_auth_diagnostic(DCB *dcb, SERV_LISTENER *port) +json_t* mysql_auth_diagnostic(SERV_LISTENER *port) { - dcb_printf(dcb, "User names: "); + json_t* rval = json_array(); MYSQL_AUTH *instance = (MYSQL_AUTH*)port->auth_instance; char *err; if (sqlite3_exec(instance->handle, "SELECT user, host FROM " MYSQLAUTH_USERS_TABLE_NAME, - diag_cb, dcb, &err) != SQLITE_OK) + diag_cb, rval, &err) != SQLITE_OK) { - dcb_printf(dcb, "Failed to print users: %s\n", err); MXS_ERROR("Failed to print users: %s", err); sqlite3_free(err); } - dcb_printf(dcb, "\n"); + + return rval; }