From b4d77beb31369c0c960db9afa9e009f4e1b27942 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 12 Oct 2022 16:30:53 +0300 Subject: [PATCH] doveadm: Make some functions public to allow plugins to send proxy commands --- src/doveadm/doveadm-mail-server.c | 36 ++++++++++++------------------- src/doveadm/doveadm-mail.h | 17 +++++++++++++++ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/doveadm/doveadm-mail-server.c b/src/doveadm/doveadm-mail-server.c index 5418d108ae..4f6b40d656 100644 --- a/src/doveadm/doveadm-mail-server.c +++ b/src/doveadm/doveadm-mail-server.c @@ -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; diff --git a/src/doveadm/doveadm-mail.h b/src/doveadm/doveadm-mail.h index 70c011b8ae..1251a0227d 100644 --- a/src/doveadm/doveadm-mail.h +++ b/src/doveadm/doveadm-mail.h @@ -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); -- 2.47.3