MXS-1220: Implement JSON diagnostics entry point in autheticators
All autheticators now implement the JSON version of the diagnostics function.
This commit is contained in:
committed by
Markus Mäkelä
parent
5e679aa167
commit
4804c975ad
@ -115,10 +115,9 @@ int users_default_loadusers(SERV_LISTENER *port);
|
|||||||
/**
|
/**
|
||||||
* @brief Default authenticator diagnostic function
|
* @brief Default authenticator diagnostic function
|
||||||
*
|
*
|
||||||
* @param dcb DCB where data is printed
|
|
||||||
* @param port Port whose data is to be 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
|
* Print details of the users storage mechanism
|
||||||
|
|||||||
@ -109,32 +109,28 @@ void usersPrint(const USERS *users)
|
|||||||
hashtable_stats(users->data);
|
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)
|
if (port->users && port->users->data)
|
||||||
{
|
{
|
||||||
HASHITERATOR *iter = hashtable_iterator(port->users->data);
|
HASHITERATOR *iter = hashtable_iterator(port->users->data);
|
||||||
|
|
||||||
if (iter)
|
if (iter)
|
||||||
{
|
{
|
||||||
dcb_printf(dcb, "User names: ");
|
char* user;
|
||||||
const char *sep = "";
|
|
||||||
void *user;
|
|
||||||
|
|
||||||
while ((user = hashtable_next(iter)) != NULL)
|
while ((user = (char*)hashtable_next(iter)))
|
||||||
{
|
{
|
||||||
dcb_printf(dcb, "%s%s", sep, (char *)user);
|
json_array_append(rval, json_string(user));
|
||||||
sep = ", ";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dcb_printf(dcb, "\n");
|
|
||||||
hashtable_iterator_free(iter);
|
hashtable_iterator_free(iter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
return rval;
|
||||||
dcb_printf(dcb, "Users table is empty\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int users_default_loadusers(SERV_LISTENER *port)
|
int users_default_loadusers(SERV_LISTENER *port)
|
||||||
|
|||||||
@ -58,7 +58,7 @@ static int mysql_auth_set_client_data(
|
|||||||
MySQLProtocol *protocol,
|
MySQLProtocol *protocol,
|
||||||
GWBUF *buffer);
|
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,
|
int mysql_auth_reauthenticate(DCB *dcb, const char *user,
|
||||||
uint8_t *token, size_t token_len,
|
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)
|
int diag_cb(void *data, int columns, char **row, char **field_names)
|
||||||
{
|
{
|
||||||
DCB *dcb = (DCB*)data;
|
json_t* obj = json_object();
|
||||||
dcb_printf(dcb, "%s@%s ", row[0], row[1]);
|
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;
|
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;
|
MYSQL_AUTH *instance = (MYSQL_AUTH*)port->auth_instance;
|
||||||
char *err;
|
char *err;
|
||||||
|
|
||||||
if (sqlite3_exec(instance->handle, "SELECT user, host FROM " MYSQLAUTH_USERS_TABLE_NAME,
|
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);
|
MXS_ERROR("Failed to print users: %s", err);
|
||||||
sqlite3_free(err);
|
sqlite3_free(err);
|
||||||
}
|
}
|
||||||
dcb_printf(dcb, "\n");
|
|
||||||
|
return rval;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user