]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Make some functions public to allow plugins to send proxy commands
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 12 Oct 2022 13:30:53 +0000 (16:30 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 24 Oct 2022 07:07:15 +0000 (07:07 +0000)
src/doveadm/doveadm-mail-server.c
src/doveadm/doveadm-mail.h

index 5418d108ae9696c9ef11ea6686ea37b7621f0e07..4f6b40d656de0a07521b54cdb81543e866f2a4c0 100644 (file)
@@ -63,11 +63,6 @@ static ARRAY(struct doveadm_server_request) doveadm_server_request_queue;
 
 static void doveadm_cmd_callback(const struct doveadm_server_reply *reply,
                                 void *context);
-static void doveadm_mail_server_handle(struct doveadm_server *server,
-                                      struct doveadm_client *conn,
-                                      struct doveadm_mail_cmd_context *cmd_ctx,
-                                      const char *username,
-                                      bool print_username);
 
 static void doveadm_server_request_free(struct doveadm_server_request *request)
 {
@@ -75,7 +70,7 @@ static void doveadm_server_request_free(struct doveadm_server_request *request)
        pool_unref(&request->pool);
 }
 
-static struct doveadm_server *doveadm_server_get(const char *name)
+struct doveadm_server *doveadm_server_get(const char *name)
 {
        struct doveadm_server *server;
        char *dup_name;
@@ -113,11 +108,10 @@ static void doveadm_mail_server_cmd_free(struct doveadm_mail_server_cmd **_cmd)
        i_free(cmd);
 }
 
-static int
-doveadm_cmd_pass_lookup(struct doveadm_mail_cmd_context *ctx,
-                       const char *const *extra_fields, pool_t pool,
-                       const char *const **fields_r,
-                       const char **auth_socket_path_r)
+int doveadm_cmd_pass_lookup(struct doveadm_mail_cmd_context *ctx,
+                           const char *const *extra_fields, pool_t pool,
+                           const char *const **fields_r,
+                           const char **auth_socket_path_r)
 {
        struct auth_master_connection *auth_conn;
        struct auth_user_info info;
@@ -148,12 +142,11 @@ doveadm_cmd_pass_lookup(struct doveadm_mail_cmd_context *ctx,
                                       pool, fields_r);
 }
 
-static int
-doveadm_cmd_pass_reply_parse(struct doveadm_mail_cmd_context *ctx,
-                            const char *auth_socket_path,
-                            const char *const *fields,
-                            struct auth_proxy_settings *proxy_set,
-                            bool *nologin_r, const char **error_r)
+int doveadm_cmd_pass_reply_parse(struct doveadm_mail_cmd_context *ctx,
+                                const char *auth_socket_path,
+                                const char *const *fields,
+                                struct auth_proxy_settings *proxy_set,
+                                bool *nologin_r, const char **error_r)
 {
        const char *orig_user = proxy_set->username;
        const char *error, *mend;
@@ -560,11 +553,10 @@ static void doveadm_cmd_callback(const struct doveadm_server_reply *reply,
        io_loop_stop(current_ioloop);
 }
 
-static void doveadm_mail_server_handle(struct doveadm_server *server,
-                                      struct doveadm_client *conn,
-                                      struct doveadm_mail_cmd_context *cmd_ctx,
-                                      const char *username,
-                                      bool print_username)
+void doveadm_mail_server_handle(struct doveadm_server *server,
+                               struct doveadm_client *conn,
+                               struct doveadm_mail_cmd_context *cmd_ctx,
+                               const char *username, bool print_username)
 {
        struct doveadm_mail_server_cmd *servercmd;
        string_t *cmd;
index 70c011b8ae1f82cbb8bcd3fa0de89e407d51f050..1251a0227d303cf18c5d1324af946bff31e76757 100644 (file)
@@ -9,10 +9,12 @@
 #include "mail-storage.h"
 #include "mail-storage-service.h"
 
+struct auth_proxy_settings;
 struct mailbox;
 struct mailbox_list;
 struct mail_storage;
 struct mail_user;
+struct doveadm_client;
 struct doveadm_mail_cmd_context;
 
 struct doveadm_mail_cmd_vfuncs {
@@ -123,8 +125,23 @@ int doveadm_mail_single_user(struct doveadm_mail_cmd_context *ctx,
                             const char **error_r);
 int doveadm_mail_server_user(struct doveadm_mail_cmd_context *ctx,
                             const char **error_r);
+struct doveadm_server *doveadm_server_get(const char *name);
+void doveadm_mail_server_handle(struct doveadm_server *server,
+                               struct doveadm_client *conn,
+                               struct doveadm_mail_cmd_context *cmd_ctx,
+                               const char *username, bool print_username);
 void doveadm_mail_server_flush(struct doveadm_mail_cmd_context *ctx);
 
+int doveadm_cmd_pass_lookup(struct doveadm_mail_cmd_context *ctx,
+                           const char *const *extra_fields, pool_t pool,
+                           const char *const **fields_r,
+                           const char **auth_socket_path_r);
+int doveadm_cmd_pass_reply_parse(struct doveadm_mail_cmd_context *ctx,
+                                const char *auth_socket_path,
+                                const char *const *fields,
+                                struct auth_proxy_settings *proxy_set,
+                                bool *nologin_r, const char **error_r);
+
 /* Request input stream to be read (from stdin). This must be called from
    the command's init() function. */
 void doveadm_mail_get_input(struct doveadm_mail_cmd_context *ctx);