]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-common: Implement kicking all user at backend host.
authorsergey.kitov <sergey.kitov@open-xchange.com>
Tue, 15 Sep 2020 12:51:26 +0000 (15:51 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Wed, 7 Oct 2020 11:46:11 +0000 (11:46 +0000)
src/login-common/login-proxy.c

index 0295da0400c96a838a68061f8018b88201092b76..bb045954d5ce5c0579744f07b6ffe61c854a61f5 100644 (file)
@@ -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");
 }