From: Stephan Bosch Date: Mon, 30 Oct 2023 00:56:11 +0000 (+0100) Subject: auth: Move SASL server code to lib-sasl X-Git-Tag: 2.4.2~164 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=54a493f012b57823f8177a394b7d2baeebb577b5;p=thirdparty%2Fdovecot%2Fcore.git auth: Move SASL server code to lib-sasl --- diff --git a/configure.ac b/configure.ac index 0f56c3036c..2c47f971a2 100644 --- a/configure.ac +++ b/configure.ac @@ -613,6 +613,9 @@ if test "$want_shared_libs" = "yes"; then if test $want_lua != no; then LIBDOVECOT_LUA='$(top_builddir)/src/lib-lua/libdovecot-lua.la' fi + if test $want_gssapi != no; then + LIBDOVECOT_GSSAPI='$(top_builddir)/src/lib-dovecot/libdovecot-gssapi.la' + fi else LIBDOVECOT_DEPS="$LIBDOVECOT_LA_LIBS" LIBDOVECOT="$LIBDOVECOT_DEPS \$(MODULE_LIBS) \$(LIBPCRE_LIBS)" @@ -622,7 +625,11 @@ else if test $want_lua != no; then LIBDOVECOT_LUA='$(top_builddir)/src/lib-lua/libdlua.la' fi + if test $want_gssapi != no; then + LIBDOVECOT_GSSAPI='$(top_builddir)/src/lib-sasl/libsasl-gssapi.la' + fi fi +LIBDOVECOT_GSSAPI_DEPS="$LIBDOVECOT_GSSAPI" if test $want_ldap != no; then LIBDOVECOT_LDAP='$(top_builddir)/src/lib-ldap/libdldap.la' else @@ -654,6 +661,8 @@ AC_SUBST(LIBDOVECOT_LUA) AC_SUBST(LIBDOVECOT_LUA_DEPS) AC_SUBST(LIBDOVECOT_OPENSSL) AC_SUBST(LIBDOVECOT_OPENSSL_DEPS) +AC_SUBST(LIBDOVECOT_GSSAPI) +AC_SUBST(LIBDOVECOT_GSSAPI_DEPS) dnl ** dnl ** SQL drivers diff --git a/dovecot-config.in.in b/dovecot-config.in.in index 575cc701d7..d18f264910 100644 --- a/dovecot-config.in.in +++ b/dovecot-config.in.in @@ -23,6 +23,7 @@ LIBDOVECOT_DSYNC="@LIBDOVECOT_DSYNC@" LIBDOVECOT_LIBLANG="@LIBDOVECOT_LIBLANG@" LIBDOVECOT_LUA="@LIBDOVECOT_LUA@" LIBDOVECOT_OPENSSL="@LIBDOVECOT_OPENSSL@" +LIBDOVECOT_GSSAPI="@LIBDOVECOT_GSSAPI@" LIBDOVECOT_DEPS="@LIBDOVECOT_DEPS@" LIBDOVECOT_LOGIN_DEPS="@LIBDOVECOT_LOGIN@" @@ -35,6 +36,7 @@ LIBDOVECOT_DSYNC_DEPS="@LIBDOVECOT_DSYNC@" LIBDOVECOT_LIBLANG_DEPS="@LIBDOVECOT_LIBLANG@" LIBDOVECOT_LUA_DEPS="@LIBDOVECOT_LUA@" LIBDOVECOT_OPENSSL_DEPS="@LIBDOVECOT_OPENSSL@" +LIBDOVECOT_GSSAPI_DEPS="@LIBDOVECOT_GSSAPI_DEPS@" LIBDOVECOT_INCLUDE="-I$(incdir) -I$(incdir)/src/lib -I$(incdir)/src/lib-json -I$(incdir)/src/lib-dict -I$(incdir)/src/lib-dict-extra -I$(incdir)/src/lib-dns -I$(incdir)/src/lib-dns-client -I$(incdir)/src/lib-http -I$(incdir)/src/lib-mail -I$(incdir)/src/lib-smtp -I$(incdir)/src/lib-imap -I$(incdir)/src/lib-imap -I$(incdir)/src/lib-fs -I$(incdir)/src/lib-charset -I$(incdir)/src/lib-auth -I$(incdir)/src/lib-auth-client -I$(incdir)/src/lib-login -I$(incdir)/src/lib-master -I$(incdir)/src/lib-ssl-iostream -I$(incdir)/src/lib-compression -I$(incdir)/src/lib-settings -I$(incdir)/src/lib-test -I$(incdir)/src/lib-sasl -I$(incdir)/src/lib-dcrypt -I$(incdir)/src/lib-program-client -I$(incdir)/src/lib-oauth2 -I$(incdir)/src/lib-var-expand -I$(incdir)/src/lib-regex" LIBDOVECOT_LDA_INCLUDE="-I$(incdir)/src/lib-lda -I$(incdir)/src/lda" diff --git a/m4/dovecot.m4 b/m4/dovecot.m4 index ce032282e2..6567e4646a 100644 --- a/m4/dovecot.m4 +++ b/m4/dovecot.m4 @@ -394,8 +394,8 @@ AC_DEFUN([DC_DOVECOT],[ AX_SUBST_L([DISTCHECK_CONFIGURE_FLAGS], [dovecotdir], [dovecot_moduledir], [dovecot_installed_moduledir], [dovecot_pkgincludedir], [dovecot_pkglibexecdir], [dovecot_pkglibdir], [dovecot_docdir], [dovecot_statedir]) AX_SUBST_L([DOVECOT_INSTALLED], [DOVECOT_CFLAGS], [DOVECOT_LIBS], [DOVECOT_SSL_LIBS], [DOVECOT_SQL_LIBS], [DOVECOT_LDAP_LIBS], [DOVECOT_COMPRESS_LIBS], [DOVECOT_BINARY_CFLAGS], [DOVECOT_BINARY_LDFLAGS]) - AX_SUBST_L([LIBDOVECOT], [LIBDOVECOT_LOGIN], [LIBDOVECOT_SQL], [LIBDOVECOT_LDAP], [LIBDOVECOT_OPENSSL], [LIBDOVECOT_COMPRESS], [LIBDOVECOT_LDA], [LIBDOVECOT_STORAGE], [LIBDOVECOT_DSYNC], [LIBDOVECOT_LIBLANG]) - AX_SUBST_L([LIBDOVECOT_DEPS], [LIBDOVECOT_LOGIN_DEPS], [LIBDOVECOT_SQL_DEPS], [LIBDOVECOT_LDAP_DEPS], [LIBDOVECOT_OPENSSL_DEPS], [LIBDOVECOT_COMPRESS_DEPS], [LIBDOVECOT_LDA_DEPS], [LIBDOVECOT_STORAGE_DEPS], [LIBDOVECOT_DSYNC_DEPS], [LIBDOVECOT_LIBLANG_DEPS]) + AX_SUBST_L([LIBDOVECOT], [LIBDOVECOT_LOGIN], [LIBDOVECOT_SQL], [LIBDOVECOT_LDAP], [LIBDOVECOT_OPENSSL], [LIBDOVECOT_COMPRESS], [LIBDOVECOT_LDA], [LIBDOVECOT_STORAGE], [LIBDOVECOT_DSYNC], [LIBDOVECOT_LIBLANG], [LIBDOVECOT_GSSAPI]) + AX_SUBST_L([LIBDOVECOT_DEPS], [LIBDOVECOT_LOGIN_DEPS], [LIBDOVECOT_SQL_DEPS], [LIBDOVECOT_LDAP_DEPS], [LIBDOVECOT_OPENSSL_DEPS], [LIBDOVECOT_COMPRESS_DEPS], [LIBDOVECOT_LDA_DEPS], [LIBDOVECOT_STORAGE_DEPS], [LIBDOVECOT_DSYNC_DEPS], [LIBDOVECOT_LIBLANG_DEPS], [LIBDOVECOT_GSSAPI_DEPS]) AX_SUBST_L([LIBDOVECOT_INCLUDE], [LIBDOVECOT_LDA_INCLUDE], [LIBDOVECOT_AUTH_INCLUDE], [LIBDOVECOT_DOVEADM_INCLUDE], [LIBDOVECOT_SERVICE_INCLUDE], [LIBDOVECOT_STORAGE_INCLUDE], [LIBDOVECOT_LOGIN_INCLUDE], [LIBDOVECOT_SQL_INCLUDE], [LIBDOVECOT_LDAP_INCLUDE]) AX_SUBST_L([LIBDOVECOT_IMAP_LOGIN_INCLUDE], [LIBDOVECOT_CONFIG_INCLUDE], [LIBDOVECOT_IMAP_INCLUDE], [LIBDOVECOT_POP3_INCLUDE], [LIBDOVECOT_SUBMISSION_INCLUDE], [LIBDOVECOT_LMTP_INCLUDE], [LIBDOVECOT_DSYNC_INCLUDE], [LIBDOVECOT_IMAPC_INCLUDE], [LIBDOVECOT_FTS_INCLUDE]) AX_SUBST_L([LIBDOVECOT_NOTIFY_INCLUDE], [LIBDOVECOT_PUSH_NOTIFICATION_INCLUDE], [LIBDOVECOT_ACL_INCLUDE], [LIBDOVECOT_LIBLANG_INCLUDE], [LIBDOVECOT_LUA_INCLUDE]) diff --git a/src/Makefile.am b/src/Makefile.am index 8e869f5ecb..45a17a1945 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -26,8 +26,9 @@ LIBDOVECOT_SUBDIRS = \ lib-json \ lib-dcrypt \ lib-dict \ - lib-sasl \ lib-http \ + lib-oauth2 \ + lib-sasl \ lib-fs \ lib-mail \ lib-program-client \ @@ -35,7 +36,6 @@ LIBDOVECOT_SUBDIRS = \ lib-pop3 \ lib-imap \ lib-imap-storage \ - lib-oauth2 \ lib-doveadm \ lib-var-expand-crypt diff --git a/src/auth/Makefile.am b/src/auth/Makefile.am index 5db3ac24c8..e9dff950d6 100644 --- a/src/auth/Makefile.am +++ b/src/auth/Makefile.am @@ -81,31 +81,6 @@ auth_SOURCES = main.c $(auth_common_sources) ldap_sources = db-ldap.c db-ldap-sasl.c db-ldap-settings.c passdb-ldap.c userdb-ldap.c lua_sources = db-lua.c passdb-lua.c userdb-lua.c -sasl_server_mechanisms = \ - sasl-server-mech-anonymous.c \ - sasl-server-mech-cram-md5.c \ - sasl-server-mech-digest-md5.c \ - sasl-server-mech-external.c \ - sasl-server-mech-login.c \ - sasl-server-mech-oauth2.c \ - sasl-server-mech-otp.c \ - sasl-server-mech-plain.c \ - sasl-server-mech-plain-common.c \ - sasl-server-mech-scram.c \ - sasl-server-mech-winbind.c -if HAVE_GSSAPI -if !GSSAPI_PLUGIN -sasl_server_mechanisms += \ - sasl-server-mech-gssapi.c -endif -endif - -sasl_sources = \ - ${sasl_server_mechanisms} \ - sasl-server-request.c \ - sasl-server-mech.c \ - sasl-server.c - auth_common_sources = \ auth.c \ auth-cache.c \ @@ -129,7 +104,6 @@ auth_common_sources = \ db-oauth2.c \ db-sql.c \ db-passwd-file.c \ - ${sasl_sources} \ passdb.c \ passdb-blocking.c \ passdb-bsdauth.c \ @@ -151,6 +125,7 @@ auth_common_sources = \ $(lua_sources) if HAVE_GSSAPI if !GSSAPI_PLUGIN +auth_libs += $(LIBDOVECOT_GSSAPI) auth_common_sources += \ auth-sasl-mech-gssapi.c \ auth-sasl-mech-gss-spnego.c \ @@ -184,13 +159,6 @@ headers = \ db-sql.h \ db-passwd-file.h \ db-oauth2.h \ - sasl-server.h \ - sasl-server-gssapi.h \ - sasl-server-oauth2.h \ - sasl-server-private.h \ - sasl-server-protected.h \ - sasl-server-mech-plain-common.h \ - sasl-server-mech-scram.h \ passdb.h \ passdb-blocking.h \ passdb-cache.h \ @@ -199,18 +167,18 @@ headers = \ if GSSAPI_PLUGIN libmech_gssapi_la_LDFLAGS = -module -avoid-version -libmech_gssapi_la_LIBADD = $(KRB5_LIBS) -libmech_gssapi_la_CPPFLAGS = $(AM_CPPFLAGS) $(KRB5_CFLAGS) -DPLUGIN_BUILD +libmech_gssapi_la_LIBADD = $(LIBDOVECOT_GSSAPI) +libmech_gssapi_la_DEPENDENCIES = $(LIBDOVECOT_GSSAPI_DEPS) +libmech_gssapi_la_CPPFLAGS = $(AM_CPPFLAGS) libmech_gssapi_la_SOURCES = \ - sasl-server-mech-gssapi.c \ auth-sasl-gssapi.c \ auth-sasl-mech-gssapi.c libmech_gss_spnego_la_LDFLAGS = -module -avoid-version -libmech_gss_spnego_la_LIBADD = $(KRB5_LIBS) -libmech_gss_spnego_la_CPPFLAGS = $(AM_CPPFLAGS) $(KRB5_CFLAGS) -DPLUGIN_BUILD +libmech_gss_spnego_la_LIBADD = $(LIBDOVECOT_GSSAPI) +libmech_gss_spnego_la_DEPENDENCIES = $(LIBDOVECOT_GSSAPI_DEPS) +libmech_gss_spnego_la_CPPFLAGS = $(AM_CPPFLAGS) libmech_gss_spnego_la_SOURCES = \ - sasl-server-mech-gssapi.c \ auth-sasl-gssapi.c \ auth-sasl-mech-gss-spnego.c endif diff --git a/src/lib-dovecot/Makefile.am b/src/lib-dovecot/Makefile.am index d22c9bb0ac..4b27ee6024 100644 --- a/src/lib-dovecot/Makefile.am +++ b/src/lib-dovecot/Makefile.am @@ -1,4 +1,4 @@ -pkglib_LTLIBRARIES = libdovecot.la +pkglib_LTLIBRARIES = libdovecot.la libdovecot-gssapi.la libdovecot_la_SOURCES = @@ -10,3 +10,16 @@ libdovecot_la_LIBADD = \ libdovecot_la_DEPENDENCIES = $(LIBDOVECOT_LA_LIBS) libdovecot_la_LDFLAGS = -export-dynamic + +if HAVE_GSSAPI +libdovecot_gssapi_la_CPPFLAGS = $(AM_CPPFLAGS) $(KRB5_CFLAGS) +libdovecot_gssapi_la_SOURCES = +libdovecot_gssapi_la_LIBADD = \ + $(top_builddir)/src/lib-sasl/libsasl-gssapi.la \ + $(MODULE_LIBS) \ + $(KRB5_LIBS) \ + $(RELRO_LDFLAGS) +libdovecot_gssapi_la_DEPENDENCIES = \ + $(top_builddir)/src/lib-sasl/libsasl-gssapi.la +libdovecot_gssapi_la_LDFLAGS = -export-dynamic +endif diff --git a/src/lib-sasl/Makefile.am b/src/lib-sasl/Makefile.am index 893ac1c81c..688239a219 100644 --- a/src/lib-sasl/Makefile.am +++ b/src/lib-sasl/Makefile.am @@ -1,12 +1,18 @@ noinst_LTLIBRARIES = libsasl.la +if HAVE_GSSAPI +noinst_LTLIBRARIES += libsasl-gssapi.la +endif AM_CPPFLAGS = \ -I$(top_srcdir)/src/lib \ -I$(top_srcdir)/src/lib-test \ -I$(top_srcdir)/src/lib-settings \ + -I$(top_srcdir)/src/lib-oauth2 \ -I$(top_srcdir)/src/lib-auth \ -I$(top_srcdir)/src/lib-json \ - -I$(top_srcdir)/src/lib-ssl-iostream + -I$(top_srcdir)/src/lib-ssl-iostream \ + -I$(top_srcdir)/src/lib-otp \ + -I$(top_srcdir)/src/lib-auth client_mechanisms = \ dsasl-client-mech-anonymous.c \ @@ -16,17 +22,50 @@ client_mechanisms = \ dsasl-client-mech-plain.c \ dsasl-client-mech-scram.c +server_mechanisms = \ + sasl-server-mech-anonymous.c \ + sasl-server-mech-cram-md5.c \ + sasl-server-mech-digest-md5.c \ + sasl-server-mech-external.c \ + sasl-server-mech-login.c \ + sasl-server-mech-oauth2.c \ + sasl-server-mech-otp.c \ + sasl-server-mech-plain-common.c \ + sasl-server-mech-plain.c \ + sasl-server-mech-scram.c \ + sasl-server-mech-winbind.c + libsasl_la_SOURCES = \ $(client_mechanisms) \ - dsasl-client.c + dsasl-client.c \ + $(server_mechanisms) \ + sasl-server-mech.c \ + sasl-server-request.c \ + sasl-server.c libsasl_la_DEPENDENCIES = \ + ../lib-json/libjson.la \ ../lib-auth/libauth.la \ - ../lib-json/libjson.la + ../lib-oauth2/liboauth2.la + +if HAVE_GSSAPI +libsasl_gssapi_la_SOURCES = \ + sasl-server-mech-gssapi.c +libsasl_gssapi_la_LIBADD = $(KRB5_LIBS) +libsasl_gssapi_la_CPPFLAGS = $(AM_CPPFLAGS) $(KRB5_CFLAGS) +libsasl_gssapi_la_DEPENDENCIES = libsasl.la +endif headers = \ sasl-common.h \ dsasl-client.h \ - dsasl-client-private.h + dsasl-client-private.h \ + sasl-server.h \ + sasl-server-gssapi.h \ + sasl-server-oauth2.h \ + sasl-server-protected.h \ + sasl-server-private.h \ + sasl-server-mech-scram.h \ + sasl-server-mech-plain-common.h pkginc_libdir=$(pkgincludedir) pkginc_lib_HEADERS = $(headers) @@ -37,8 +76,10 @@ test_programs = \ noinst_PROGRAMS = $(test_programs) test_libs = \ - $(noinst_LTLIBRARIES) \ + libsasl.la \ ../lib-auth/libauth.la \ + ../lib-oauth2/liboauth2.la \ + ../lib-otp/libotp.la \ ../lib-json/libjson.la \ ../lib-test/libtest.la \ ../lib/liblib.la diff --git a/src/auth/sasl-server-gssapi.h b/src/lib-sasl/sasl-server-gssapi.h similarity index 100% rename from src/auth/sasl-server-gssapi.h rename to src/lib-sasl/sasl-server-gssapi.h diff --git a/src/auth/sasl-server-mech-anonymous.c b/src/lib-sasl/sasl-server-mech-anonymous.c similarity index 100% rename from src/auth/sasl-server-mech-anonymous.c rename to src/lib-sasl/sasl-server-mech-anonymous.c diff --git a/src/auth/sasl-server-mech-cram-md5.c b/src/lib-sasl/sasl-server-mech-cram-md5.c similarity index 100% rename from src/auth/sasl-server-mech-cram-md5.c rename to src/lib-sasl/sasl-server-mech-cram-md5.c diff --git a/src/auth/sasl-server-mech-digest-md5.c b/src/lib-sasl/sasl-server-mech-digest-md5.c similarity index 100% rename from src/auth/sasl-server-mech-digest-md5.c rename to src/lib-sasl/sasl-server-mech-digest-md5.c diff --git a/src/auth/sasl-server-mech-external.c b/src/lib-sasl/sasl-server-mech-external.c similarity index 100% rename from src/auth/sasl-server-mech-external.c rename to src/lib-sasl/sasl-server-mech-external.c diff --git a/src/auth/sasl-server-mech-gssapi.c b/src/lib-sasl/sasl-server-mech-gssapi.c similarity index 100% rename from src/auth/sasl-server-mech-gssapi.c rename to src/lib-sasl/sasl-server-mech-gssapi.c diff --git a/src/auth/sasl-server-mech-login.c b/src/lib-sasl/sasl-server-mech-login.c similarity index 100% rename from src/auth/sasl-server-mech-login.c rename to src/lib-sasl/sasl-server-mech-login.c diff --git a/src/auth/sasl-server-mech-oauth2.c b/src/lib-sasl/sasl-server-mech-oauth2.c similarity index 100% rename from src/auth/sasl-server-mech-oauth2.c rename to src/lib-sasl/sasl-server-mech-oauth2.c diff --git a/src/auth/sasl-server-mech-otp.c b/src/lib-sasl/sasl-server-mech-otp.c similarity index 100% rename from src/auth/sasl-server-mech-otp.c rename to src/lib-sasl/sasl-server-mech-otp.c diff --git a/src/auth/sasl-server-mech-plain-common.c b/src/lib-sasl/sasl-server-mech-plain-common.c similarity index 100% rename from src/auth/sasl-server-mech-plain-common.c rename to src/lib-sasl/sasl-server-mech-plain-common.c diff --git a/src/auth/sasl-server-mech-plain-common.h b/src/lib-sasl/sasl-server-mech-plain-common.h similarity index 100% rename from src/auth/sasl-server-mech-plain-common.h rename to src/lib-sasl/sasl-server-mech-plain-common.h diff --git a/src/auth/sasl-server-mech-plain.c b/src/lib-sasl/sasl-server-mech-plain.c similarity index 100% rename from src/auth/sasl-server-mech-plain.c rename to src/lib-sasl/sasl-server-mech-plain.c diff --git a/src/auth/sasl-server-mech-scram.c b/src/lib-sasl/sasl-server-mech-scram.c similarity index 100% rename from src/auth/sasl-server-mech-scram.c rename to src/lib-sasl/sasl-server-mech-scram.c diff --git a/src/auth/sasl-server-mech-scram.h b/src/lib-sasl/sasl-server-mech-scram.h similarity index 100% rename from src/auth/sasl-server-mech-scram.h rename to src/lib-sasl/sasl-server-mech-scram.h diff --git a/src/auth/sasl-server-mech-winbind.c b/src/lib-sasl/sasl-server-mech-winbind.c similarity index 100% rename from src/auth/sasl-server-mech-winbind.c rename to src/lib-sasl/sasl-server-mech-winbind.c diff --git a/src/auth/sasl-server-mech.c b/src/lib-sasl/sasl-server-mech.c similarity index 100% rename from src/auth/sasl-server-mech.c rename to src/lib-sasl/sasl-server-mech.c diff --git a/src/auth/sasl-server-oauth2.h b/src/lib-sasl/sasl-server-oauth2.h similarity index 100% rename from src/auth/sasl-server-oauth2.h rename to src/lib-sasl/sasl-server-oauth2.h diff --git a/src/auth/sasl-server-private.h b/src/lib-sasl/sasl-server-private.h similarity index 100% rename from src/auth/sasl-server-private.h rename to src/lib-sasl/sasl-server-private.h diff --git a/src/auth/sasl-server-protected.h b/src/lib-sasl/sasl-server-protected.h similarity index 100% rename from src/auth/sasl-server-protected.h rename to src/lib-sasl/sasl-server-protected.h diff --git a/src/auth/sasl-server-request.c b/src/lib-sasl/sasl-server-request.c similarity index 100% rename from src/auth/sasl-server-request.c rename to src/lib-sasl/sasl-server-request.c diff --git a/src/auth/sasl-server.c b/src/lib-sasl/sasl-server.c similarity index 100% rename from src/auth/sasl-server.c rename to src/lib-sasl/sasl-server.c diff --git a/src/auth/sasl-server.h b/src/lib-sasl/sasl-server.h similarity index 100% rename from src/auth/sasl-server.h rename to src/lib-sasl/sasl-server.h