From: sergey.kitov Date: Tue, 15 Sep 2020 12:52:24 +0000 (+0300) Subject: doveadm: Implement proxy kick -h X-Git-Tag: 2.3.13~139 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0f889378f5adc09d8f7d541b3d192ce7c584b322;p=thirdparty%2Fdovecot%2Fcore.git doveadm: Implement proxy kick -h --- 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 }