]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: Move client_proxy_create() to submission-backend-relay.c.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 15 Jul 2018 20:02:37 +0000 (22:02 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 12 Feb 2019 13:40:41 +0000 (15:40 +0200)
src/submission/submission-backend-relay.c
src/submission/submission-backend-relay.h
src/submission/submission-client.c

index ed211df426f2f92f3fc5775b32d88bba532c45e4..43560c3351648eb4ae7b4cf02c1a4297a8b5be42 100644 (file)
@@ -4,6 +4,7 @@
 #include "str.h"
 #include "str-sanitize.h"
 #include "mail-user.h"
+#include "iostream-ssl.h"
 #include "smtp-client.h"
 #include "smtp-client-connection.h"
 #include "smtp-client-command.h"
@@ -682,6 +683,62 @@ int cmd_quit_relay(struct client *client, struct smtp_server_cmd_ctx *cmd)
  * Relay backend
  */
 
+void client_proxy_create(struct client *client,
+                        const struct submission_settings *set)
+{
+       struct mail_user *user = client->user;
+       struct ssl_iostream_settings ssl_set;
+       struct smtp_client_settings smtp_set;
+       enum smtp_client_connection_ssl_mode ssl_mode;
+
+       i_zero(&ssl_set);
+       mail_user_init_ssl_client_settings(user, &ssl_set);
+       if (set->submission_relay_ssl_verify)
+               ssl_set.verbose_invalid_cert = TRUE;
+       else
+               ssl_set.allow_invalid_cert = TRUE;
+
+       /* make proxy connection */
+       i_zero(&smtp_set);
+       smtp_set.my_hostname = set->hostname;
+       smtp_set.ssl = &ssl_set;
+       smtp_set.debug = user->mail_debug;
+       smtp_set.rawlog_dir =
+               mail_user_home_expand(user,
+                                     set->submission_relay_rawlog_dir);
+
+       if (set->submission_relay_trusted) {
+               smtp_set.peer_trusted = TRUE;
+
+               if (user->conn.remote_ip != NULL) {
+                       smtp_set.proxy_data.source_ip =
+                               *user->conn.remote_ip;
+                       smtp_set.proxy_data.source_port =
+                               user->conn.remote_port;
+               }
+               smtp_set.proxy_data.login = user->username;
+       }
+
+       smtp_set.username = set->submission_relay_user;
+       smtp_set.master_user = set->submission_relay_master_user;
+       smtp_set.password = set->submission_relay_password;
+       smtp_set.connect_timeout_msecs =
+               set->submission_relay_connect_timeout;
+       smtp_set.command_timeout_msecs =
+               set->submission_relay_command_timeout;
+
+       if (strcmp(set->submission_relay_ssl, "smtps") == 0)
+               ssl_mode = SMTP_CLIENT_SSL_MODE_IMMEDIATE;
+       else if (strcmp(set->submission_relay_ssl, "starttls") == 0)
+               ssl_mode = SMTP_CLIENT_SSL_MODE_STARTTLS;
+       else
+               ssl_mode = SMTP_CLIENT_SSL_MODE_NONE;
+
+       client->proxy_conn = smtp_client_connection_create(smtp_client,
+               SMTP_PROTOCOL_SMTP, set->submission_relay_host,
+               set->submission_relay_port, ssl_mode, &smtp_set);
+}
+
 static void client_proxy_ready_cb(const struct smtp_reply *reply,
                                  void *context)
 {
index df06c082b6516295a53d7ffca0aa4191c7b349d9..0ed021e76d479402b88881b0c3743c765b2a4c3e 100644 (file)
@@ -16,6 +16,10 @@ int cmd_vrfy_relay(struct client *client, struct smtp_server_cmd_ctx *cmd,
 int cmd_noop_relay(struct client *client, struct smtp_server_cmd_ctx *cmd);
 int cmd_quit_relay(struct client *client, struct smtp_server_cmd_ctx *cmd);
 
+struct submission_settings;
+
+void client_proxy_create(struct client *client,
+                        const struct submission_settings *set);
 void client_proxy_start(struct client *client);
 
 #endif
index 90952582e67837fe57468912de2641900c350169..3019badae44b3b767fbe9b05a1305e710a059d99 100644 (file)
@@ -9,7 +9,6 @@
 #include "net.h"
 #include "istream.h"
 #include "ostream.h"
-#include "iostream-ssl.h"
 #include "hostpid.h"
 #include "var-expand.h"
 #include "settings-parser.h"
@@ -83,62 +82,6 @@ static const char *client_remote_id(struct client *client)
        return addr;
 }
 
-static void client_proxy_create(struct client *client,
-                               const struct submission_settings *set)
-{
-       struct mail_user *user = client->user;
-       struct ssl_iostream_settings ssl_set;
-       struct smtp_client_settings smtp_set;
-       enum smtp_client_connection_ssl_mode ssl_mode;
-
-       i_zero(&ssl_set);
-       mail_user_init_ssl_client_settings(user, &ssl_set);
-       if (set->submission_relay_ssl_verify)
-               ssl_set.verbose_invalid_cert = TRUE;
-       else
-               ssl_set.allow_invalid_cert = TRUE;
-
-       /* make proxy connection */
-       i_zero(&smtp_set);
-       smtp_set.my_hostname = set->hostname;
-       smtp_set.ssl = &ssl_set;
-       smtp_set.debug = user->mail_debug;
-       smtp_set.rawlog_dir =
-               mail_user_home_expand(user,
-                                     set->submission_relay_rawlog_dir);
-
-       if (set->submission_relay_trusted) {
-               smtp_set.peer_trusted = TRUE;
-
-               if (user->conn.remote_ip != NULL) {
-                       smtp_set.proxy_data.source_ip =
-                               *user->conn.remote_ip;
-                       smtp_set.proxy_data.source_port =
-                               user->conn.remote_port;
-               }
-               smtp_set.proxy_data.login = user->username;
-       }
-
-       smtp_set.username = set->submission_relay_user;
-       smtp_set.master_user = set->submission_relay_master_user;
-       smtp_set.password = set->submission_relay_password;
-       smtp_set.connect_timeout_msecs =
-               set->submission_relay_connect_timeout;
-       smtp_set.command_timeout_msecs =
-               set->submission_relay_command_timeout;
-
-       if (strcmp(set->submission_relay_ssl, "smtps") == 0)
-               ssl_mode = SMTP_CLIENT_SSL_MODE_IMMEDIATE;
-       else if (strcmp(set->submission_relay_ssl, "starttls") == 0)
-               ssl_mode = SMTP_CLIENT_SSL_MODE_STARTTLS;
-       else
-               ssl_mode = SMTP_CLIENT_SSL_MODE_NONE;
-
-       client->proxy_conn = smtp_client_connection_create(smtp_client,
-               SMTP_PROTOCOL_SMTP, set->submission_relay_host,
-               set->submission_relay_port, ssl_mode, &smtp_set);
-}
-
 static void client_proxy_destroy(struct client *client)
 {
        if (client->proxy_conn != NULL)