/* Copyright (c) 2011-2018 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "ioloop.h"
#include "str.h"
#include "strescape.h"
#include "ipc-client.h"
#include "doveadm.h"
#include "doveadm-print.h"
#include <stdio.h>
#include <unistd.h>
struct proxy_context {
const char *username_field;
};
extern struct doveadm_cmd_ver2 doveadm_cmd_proxy[];
static struct proxy_context *
{
const char *socket_path;
int c;
switch (c) {
case 'a':
break;
case 'f':
break;
default:
}
}
return ctx;
}
{
struct {
const char *key;
const char *title;
} header_map[] = {
{ "service", "proto" },
{ "src-ip", "src ip" },
{ "dest-ip", "dest ip" },
{ "dest-port", "port" },
};
continue;
}
for (unsigned int j = 0; j < N_ELEMENTS(header_map); j++) {
break;
}
}
}
}
{
switch (state) {
case IPC_CLIENT_CMD_STATE_REPLY: {
if (!*seen_header) {
*seen_header = TRUE;
} else {
}
return;
}
case IPC_CLIENT_CMD_STATE_OK:
break;
break;
}
}
{
}
{
switch (state) {
return;
case IPC_CLIENT_CMD_STATE_OK:
if (data[0] == '\0')
data = "0";
break;
break;
}
}
{
return;
}
doveadm_print_formatted_set_format("%{count} connections kicked\n");
doveadm_print_header_simple("count");
else {
}
}
}
{
.name = "proxy list",
.usage = "[-a <ipc socket path>]",
},
{
.name = "proxy kick",
.usage = "[-a <ipc socket path>] [-f <passdb field>] <user> [...]",
}
};
{
unsigned int i;
for (i = 0; i < N_ELEMENTS(doveadm_cmd_proxy); i++) {
help_ver2(&doveadm_cmd_proxy[i]);
}
i_unreached();
}
void doveadm_register_proxy_commands(void)
{
unsigned int i;
for (i = 0; i < N_ELEMENTS(doveadm_cmd_proxy); i++)
}