]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: Move SASL server code to lib-sasl
authorStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 30 Oct 2023 00:56:11 +0000 (01:56 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 9 Oct 2025 08:41:22 +0000 (08:41 +0000)
29 files changed:
configure.ac
dovecot-config.in.in
m4/dovecot.m4
src/Makefile.am
src/auth/Makefile.am
src/lib-dovecot/Makefile.am
src/lib-sasl/Makefile.am
src/lib-sasl/sasl-server-gssapi.h [moved from src/auth/sasl-server-gssapi.h with 100% similarity]
src/lib-sasl/sasl-server-mech-anonymous.c [moved from src/auth/sasl-server-mech-anonymous.c with 100% similarity]
src/lib-sasl/sasl-server-mech-cram-md5.c [moved from src/auth/sasl-server-mech-cram-md5.c with 100% similarity]
src/lib-sasl/sasl-server-mech-digest-md5.c [moved from src/auth/sasl-server-mech-digest-md5.c with 100% similarity]
src/lib-sasl/sasl-server-mech-external.c [moved from src/auth/sasl-server-mech-external.c with 100% similarity]
src/lib-sasl/sasl-server-mech-gssapi.c [moved from src/auth/sasl-server-mech-gssapi.c with 100% similarity]
src/lib-sasl/sasl-server-mech-login.c [moved from src/auth/sasl-server-mech-login.c with 100% similarity]
src/lib-sasl/sasl-server-mech-oauth2.c [moved from src/auth/sasl-server-mech-oauth2.c with 100% similarity]
src/lib-sasl/sasl-server-mech-otp.c [moved from src/auth/sasl-server-mech-otp.c with 100% similarity]
src/lib-sasl/sasl-server-mech-plain-common.c [moved from src/auth/sasl-server-mech-plain-common.c with 100% similarity]
src/lib-sasl/sasl-server-mech-plain-common.h [moved from src/auth/sasl-server-mech-plain-common.h with 100% similarity]
src/lib-sasl/sasl-server-mech-plain.c [moved from src/auth/sasl-server-mech-plain.c with 100% similarity]
src/lib-sasl/sasl-server-mech-scram.c [moved from src/auth/sasl-server-mech-scram.c with 100% similarity]
src/lib-sasl/sasl-server-mech-scram.h [moved from src/auth/sasl-server-mech-scram.h with 100% similarity]
src/lib-sasl/sasl-server-mech-winbind.c [moved from src/auth/sasl-server-mech-winbind.c with 100% similarity]
src/lib-sasl/sasl-server-mech.c [moved from src/auth/sasl-server-mech.c with 100% similarity]
src/lib-sasl/sasl-server-oauth2.h [moved from src/auth/sasl-server-oauth2.h with 100% similarity]
src/lib-sasl/sasl-server-private.h [moved from src/auth/sasl-server-private.h with 100% similarity]
src/lib-sasl/sasl-server-protected.h [moved from src/auth/sasl-server-protected.h with 100% similarity]
src/lib-sasl/sasl-server-request.c [moved from src/auth/sasl-server-request.c with 100% similarity]
src/lib-sasl/sasl-server.c [moved from src/auth/sasl-server.c with 100% similarity]
src/lib-sasl/sasl-server.h [moved from src/auth/sasl-server.h with 100% similarity]

index 0f56c3036cc8b22356df7db28fdc49012d3af419..2c47f971a2feafcda74c7651c56a01a4123f5321 100644 (file)
@@ -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
index 575cc701d72a5eaa42f71211894cefb4900886eb..d18f26491071c21b6966bdd4d0f82d1595cad808 100644 (file)
@@ -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"
index ce032282e21b4a10a4c2feb2506f60ddef607083..6567e4646a3506f746e7bcad6f29ee9e079948e7 100644 (file)
@@ -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])
index 8e869f5ecb02cbf8853b4526b61d1ec3b078da73..45a17a19458d5cd0247977e825d8ed36136621f5 100644 (file)
@@ -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
 
index 5db3ac24c8f2cd9face37199075c1be9c0f8bb39..e9dff950d6a93056cb81efb66799bd9b6e858201 100644 (file)
@@ -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
index d22c9bb0aca14aff231637bd6b5db576a7084d7e..4b27ee60241353a352db31f1abbddcec25b16994 100644 (file)
@@ -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
index 893ac1c81c37df16824a8e581a51d71310f266a8..688239a219718d3e52f98e5a3f307b5b8a857b88 100644 (file)
@@ -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