]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-proxy: Log auth failures centrally in login_proxy_failed()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Sun, 3 May 2020 19:05:39 +0000 (22:05 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 25 May 2020 08:38:55 +0000 (08:38 +0000)
src/imap-login/imap-proxy.c
src/login-common/login-proxy.c
src/pop3-login/pop3-proxy.c
src/submission-login/submission-proxy.c

index 34f98d5fc0a19acee1ee2c80da2edca86ae49490..e6bc7af3665d2538f725b6ccd0c6f3cbbb645987 100644 (file)
@@ -359,13 +359,9 @@ int imap_proxy_parse_line(struct client *client, const char *line)
                imap_client->proxy_rcvd_state = IMAP_PROXY_RCVD_STATE_LOGIN;
 
                line += 2;
-               if (client->set->auth_verbose) {
-                       const char *log_line = line;
-
-                       if (strncasecmp(log_line, "NO ", 3) == 0)
-                               log_line += 3;
-                       client_proxy_log_failure(client, log_line);
-               }
+               const char *log_line = line;
+               if (strncasecmp(log_line, "NO ", 3) == 0)
+                       log_line += 3;
 #define STR_NO_IMAP_RESP_CODE_AUTHFAILED "NO ["IMAP_RESP_CODE_AUTHFAILED"]"
                if (str_begins(line, STR_NO_IMAP_RESP_CODE_AUTHFAILED)) {
                        /* the remote sent a generic "authentication failed"
@@ -395,7 +391,7 @@ int imap_proxy_parse_line(struct client *client, const char *line)
 
                login_proxy_failed(client->login_proxy,
                                   login_proxy_get_event(client->login_proxy),
-                                  LOGIN_PROXY_FAILURE_TYPE_AUTH, NULL);
+                                  LOGIN_PROXY_FAILURE_TYPE_AUTH, log_line);
                return -1;
        } else if (strncasecmp(line, "* CAPABILITY ", 13) == 0) {
                i_free(imap_client->proxy_backend_capability);
index 67af767e6c6131132087633b9a1f78c1b3464984..13529d1503a5b44113cc5078e253d3d0b45d1671 100644 (file)
@@ -574,8 +574,10 @@ void login_proxy_failed(struct login_proxy *proxy, struct event *event,
                i_unreached();
        }
 
-       if (reason != NULL)
+       if (type != LOGIN_PROXY_FAILURE_TYPE_AUTH)
                e_error(event, "%s%s", log_prefix, reason);
+       else if (proxy->client->set->auth_verbose)
+               client_proxy_log_failure(proxy->client, reason);
        proxy->failure_callback(proxy->client, type, reason, FALSE);
 }
 
index 496c29bfb0546c98d76e3a96c020d864129d0b01..43cf99afaa9b841d31b3a6e31b352eeaadee5182 100644 (file)
@@ -266,14 +266,11 @@ int pop3_proxy_parse_line(struct client *client, const char *line)
                client_send_raw(client, t_strconcat(line, "\r\n", NULL));
        }
 
-       if (client->set->auth_verbose) {
-               if (str_begins(line, "-ERR "))
-                       line += 5;
-               client_proxy_log_failure(client, line);
-       }
+       if (str_begins(line, "-ERR "))
+               line += 5;
        login_proxy_failed(client->login_proxy,
                           login_proxy_get_event(client->login_proxy),
-                          LOGIN_PROXY_FAILURE_TYPE_AUTH, NULL);
+                          LOGIN_PROXY_FAILURE_TYPE_AUTH, line);
        return -1;
 }
 
index 9e6a202787c55a5c85bc42f480d11f024e75a4db..95a3f8928bb94f5c99670605fe1cbca55bd6ad25 100644 (file)
@@ -449,12 +449,9 @@ int submission_proxy_parse_line(struct client *client, const char *line)
        smtp_server_reply_submit(subm_client->proxy_reply);
        subm_client->pending_auth = NULL;
 
-       if (client->set->auth_verbose) {
-               client_proxy_log_failure(client, text);
-       }
        login_proxy_failed(client->login_proxy,
                           login_proxy_get_event(client->login_proxy),
-                          LOGIN_PROXY_FAILURE_TYPE_AUTH, NULL);
+                          LOGIN_PROXY_FAILURE_TYPE_AUTH, text);
        return -1;
 }