From: sergey.kitov Date: Tue, 15 Sep 2020 12:51:26 +0000 (+0300) Subject: login-common: Implement kicking all user at backend host. X-Git-Tag: 2.3.13~140 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=30a816a360e30e5612356a9e8aa2646b6ae11a0e;p=thirdparty%2Fdovecot%2Fcore.git login-common: Implement kicking all user at backend host. --- diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 0295da0400..bb045954d5 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -822,6 +822,13 @@ void login_proxy_kill_idle(void) } } +static bool +want_kick_host(struct login_proxy *proxy, const char *const *args, + unsigned int key_idx ATTR_UNUSED) +{ + return str_array_find(args, proxy->host); +} + static bool want_kick_virtual_user(struct login_proxy *proxy, const char *const *args, unsigned int key_idx ATTR_UNUSED) @@ -886,6 +893,12 @@ login_proxy_cmd_kick(struct ipc_cmd *cmd, const char *const *args) login_proxy_cmd_kick_full(cmd, args, want_kick_virtual_user, 0); } +static void +login_proxy_cmd_kick_host(struct ipc_cmd *cmd, const char *const *args) +{ + login_proxy_cmd_kick_full(cmd, args, want_kick_host, 0); +} + static void login_proxy_cmd_kick_alt(struct ipc_cmd *cmd, const char *const *args) { @@ -1037,6 +1050,8 @@ static void login_proxy_ipc_cmd(struct ipc_cmd *cmd, const char *line) login_proxy_cmd_kick_director_hash(cmd, args); else if (strcmp(name, "LIST-FULL") == 0) login_proxy_cmd_list(cmd, args); + else if (strcmp(name, "KICK-HOST") == 0) + login_proxy_cmd_kick_host(cmd, args); else ipc_cmd_fail(&cmd, "Unknown command"); }