]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-common: Add event to client
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Apr 2020 19:19:48 +0000 (22:19 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Fri, 24 Apr 2020 08:02:40 +0000 (08:02 +0000)
src/login-common/client-common.c
src/login-common/client-common.h
src/login-common/sasl-server.c

index 8b0faa087c4e86cffb4716c5af76f58b7d4edc29..1ea167c714069a8a3d57f82f79bef90f82da2d61 100644 (file)
@@ -204,6 +204,14 @@ client_alloc(int fd, pool_t pool,
                        net_ip_compare(&conn->real_remote_ip, &conn->real_local_ip);
        }
        client->proxy_ttl = LOGIN_PROXY_TTL;
+
+       client->event = event_create(NULL);
+       event_add_category(client->event, &login_binary->event_category);
+       event_add_str(client->event, "local_ip", net_ip2addr(&conn->local_ip));
+       event_add_int(client->event, "local_port", conn->local_port);
+       event_add_str(client->event, "remote_ip", net_ip2addr(&conn->remote_ip));
+       event_add_int(client->event, "remote_port", conn->remote_port);
+
        client_open_streams(client);
        return client;
 }
@@ -353,6 +361,7 @@ bool client_unref(struct client **_client)
                i_stream_unref(&client->input);
                o_stream_unref(&client->output);
                pool_unref(&client->preproxy_pool);
+               event_unref(&client->event);
                pool_unref(&client->pool);
                return FALSE;
        }
@@ -373,6 +382,7 @@ bool client_unref(struct client **_client)
        i_stream_unref(&client->input);
        o_stream_unref(&client->output);
        i_close_fd(&client->fd);
+       event_unref(&client->event);
 
        i_free(client->proxy_user);
        i_free(client->proxy_master_user);
index 08f7ebcc20222ead3e999275dacc4eb622574713..4145e683056442d4fb3143002ae9d2bbf6e2c200 100644 (file)
@@ -146,6 +146,7 @@ struct client {
 
        time_t created;
        int refcount;
+       struct event *event;
 
        struct ip_addr local_ip;
        struct ip_addr ip;
index edbec3647177650c2ed275ef71c4b36029ee590f..137f5c41e49cb6d5d5f689ce290ccadb06aab55c 100644 (file)
@@ -296,6 +296,7 @@ static bool args_parse_user(struct client *client, const char *arg)
                i_free_and_null(client->virtual_user_orig);
                i_free_and_null(client->virtual_auth_user);
                client->virtual_user = i_strdup(arg + 5);
+               event_add_str(client->event, "user", client->virtual_user);
        } else if (str_begins(arg, "original_user=")) {
                i_free(client->virtual_user_orig);
                client->virtual_user_orig = i_strdup(arg + 14);