changeset 19983:1626b756a2a6

doveadm-proxy: Change to work with doveadm ver2
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Tue, 05 Apr 2016 12:05:15 +0300
parents 4e015dc7bbf2
children 5ea46ed8c156
files src/doveadm/doveadm-proxy.c
diffstat 1 files changed, 27 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-proxy.c	Mon Apr 04 12:22:06 2016 +0300
+++ b/src/doveadm/doveadm-proxy.c	Tue Apr 05 12:05:15 2016 +0300
@@ -13,7 +13,7 @@
 	struct ipc_client *ipc;
 };
 
-extern struct doveadm_cmd doveadm_cmd_proxy[];
+extern struct doveadm_cmd_ver2 doveadm_cmd_proxy[];
 
 static void proxy_cmd_help(doveadm_command_t *cmd) ATTR_NORETURN;
 
@@ -89,10 +89,11 @@
 	case IPC_CLIENT_CMD_STATE_REPLY:
 		return;
 	case IPC_CLIENT_CMD_STATE_OK:
-		printf("%s connections kicked\n", data);
+		doveadm_print(data);
 		break;
 	case IPC_CLIENT_CMD_STATE_ERROR:
 		i_error("KICK failed: %s", data);
+		doveadm_exit_code = EX_TEMPFAIL;
 		break;
 	}
 	io_loop_stop(current_ioloop);
@@ -109,17 +110,33 @@
 		return;
 	}
 
+	doveadm_print_init(DOVEADM_PRINT_TYPE_FORMATTED);
+	doveadm_print_formatted_set_format("{count} connections kicked");
+	doveadm_print_header_simple("count");
 	ipc_client_cmd(ctx->ipc, t_strdup_printf("proxy\t*\tKICK\t%s", argv[optind]),
 		       cmd_proxy_kick_callback, NULL);
 	io_loop_run(current_ioloop);
 	ipc_client_deinit(&ctx->ipc);
 }
 
-struct doveadm_cmd doveadm_cmd_proxy[] = {
-	{ cmd_proxy_list, "proxy list",
-	  "[-a <ipc socket path>]" },
-	{ cmd_proxy_kick, "proxy kick",
-	  "[-a <ipc socket path>] <user>" }
+struct doveadm_cmd_ver2 doveadm_cmd_proxy[] = {
+{
+	.name = "proxy list",
+	.usage = "[-a <ipc socket path>]",
+	.old_cmd = cmd_proxy_list,
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_PARAM('a', "socket-path", CMD_PARAM_STR, 0)
+DOVEADM_CMD_PARAMS_END
+},
+{
+	.name = "proxy kick",
+	.usage = "[-a <ipc socket path>] <user>",
+	.old_cmd = cmd_proxy_kick,
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_PARAM('a', "socket-path", CMD_PARAM_STR, 0)
+DOVEADM_CMD_PARAM('\0', "user", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
+}
 };
 
 static void proxy_cmd_help(doveadm_command_t *cmd)
@@ -127,8 +144,8 @@
 	unsigned int i;
 
 	for (i = 0; i < N_ELEMENTS(doveadm_cmd_proxy); i++) {
-		if (doveadm_cmd_proxy[i].cmd == cmd)
-			help(&doveadm_cmd_proxy[i]);
+		if (doveadm_cmd_proxy[i].old_cmd == cmd)
+			help_ver2(&doveadm_cmd_proxy[i]);
 	}
 	i_unreached();
 }
@@ -138,5 +155,5 @@
 	unsigned int i;
 
 	for (i = 0; i < N_ELEMENTS(doveadm_cmd_proxy); i++)
-		doveadm_register_cmd(&doveadm_cmd_proxy[i]);
+		doveadm_cmd_register_ver2(&doveadm_cmd_proxy[i]);
 }