Merge pull request #3725 from sysown/2.x-current_user_admin

Admin support for SELECT current_user() and user()
pull/3727/head
René Cannaò 4 years ago committed by GitHub
commit ed99ad96e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4202,6 +4202,33 @@ void admin_session_handler(MySQL_Session *sess, void *_pa, PtrSize_t *pkt) {
goto __run_query;
}
// add support for SELECT current_user() and SELECT user()
// see https://github.com/sysown/proxysql/issues/1105#issuecomment-990940585
if (
(strcasecmp("SELECT current_user()", query_no_space) == 0)
||
(strcasecmp("SELECT user()", query_no_space) == 0)
) {
bool current = false;
if (strcasestr(query_no_space, "current") != NULL)
current = true;
l_free(query_length,query);
std::string s = "SELECT '";
s += sess->client_myds->myconn->userinfo->username ;
if (strlen(sess->client_myds->addr.addr) > 0) {
s += "@";
s += sess->client_myds->addr.addr;
}
s += "' AS '";
if (current == true) {
s+= "current_";
}
s += "user()'";
query=l_strdup(s.c_str());
query_length=strlen(query)+1;
goto __run_query;
}
if (!strncasecmp("select @@sql_mode", query_no_space, strlen("select @@sql_mode"))) {
l_free(query_length,query);
char *q = const_cast<char*>("SELECT \"\" as \"@@sql_mode\"");

Loading…
Cancel
Save