From: Aki Tuomi Date: Mon, 10 Aug 2020 06:29:10 +0000 (+0300) Subject: doveadm: doveadm-auth - Add support for real_{remote|local}_{ip|port} -x parameters X-Git-Tag: 2.3.13~287 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=395ef5b35c30745e0f30a5a7fcf363650a245ab9;p=thirdparty%2Fdovecot%2Fcore.git doveadm: doveadm-auth - Add support for real_{remote|local}_{ip|port} -x parameters --- diff --git a/src/doveadm/doveadm-auth.c b/src/doveadm/doveadm-auth.c index a6c81c15ec..63429fe6d5 100644 --- a/src/doveadm/doveadm-auth.c +++ b/src/doveadm/doveadm-auth.c @@ -196,6 +196,10 @@ static void auth_connected(struct auth_client *client, info.local_port = input->info.local_port; info.remote_ip = input->info.remote_ip; info.remote_port = input->info.remote_port; + info.real_local_ip = input->info.real_local_ip; + info.real_remote_ip = input->info.real_remote_ip; + info.real_local_port = input->info.real_local_port; + info.real_remote_port = input->info.real_remote_port; info.extra_fields = input->info.extra_fields; info.forward_fields = input->info.forward_fields; info.initial_resp_base64 = str_c(base64_resp); @@ -249,6 +253,18 @@ static void auth_user_info_parse(struct auth_user_info *info, const char *arg) } else if (str_begins(arg, "rport=")) { if (net_str2port(arg + 6, &info->remote_port) < 0) i_fatal("rport: Invalid port number"); + } else if (str_begins(arg, "real_lip=")) { + if (net_addr2ip(arg + 9, &info->real_local_ip) < 0) + i_fatal("real_lip: Invalid ip"); + } else if (str_begins(arg, "real_rip=")) { + if (net_addr2ip(arg + 9, &info->real_remote_ip) < 0) + i_fatal("real_rip: Invalid ip"); + } else if (str_begins(arg, "real_lport=")) { + if (net_str2port(arg + 11, &info->real_local_port) < 0) + i_fatal("real_lport: Invalid port number"); + } else if (str_begins(arg, "real_rport=")) { + if (net_str2port(arg + 11, &info->real_remote_port) < 0) + i_fatal("real_rport: Invalid port number"); } else if (str_begins(arg, "forward_")) { const char *key = arg+8; const char *value = strchr(arg+8, '=');