[Dovecot] critical feature from version 1 not migrated to version 2 = authentication configuration database per IP
DaLiV at apollo.lv
DaLiV at apollo.lv
Mon Feb 14 16:20:25 EET 2011
Timo Sirainen wrote:
>> - another way (possible that will be more easiest, and good enough for
>> advanced configurations) = single variable that may be set in block
>> of exact ip listener configuration , as for provided before example
>> may set variable "auth_db_suffix" = string("dc=domain1,dc=tld") for
>> definition "local mail.domain1.tld" and that variable are inserted in
>> auth block via variable inserting mechanism ...
>>
> Again not possible, because config parsing is done much earlier.
>
think for realization can take idea from that patch :
---------------------------------
--- src/auth/auth-request.c.orig 2010-12-30 11:42:54.000000000 +0200
--- src/auth/auth-request.c.orig 2010-12-30 11:42:54.000000000 +0200
@@ -1547,6 +1547,7 @@ auth_request_get_var_expand_table(const
{ '\0', NULL, "login_user" },
{ '\0', NULL, "login_username" },
{ '\0', NULL, "login_domain" },
+ { 'x', NULL, NULL },
{ '\0', NULL, NULL }
};
struct var_expand_table *tab;
@@ -1600,6 +1601,15 @@ auth_request_get_var_expand_table(const
auth_request);
}
}
+ const char *lip2user[][2] =
{{"127.0.0.3","dc=domain1,dc=tld1"},{"127.0.0.1","localhost"},{"127.0.0.2","dc=domain2,dc=tld2"}};
+ int arrsize=sizeof( lip2user ) / sizeof( lip2user[0]);
+ tab[18].value = ""; // default expanded to - emty string
+ int i;
+ for(i=0;i<arrsize;i++) {
+ if
(strcmp(net_ip2addr(&auth_request->local_ip),(lip2user[i][0]))==0) {
+ tab[18].value = lip2user[i][1];
+ }
+ }
return tab;
}
---------------------------------
and there need only possibility to define pairs in config file for
lip2user array initialization - then macro/variable %x will be available
for substitution in all modules - as for ldap , as for filename-based
parameters.
in exaple patch created static table to match lip to suffix
127.0.0.3 = "dc=domain1,dc=tld1"
127.0.0.1 = "localhost"
127.0.0.2 = "dc=domain2,dc=tld2"
how to initialize arrays from config - i'm was not explored for
currently used coding structures
may create this array more complex = not as simple pair - but as for
selective conversion:
%x1 lip to text1,
%x2 lip to text2,
%x3 lip to text3 ...
- then diffirent advanced configurations will be possible ...
More information about the dovecot
mailing list