Record authenticated username for each connected client

Signed-off-by: Jim Ramsay <jramsay@redhat.com>
pull/83/head
Jim Ramsay 2022-10-31 12:08:23 -04:00 committed by Andri Yngvason
parent 86bd2ced85
commit 036b549fd8
3 changed files with 12 additions and 0 deletions

View File

@ -70,6 +70,7 @@ struct nvnc_client {
int ref; int ref;
struct stream* net_stream; struct stream* net_stream;
char hostname[256]; char hostname[256];
char username[256];
struct nvnc* server; struct nvnc* server;
enum nvnc_client_state state; enum nvnc_client_state state;
bool has_pixfmt; bool has_pixfmt;

View File

@ -132,6 +132,7 @@ void* nvnc_get_userdata(const void* self);
struct nvnc* nvnc_client_get_server(const struct nvnc_client* client); struct nvnc* nvnc_client_get_server(const struct nvnc_client* client);
bool nvnc_client_supports_cursor(const struct nvnc_client* client); bool nvnc_client_supports_cursor(const struct nvnc_client* client);
const char* nvnc_client_get_hostname(const struct nvnc_client* client); const char* nvnc_client_get_hostname(const struct nvnc_client* client);
const char* nvnc_client_get_auth_username(const struct nvnc_client* client);
void nvnc_set_name(struct nvnc* self, const char* name); void nvnc_set_name(struct nvnc* self, const char* name);

View File

@ -331,6 +331,9 @@ static int on_vencrypt_plain_auth_message(struct nvnc_client* client)
username[MIN(ulen, sizeof(username) - 1)] = '\0'; username[MIN(ulen, sizeof(username) - 1)] = '\0';
password[MIN(plen, sizeof(password) - 1)] = '\0'; password[MIN(plen, sizeof(password) - 1)] = '\0';
strncpy(client->username, username, sizeof(client->username));
client->username[sizeof(client->username) - 1] = '\0';
if (server->auth_fn(username, password, server->auth_ud)) { if (server->auth_fn(username, password, server->auth_ud)) {
nvnc_log(NVNC_LOG_INFO, "User \"%s\" authenticated", username); nvnc_log(NVNC_LOG_INFO, "User \"%s\" authenticated", username);
security_handshake_ok(client); security_handshake_ok(client);
@ -1631,6 +1634,13 @@ const char* nvnc_client_get_hostname(const struct nvnc_client* client) {
return client->hostname; return client->hostname;
} }
EXPORT
const char* nvnc_client_get_auth_username(const struct nvnc_client* client) {
if (client->username[0] == '\0')
return NULL;
return client->username;
}
EXPORT EXPORT
bool nvnc_client_supports_cursor(const struct nvnc_client* client) bool nvnc_client_supports_cursor(const struct nvnc_client* client)
{ {