]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm zlibconnect: Convert to v2 command
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 9 Jun 2021 19:42:54 +0000 (22:42 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 21 Jul 2021 09:03:09 +0000 (09:03 +0000)
src/doveadm/doveadm-cmd.h
src/doveadm/doveadm-zlib.c
src/doveadm/doveadm.c

index eabd5e47c62d00a835130897de4beb76bffbf3d9..b2586e9ef0db9987968298d0d374045b5b1b3f94 100644 (file)
@@ -95,7 +95,6 @@ extern struct doveadm_cmd doveadm_cmd_pw;
 extern struct doveadm_cmd doveadm_cmd_mailbox_mutf7;
 extern struct doveadm_cmd doveadm_cmd_sis_deduplicate;
 extern struct doveadm_cmd doveadm_cmd_sis_find;
-extern struct doveadm_cmd doveadm_cmd_zlibconnect;
 
 void doveadm_register_cmd(const struct doveadm_cmd *cmd);
 
@@ -161,5 +160,6 @@ extern struct doveadm_cmd_ver2 doveadm_cmd_oldstats_top_ver2;
 extern struct doveadm_cmd_ver2 doveadm_cmd_penalty_ver2;
 extern struct doveadm_cmd_ver2 doveadm_cmd_kick_ver2;
 extern struct doveadm_cmd_ver2 doveadm_cmd_who_ver2;
+extern struct doveadm_cmd_ver2 doveadm_cmd_zlibconnect;
 
 #endif
index 02d100af8647fefbd6b81fa16c5b003978363e55..a730561169db5c8b681e2145f1ed3ef126034359 100644 (file)
@@ -220,26 +220,32 @@ static void server_input(struct client *client)
        i_stream_skip(client->input, size);
 }
 
-static void cmd_zlibconnect(int argc ATTR_UNUSED, char *argv[])
+static void cmd_zlibconnect(struct doveadm_cmd_context *cctx)
 {
        struct client client;
+       const char *host;
        struct ip_addr *ips;
        unsigned int ips_count;
+       int64_t port_int64;
        in_port_t port = 143;
        int fd, ret;
 
-       if (argv[1] == NULL ||
-           (argv[2] != NULL && net_str2port(argv[2], &port) < 0))
-               help(&doveadm_cmd_zlibconnect);
+       if (!doveadm_cmd_param_str(cctx, "host", &host))
+               help_ver2(&doveadm_cmd_zlibconnect);
+       if (doveadm_cmd_param_int64(cctx, "port", &port_int64)) {
+               if (port_int64 == 0 || port_int64 > 65535)
+                       i_fatal("Invalid port: %"PRId64, port_int64);
+               port = (in_port_t)port_int64;
+       }
 
-       ret = net_gethostbyname(argv[1], &ips, &ips_count);
+       ret = net_gethostbyname(host, &ips, &ips_count);
        if (ret != 0) {
-               i_fatal("Host %s lookup failed: %s", argv[1],
+               i_fatal("Host %s lookup failed: %s", host,
                        net_gethosterror(ret));
        }
 
        if ((fd = net_connect_ip(&ips[0], port, NULL)) == -1)
-               i_fatal("connect(%s, %u) failed: %m", argv[1], port);
+               i_fatal("connect(%s, %u) failed: %m", host, port);
 
        i_info("Connected to %s port %u.", net_ip2addr(&ips[0]), port);
 
@@ -267,7 +273,7 @@ static void cmd_dump_imapzlib(int argc ATTR_UNUSED, char *argv[] ATTR_UNUSED)
        i_fatal("Dovecot compiled without zlib support");
 }
 
-static void cmd_zlibconnect(int argc ATTR_UNUSED, char *argv[] ATTR_UNUSED)
+static void cmd_zlibconnect(struct doveadm_cmd_context *cctx ATTR_UNUSED)
 {
        i_fatal("Dovecot compiled without zlib support");
 }
@@ -279,8 +285,12 @@ struct doveadm_cmd_dump doveadm_cmd_dump_zlib = {
        cmd_dump_imapzlib
 };
 
-struct doveadm_cmd doveadm_cmd_zlibconnect = {
-       cmd_zlibconnect,
-       "zlibconnect",
-       "<host> [<port>]"
+struct doveadm_cmd_ver2 doveadm_cmd_zlibconnect = {
+       .name = "zlibconnect",
+       .cmd = cmd_zlibconnect,
+       .usage = "<host> [<port>]",
+DOVEADM_CMD_PARAMS_START
+DOVEADM_CMD_PARAM('\0', "host", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAM('\0', "port", CMD_PARAM_INT64, CMD_PARAM_FLAG_POSITIONAL)
+DOVEADM_CMD_PARAMS_END
 };
index f0906ae56e6a9b0fc188035713377c003336d683..17f8b5b19cafac95d259e4ab63fa452229e5c29e 100644 (file)
@@ -249,11 +249,11 @@ static struct doveadm_cmd *doveadm_cmdline_commands[] = {
        &doveadm_cmd_exec,
        &doveadm_cmd_dump,
        &doveadm_cmd_pw,
-       &doveadm_cmd_zlibconnect
 };
 
 static struct doveadm_cmd_ver2 *doveadm_cmdline_commands_ver2[] = {
        &doveadm_cmd_oldstats_top_ver2,
+       &doveadm_cmd_zlibconnect,
 };
 
 int main(int argc, char *argv[])