[Dovecot] Trying to building a customized auth plugin
I'm on dovecot 2.0.7 and I trying to building a customized auth plugin.
I take passdb-passwd-file.c and userdb-passwd-file.c to try to build with a simple gcc comand out of dovecot environment as in example:
export DOVECOT=/path/to/untar/dovecot-2.0.7
gcc -fPIC -shared -g -Wall -I$DOVECOT
-I$DOVECOT/src/lib
-I$DOVECOT/src/lib-auth
-I$DOVECOT/src/lib-sql
-I$DOVECOT/src/lib-settings
-I$DOVECOT/src/lib-ntlm
-I$DOVECOT/src/lib-master
-I$DOVECOT/src/auth
passdb-passwd-file.c -o passdb-passwd-file.o
With this, I get errors relate with uoff_t
Is possible to build this plugin by this way?
Another way is patching against one plugin on dovecot RPM, but I prefer this on a separated RPM.
gcc -fPIC -shared -g -Wall
-I$DOVECOT
-I$DOVECOT/src/lib
-I$DOVECOT/src/lib-auth
-I$DOVECOT/src/lib-sql
-I$DOVECOT/src/lib-settings
-I$DOVECOT/src/lib-ntlm
-I$DOVECOT/src/lib-master
-I$DOVECOT/src/auth
-DHAVE_CONFIG_H
-DAUTH_MODULE_DIR=\"passdb-custom\"
passdb-custom.c -o passdb-custom.o
With this I get:
error on auth-common.h ... config.h Not found.
But config.h are in $DOVECOT path
2010/11/15 Timo Sirainen <tss@iki.fi>:
Is it needed to include custom db on usedb.c and passdb.c ?
I can see at userdb.c:
void userdbs_init(void)
with all userdb registered, and similar at passdb.c
At now, I get the follow line loading the module and trying to access vía imap login
Nov 16 17:54:28 auth: Error: module /usr/lib64/dovecot/auth/libauthdb_custom.so: dlsym(authdb_custom_init) failed: /usr/lib64/dovecot/auth/libauthdb_custom.so: undefined symbol: authdb_custom_init Nov 16 17:54:28 auth: Error: Module doesn't have init function: /usr/lib64/dovecot/auth/libauthdb_custom.so
2010/11/16 Antonio Perez-Aranda <aperezaranda@yaco.es>:
Dovecot plugins works with hooks. This hooks allow you customize some actions.
You need to find the authentication hook, and rewrite it's actions.
Inside the userdb.c have it void userdbs_init(void), but you change the shared name, so you need to change inside your plugin too.
But, you're trying to do something with auth, you can use PAM, it's more easy. (i think)
2010/11/16 Antonio Perez-Aranda <aperezaranda@yaco.es>
participants (3)
-
Alex Baule
-
Antonio Perez-Aranda
-
Timo Sirainen