From 0f889378f5adc09d8f7d541b3d192ce7c584b322 Mon Sep 17 00:00:00 2001 From: "sergey.kitov" Date: Tue, 15 Sep 2020 15:52:24 +0300 Subject: [PATCH] doveadm: Implement proxy kick -h --- src/doveadm/doveadm-proxy.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/doveadm/doveadm-proxy.c b/src/doveadm/doveadm-proxy.c index d2e76c0d69..96e63b0fa7 100644 --- a/src/doveadm/doveadm-proxy.c +++ b/src/doveadm/doveadm-proxy.c @@ -14,6 +14,7 @@ struct proxy_context { struct ipc_client *ipc; const char *username_field; + const char *kick_hosts; }; extern struct doveadm_cmd_ver2 doveadm_cmd_proxy[]; @@ -39,6 +40,9 @@ cmd_proxy_init(int argc, char *argv[], const char *getopt_args, case 'f': ctx->username_field = optarg; break; + case 'h': + ctx->kick_hosts = optarg; + break; default: proxy_cmd_help(cmd); } @@ -146,9 +150,9 @@ static void cmd_proxy_kick(int argc, char *argv[]) struct proxy_context *ctx; string_t *cmd; - ctx = cmd_proxy_init(argc, argv, "a:f:", cmd_proxy_kick); + ctx = cmd_proxy_init(argc, argv, "a:f:h:", cmd_proxy_kick); - if (argv[optind] == NULL) { + if (argv[optind] == NULL && ctx->kick_hosts == NULL) { proxy_cmd_help(cmd_proxy_kick); return; } @@ -159,7 +163,11 @@ static void cmd_proxy_kick(int argc, char *argv[]) cmd = t_str_new(128); str_append(cmd, "proxy\t*\t"); - if (ctx->username_field == NULL) + if (ctx->kick_hosts != NULL) { + str_append(cmd, "KICK-HOST\t"); + str_append(cmd, ctx->kick_hosts); + } + else if (ctx->username_field == NULL) str_append(cmd, "KICK"); else { str_append(cmd, "KICK-ALT\t"); @@ -185,11 +193,12 @@ DOVEADM_CMD_PARAMS_END }, { .name = "proxy kick", - .usage = "[-a ] [-f ] [...]", + .usage = "[-a ] [-f ] [-h [...] | [...]]", .old_cmd = cmd_proxy_kick, DOVEADM_CMD_PARAMS_START DOVEADM_CMD_PARAM('a', "socket-path", CMD_PARAM_STR, 0) DOVEADM_CMD_PARAM('f', "passdb-field", CMD_PARAM_STR, 0) +DOVEADM_CMD_PARAM('h', "host", CMD_PARAM_STR, 0) DOVEADM_CMD_PARAM('\0', "user", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END } -- 2.47.3