From 75cc27f6f649ca274ed27e392883f2e990e46a82 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 24 Jun 2011 11:29:04 -0400 Subject: [PATCH] Make Camel's SASL framework more extensible. Gather SASL mechanism names by traversing subclasses of CamelSasl instead of hard-coding all known mechanism names. This allows mechanisms to be added from outside of libcamel. This adds a CamelServiceAuthType pointer to CamelSaslClass, which changes the ABI. Statically registered subclasses can just point to a static CamelServiceAuthType struct. Dynamically registered subclasses should allocate a CamelServiceAuthType struct in their base_init class method and free it in their base_finalize class method. Adapt CamelSasl subclasses to the new approach. --- camel/camel-sasl-anonymous.c | 3 +- camel/camel-sasl-anonymous.h | 2 - camel/camel-sasl-cram-md5.c | 3 +- camel/camel-sasl-cram-md5.h | 2 - camel/camel-sasl-digest-md5.c | 3 +- camel/camel-sasl-digest-md5.h | 2 - camel/camel-sasl-gssapi.c | 3 +- camel/camel-sasl-gssapi.h | 2 - camel/camel-sasl-login.c | 3 +- camel/camel-sasl-login.h | 2 - camel/camel-sasl-ntlm.c | 3 +- camel/camel-sasl-ntlm.h | 2 - camel/camel-sasl-plain.c | 3 +- camel/camel-sasl-plain.h | 2 - camel/camel-sasl-popb4smtp.c | 3 +- camel/camel-sasl-popb4smtp.h | 2 - camel/camel-sasl.c | 174 +++++++++++++++------ camel/camel-sasl.h | 3 + configure.ac | 2 +- docs/reference/camel/camel-sections.txt | 8 - .../reference/camel/tmpl/camel-sasl-anonymous.sgml | 6 - docs/reference/camel/tmpl/camel-sasl-cram-md5.sgml | 6 - .../camel/tmpl/camel-sasl-digest-md5.sgml | 6 - docs/reference/camel/tmpl/camel-sasl-gssapi.sgml | 6 - docs/reference/camel/tmpl/camel-sasl-login.sgml | 6 - docs/reference/camel/tmpl/camel-sasl-ntlm.sgml | 6 - docs/reference/camel/tmpl/camel-sasl-plain.sgml | 6 - .../reference/camel/tmpl/camel-sasl-popb4smtp.sgml | 6 - docs/reference/camel/tmpl/camel-unused.sgml | 48 ++++++ 29 files changed, 195 insertions(+), 128 deletions(-) diff --git a/camel/camel-sasl-anonymous.c b/camel/camel-sasl-anonymous.c index b075671..b26ee25 100644 --- a/camel/camel-sasl-anonymous.c +++ b/camel/camel-sasl-anonymous.c @@ -31,7 +31,7 @@ #include "camel-internet-address.h" #include "camel-sasl-anonymous.h" -CamelServiceAuthType camel_sasl_anonymous_authtype = { +static CamelServiceAuthType sasl_anonymous_auth_type = { N_("Anonymous"), N_("This option will connect to the server using an anonymous login."), @@ -125,6 +125,7 @@ camel_sasl_anonymous_class_init (CamelSaslAnonymousClass *class) object_class->finalize = sasl_anonymous_finalize; sasl_class = CAMEL_SASL_CLASS (class); + sasl_class->auth_type = &sasl_anonymous_auth_type; sasl_class->challenge_sync = sasl_anonymous_challenge_sync; } diff --git a/camel/camel-sasl-anonymous.h b/camel/camel-sasl-anonymous.h index 57844ab..239c353 100644 --- a/camel/camel-sasl-anonymous.h +++ b/camel/camel-sasl-anonymous.h @@ -75,8 +75,6 @@ GType camel_sasl_anonymous_get_type (void); /* public methods */ CamelSasl *camel_sasl_anonymous_new (CamelSaslAnonTraceType type, const gchar *trace_info); -extern CamelServiceAuthType camel_sasl_anonymous_authtype; - G_END_DECLS #endif /* CAMEL_SASL_ANONYMOUS_H */ diff --git a/camel/camel-sasl-cram-md5.c b/camel/camel-sasl-cram-md5.c index 66fd351..06c12a0 100644 --- a/camel/camel-sasl-cram-md5.c +++ b/camel/camel-sasl-cram-md5.c @@ -37,7 +37,7 @@ struct _CamelSaslCramMd5Private { gint placeholder; /* allow for future expansion */ }; -CamelServiceAuthType camel_sasl_cram_md5_authtype = { +static CamelServiceAuthType sasl_cram_md5_auth_type = { N_("CRAM-MD5"), N_("This option will connect to the server using a " @@ -139,6 +139,7 @@ camel_sasl_cram_md5_class_init (CamelSaslCramMd5Class *class) g_type_class_add_private (class, sizeof (CamelSaslCramMd5Private)); sasl_class = CAMEL_SASL_CLASS (class); + sasl_class->auth_type = &sasl_cram_md5_auth_type; sasl_class->challenge_sync = sasl_cram_md5_challenge_sync; } diff --git a/camel/camel-sasl-cram-md5.h b/camel/camel-sasl-cram-md5.h index 70145b5..9c71729 100644 --- a/camel/camel-sasl-cram-md5.h +++ b/camel/camel-sasl-cram-md5.h @@ -65,8 +65,6 @@ struct _CamelSaslCramMd5Class { GType camel_sasl_cram_md5_get_type (void); -extern CamelServiceAuthType camel_sasl_cram_md5_authtype; - G_END_DECLS #endif /* CAMEL_SASL_CRAM_MD5_H */ diff --git a/camel/camel-sasl-digest-md5.c b/camel/camel-sasl-digest-md5.c index 526cb82..d1c1379 100644 --- a/camel/camel-sasl-digest-md5.c +++ b/camel/camel-sasl-digest-md5.c @@ -50,7 +50,7 @@ /* Implements rfc2831 */ -CamelServiceAuthType camel_sasl_digest_md5_authtype = { +static CamelServiceAuthType sasl_digest_md5_auth_type = { N_("DIGEST-MD5"), N_("This option will connect to the server using a " @@ -938,6 +938,7 @@ camel_sasl_digest_md5_class_init (CamelSaslDigestMd5Class *class) object_class->finalize = sasl_digest_md5_finalize; sasl_class = CAMEL_SASL_CLASS (class); + sasl_class->auth_type = &sasl_digest_md5_auth_type; sasl_class->challenge_sync = sasl_digest_md5_challenge_sync; } diff --git a/camel/camel-sasl-digest-md5.h b/camel/camel-sasl-digest-md5.h index 62e904e..dd29fa8 100644 --- a/camel/camel-sasl-digest-md5.h +++ b/camel/camel-sasl-digest-md5.h @@ -66,8 +66,6 @@ struct _CamelSaslDigestMd5Class { GType camel_sasl_digest_md5_get_type (void); -extern CamelServiceAuthType camel_sasl_digest_md5_authtype; - G_END_DECLS #endif /* CAMEL_SASL_DIGEST_MD5_H */ diff --git a/camel/camel-sasl-gssapi.c b/camel/camel-sasl-gssapi.c index 9f1d1de..45e934b 100644 --- a/camel/camel-sasl-gssapi.c +++ b/camel/camel-sasl-gssapi.c @@ -82,7 +82,7 @@ extern gss_OID gss_nt_service_name; #define DBUS_INTERFACE "org.gnome.KrbAuthDialog" #define DBUS_METHOD "org.gnome.KrbAuthDialog.acquireTgt" -CamelServiceAuthType camel_sasl_gssapi_authtype = { +static CamelServiceAuthType sasl_gssapi_auth_type = { N_("GSSAPI"), N_("This option will connect to the server using " @@ -440,6 +440,7 @@ camel_sasl_gssapi_class_init (CamelSaslGssapiClass *class) object_class->finalize = sasl_gssapi_finalize; sasl_class = CAMEL_SASL_CLASS (class); + sasl_class->auth_type = &sasl_gssapi_auth_type; sasl_class->challenge_sync = sasl_gssapi_challenge_sync; #endif /* HAVE_KRB5 */ } diff --git a/camel/camel-sasl-gssapi.h b/camel/camel-sasl-gssapi.h index a921211..6885ebb 100644 --- a/camel/camel-sasl-gssapi.h +++ b/camel/camel-sasl-gssapi.h @@ -66,8 +66,6 @@ struct _CamelSaslGssapiClass { GType camel_sasl_gssapi_get_type (void); -extern CamelServiceAuthType camel_sasl_gssapi_authtype; - G_END_DECLS #endif /* CAMEL_SASL_GSSAPI_H */ diff --git a/camel/camel-sasl-login.c b/camel/camel-sasl-login.c index c5ef80b..333049b 100644 --- a/camel/camel-sasl-login.c +++ b/camel/camel-sasl-login.c @@ -31,7 +31,7 @@ #include "camel-sasl-login.h" #include "camel-service.h" -CamelServiceAuthType camel_sasl_login_authtype = { +static CamelServiceAuthType sasl_login_auth_type = { N_("Login"), N_("This option will connect to the server using a " @@ -105,6 +105,7 @@ camel_sasl_login_class_init (CamelSaslLoginClass *class) g_type_class_add_private (class, sizeof (CamelSaslLoginPrivate)); sasl_class = CAMEL_SASL_CLASS (class); + sasl_class->auth_type = &sasl_login_auth_type; sasl_class->challenge_sync = sasl_login_challenge_sync; } diff --git a/camel/camel-sasl-login.h b/camel/camel-sasl-login.h index e17bbf8..2410a8d 100644 --- a/camel/camel-sasl-login.h +++ b/camel/camel-sasl-login.h @@ -65,8 +65,6 @@ struct _CamelSaslLoginClass { GType camel_sasl_login_get_type (void); -extern CamelServiceAuthType camel_sasl_login_authtype; - G_END_DECLS #endif /* CAMEL_SASL_LOGIN_H */ diff --git a/camel/camel-sasl-ntlm.c b/camel/camel-sasl-ntlm.c index 3dea971..e25078a 100644 --- a/camel/camel-sasl-ntlm.c +++ b/camel/camel-sasl-ntlm.c @@ -38,7 +38,7 @@ struct _CamelSaslNTLMPrivate { #endif }; -CamelServiceAuthType camel_sasl_ntlm_authtype = { +static CamelServiceAuthType sasl_ntlm_auth_type = { N_("NTLM / SPA"), N_("This option will connect to a Windows-based server using " @@ -921,6 +921,7 @@ camel_sasl_ntlm_class_init (CamelSaslNTLMClass *class) object_class->finalize = sasl_ntlm_finalize; sasl_class = CAMEL_SASL_CLASS (class); + sasl_class->auth_type = &sasl_ntlm_auth_type; sasl_class->challenge_sync = sasl_ntlm_challenge_sync; sasl_class->try_empty_password_sync = sasl_ntlm_try_empty_password_sync; } diff --git a/camel/camel-sasl-ntlm.h b/camel/camel-sasl-ntlm.h index c012895..c67e915 100644 --- a/camel/camel-sasl-ntlm.h +++ b/camel/camel-sasl-ntlm.h @@ -63,8 +63,6 @@ struct _CamelSaslNTLMClass { GType camel_sasl_ntlm_get_type (void); -extern CamelServiceAuthType camel_sasl_ntlm_authtype; - G_END_DECLS #endif /* CAMEL_SASL_NTLM_H */ diff --git a/camel/camel-sasl-plain.c b/camel/camel-sasl-plain.c index d59c54a..d0fd856 100644 --- a/camel/camel-sasl-plain.c +++ b/camel/camel-sasl-plain.c @@ -35,7 +35,7 @@ struct _CamelSaslPlainPrivate { gint placeholder; /* allow for future expansion */ }; -CamelServiceAuthType camel_sasl_plain_authtype = { +static CamelServiceAuthType sasl_plain_auth_type = { N_("PLAIN"), N_("This option will connect to the server using a " @@ -82,6 +82,7 @@ camel_sasl_plain_class_init (CamelSaslPlainClass *class) g_type_class_add_private (class, sizeof (CamelSaslPlainPrivate)); sasl_class = CAMEL_SASL_CLASS (class); + sasl_class->auth_type = &sasl_plain_auth_type; sasl_class->challenge_sync = sasl_plain_challenge_sync; } diff --git a/camel/camel-sasl-plain.h b/camel/camel-sasl-plain.h index 761eaad..796c07c 100644 --- a/camel/camel-sasl-plain.h +++ b/camel/camel-sasl-plain.h @@ -65,8 +65,6 @@ struct _CamelSaslPlainClass { GType camel_sasl_plain_get_type (void); -extern CamelServiceAuthType camel_sasl_plain_authtype; - G_END_DECLS #endif /* CAMEL_SASL_PLAIN_H */ diff --git a/camel/camel-sasl-popb4smtp.c b/camel/camel-sasl-popb4smtp.c index 736387c..f98cee4 100644 --- a/camel/camel-sasl-popb4smtp.c +++ b/camel/camel-sasl-popb4smtp.c @@ -38,7 +38,7 @@ struct _CamelSaslPOPB4SMTPPrivate { gint placeholder; /* allow for future expansion */ }; -CamelServiceAuthType camel_sasl_popb4smtp_authtype = { +static CamelServiceAuthType sasl_popb4smtp_auth_type = { N_("POP before SMTP"), N_("This option will authorise a POP connection before attempting SMTP"), @@ -160,6 +160,7 @@ camel_sasl_popb4smtp_class_init (CamelSaslPOPB4SMTPClass *class) g_type_class_add_private (class, sizeof (CamelSaslPOPB4SMTPPrivate)); sasl_class = CAMEL_SASL_CLASS (class); + sasl_class->auth_type = &sasl_popb4smtp_auth_type; sasl_class->challenge_sync = sasl_popb4smtp_challenge_sync; poplast = g_hash_table_new (g_str_hash, g_str_equal); diff --git a/camel/camel-sasl-popb4smtp.h b/camel/camel-sasl-popb4smtp.h index 7882223..ea21f8c 100644 --- a/camel/camel-sasl-popb4smtp.h +++ b/camel/camel-sasl-popb4smtp.h @@ -65,8 +65,6 @@ struct _CamelSaslPOPB4SMTPClass { GType camel_sasl_popb4smtp_get_type (void); -extern CamelServiceAuthType camel_sasl_popb4smtp_authtype; - G_END_DECLS #endif /* CAMEL_SASL_POPB4SMTP_H */ diff --git a/camel/camel-sasl.c b/camel/camel-sasl.c index 9e073dd..e75d738 100644 --- a/camel/camel-sasl.c +++ b/camel/camel-sasl.c @@ -28,6 +28,7 @@ #include "camel-debug.h" #include "camel-mime-utils.h" +#include "camel-sasl-anonymous.h" #include "camel-sasl-cram-md5.h" #include "camel-sasl-digest-md5.h" #include "camel-sasl-gssapi.h" @@ -89,6 +90,72 @@ async_context_free (AsyncContext *async_context) } static void +sasl_build_class_table_rec (GType type, + GHashTable *class_table) +{ + GType *children; + guint n_children, ii; + + children = g_type_children (type, &n_children); + + for (ii = 0; ii < n_children; ii++) { + GType type = children[ii]; + CamelSaslClass *sasl_class; + gpointer key; + + /* Recurse over the child's children. */ + sasl_build_class_table_rec (type, class_table); + + /* Skip abstract types. */ + if (G_TYPE_IS_ABSTRACT (type)) + continue; + + sasl_class = g_type_class_ref (type); + + if (sasl_class->auth_type == NULL) { + g_critical ( + "%s has an empty CamelServiceAuthType", + G_OBJECT_CLASS_NAME (sasl_class)); + g_type_class_unref (sasl_class); + continue; + } + + key = (gpointer) sasl_class->auth_type->authproto; + g_hash_table_insert (class_table, key, sasl_class); + } + + g_free (children); +} + +static GHashTable * +sasl_build_class_table (void) +{ + GHashTable *class_table; + + /* Register known types. */ + CAMEL_TYPE_SASL_ANONYMOUS; + CAMEL_TYPE_SASL_CRAM_MD5; + CAMEL_TYPE_SASL_DIGEST_MD5; +#ifdef HAVE_KRB5 + CAMEL_TYPE_SASL_GSSAPI; +#endif + CAMEL_TYPE_SASL_LOGIN; + CAMEL_TYPE_SASL_NTLM; + CAMEL_TYPE_SASL_PLAIN; + CAMEL_TYPE_SASL_POPB4SMTP; + + class_table = g_hash_table_new_full ( + (GHashFunc) g_str_hash, + (GEqualFunc) g_str_equal, + (GDestroyNotify) NULL, + (GDestroyNotify) g_type_class_unref); + + sasl_build_class_table_rec (CAMEL_TYPE_SASL, class_table); + + return class_table; +} + +static void sasl_set_mechanism (CamelSasl *sasl, const gchar *mechanism) { @@ -430,36 +497,28 @@ camel_sasl_new (const gchar *service_name, const gchar *mechanism, CamelService *service) { - GType type; + GHashTable *class_table; + CamelSaslClass *sasl_class; + CamelSasl *sasl = NULL; g_return_val_if_fail (service_name != NULL, NULL); g_return_val_if_fail (mechanism != NULL, NULL); g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL); - /* We don't do ANONYMOUS here, because it's a little bit weird. */ + class_table = sasl_build_class_table (); + sasl_class = g_hash_table_lookup (class_table, mechanism); - if (!strcmp (mechanism, "CRAM-MD5")) - type = CAMEL_TYPE_SASL_CRAM_MD5; - else if (!strcmp (mechanism, "DIGEST-MD5")) - type = CAMEL_TYPE_SASL_DIGEST_MD5; -#ifdef HAVE_KRB5 - else if (!strcmp (mechanism, "GSSAPI")) - type = CAMEL_TYPE_SASL_GSSAPI; -#endif - else if (!strcmp (mechanism, "PLAIN")) - type = CAMEL_TYPE_SASL_PLAIN; - else if (!strcmp (mechanism, "LOGIN")) - type = CAMEL_TYPE_SASL_LOGIN; - else if (!strcmp (mechanism, "POPB4SMTP")) - type = CAMEL_TYPE_SASL_POPB4SMTP; - else if (!strcmp (mechanism, "NTLM")) - type = CAMEL_TYPE_SASL_NTLM; - else - return NULL; + if (sasl_class != NULL) + sasl = g_object_new ( + G_OBJECT_CLASS_TYPE (sasl_class), + "mechanism", mechanism, + "service", service, + "service-name", service_name, + NULL); + + g_hash_table_destroy (class_table); - return g_object_new ( - type, "mechanism", mechanism, "service", - service, "service-name", service_name, NULL); + return sasl; } /** @@ -914,16 +973,43 @@ camel_sasl_challenge_base64_finish (CamelSasl *sasl, GList * camel_sasl_authtype_list (gboolean include_plain) { + CamelSaslClass *sasl_class; + GHashTable *class_table; GList *types = NULL; - types = g_list_prepend (types, &camel_sasl_cram_md5_authtype); - types = g_list_prepend (types, &camel_sasl_digest_md5_authtype); + /* XXX I guess these are supposed to be common SASL auth types, + * since this is called by the IMAP, POP and SMTP providers. + * The returned list can be extended with other auth types + * by way of camel_sasl_authtype(), so maybe we should just + * drop the ad-hoc "include_plain" parameter? */ + + class_table = sasl_build_class_table (); + + sasl_class = g_hash_table_lookup (class_table, "CRAM-MD5"); + g_return_val_if_fail (sasl_class != NULL, types); + types = g_list_prepend (types, sasl_class->auth_type); + + sasl_class = g_hash_table_lookup (class_table, "DIGEST-MD5"); + g_return_val_if_fail (sasl_class != NULL, types); + types = g_list_prepend (types, sasl_class->auth_type); + #ifdef HAVE_KRB5 - types = g_list_prepend (types, &camel_sasl_gssapi_authtype); + sasl_class = g_hash_table_lookup (class_table, "GSSAPI"); + g_return_val_if_fail (sasl_class != NULL, types); + types = g_list_prepend (types, sasl_class->auth_type); #endif - types = g_list_prepend (types, &camel_sasl_ntlm_authtype); - if (include_plain) - types = g_list_prepend (types, &camel_sasl_plain_authtype); + + sasl_class = g_hash_table_lookup (class_table, "NTLM"); + g_return_val_if_fail (sasl_class != NULL, types); + types = g_list_prepend (types, sasl_class->auth_type); + + if (include_plain) { + sasl_class = g_hash_table_lookup (class_table, "PLAIN"); + g_return_val_if_fail (sasl_class != NULL, types); + types = g_list_prepend (types, sasl_class->auth_type); + } + + g_hash_table_destroy (class_table); return types; } @@ -938,22 +1024,16 @@ camel_sasl_authtype_list (gboolean include_plain) CamelServiceAuthType * camel_sasl_authtype (const gchar *mechanism) { - if (!strcmp (mechanism, "CRAM-MD5")) - return &camel_sasl_cram_md5_authtype; - else if (!strcmp (mechanism, "DIGEST-MD5")) - return &camel_sasl_digest_md5_authtype; -#ifdef HAVE_KRB5 - else if (!strcmp (mechanism, "GSSAPI")) - return &camel_sasl_gssapi_authtype; -#endif - else if (!strcmp (mechanism, "PLAIN")) - return &camel_sasl_plain_authtype; - else if (!strcmp (mechanism, "LOGIN")) - return &camel_sasl_login_authtype; - else if (!strcmp(mechanism, "POPB4SMTP")) - return &camel_sasl_popb4smtp_authtype; - else if (!strcmp (mechanism, "NTLM")) - return &camel_sasl_ntlm_authtype; - else - return NULL; + GHashTable *class_table; + CamelSaslClass *sasl_class; + CamelServiceAuthType *auth_type; + + g_return_val_if_fail (mechanism != NULL, NULL); + + class_table = sasl_build_class_table (); + sasl_class = g_hash_table_lookup (class_table, mechanism); + auth_type = (sasl_class != NULL) ? sasl_class->auth_type : NULL; + g_hash_table_destroy (class_table); + + return auth_type; } diff --git a/camel/camel-sasl.h b/camel/camel-sasl.h index 953cad5..d24de05 100644 --- a/camel/camel-sasl.h +++ b/camel/camel-sasl.h @@ -63,6 +63,9 @@ struct _CamelSasl { struct _CamelSaslClass { CamelObjectClass parent_class; + /* Auth Mechanism Details */ + CamelServiceAuthType *auth_type; + /* Synchronous I/O Methods */ gboolean (*try_empty_password_sync) (CamelSasl *sasl, diff --git a/configure.ac b/configure.ac index 9b3f341..9c98e61 100644 --- a/configure.ac +++ b/configure.ac @@ -102,7 +102,7 @@ LIBEGROUPWISE_CURRENT=13 LIBEGROUPWISE_REVISION=1 LIBEGROUPWISE_AGE=0 -LIBCAMEL_CURRENT=26 +LIBCAMEL_CURRENT=27 LIBCAMEL_REVISION=0 LIBCAMEL_AGE=0 diff --git a/docs/reference/camel/camel-sections.txt b/docs/reference/camel/camel-sections.txt index d9f4339..a67122c 100644 --- a/docs/reference/camel/camel-sections.txt +++ b/docs/reference/camel/camel-sections.txt @@ -1690,7 +1690,6 @@ CAMEL_PROVIDER_IS_REMOTE CamelSaslAnonymous CamelSaslAnonTraceType camel_sasl_anonymous_new -camel_sasl_anonymous_authtype CAMEL_SASL_ANONYMOUS CAMEL_IS_SASL_ANONYMOUS @@ -1707,7 +1706,6 @@ camel_sasl_anonymous_get_type camel-sasl-cram-md5 CamelSaslCramMd5 CamelSaslCramMd5 -camel_sasl_cram_md5_authtype CAMEL_SASL_CRAM_MD5 CAMEL_IS_SASL_CRAM_MD5 @@ -1725,7 +1723,6 @@ camel_sasl_cram_md5_get_type camel-sasl-digest-md5 CamelSaslDigestMd5 CamelSaslDigestMd5 -camel_sasl_digest_md5_authtype CAMEL_SASL_DIGEST_MD5 CAMEL_IS_SASL_DIGEST_MD5 @@ -1743,7 +1740,6 @@ camel_sasl_digest_md5_get_type camel-sasl-gssapi CamelSaslGssapi CamelSaslGssapi -camel_sasl_gssapi_authtype CAMEL_SASL_GSSAPI CAMEL_IS_SASL_GSSAPI @@ -1761,7 +1757,6 @@ camel_sasl_gssapi_get_type camel-sasl-login CamelSaslLogin CamelSaslLogin -camel_sasl_login_authtype CAMEL_SASL_LOGIN CAMEL_IS_SASL_LOGIN @@ -1779,7 +1774,6 @@ camel_sasl_login_get_type camel-sasl-ntlm CamelSaslNTLM CamelSaslNTLM -camel_sasl_ntlm_authtype CAMEL_SASL_NTLM CAMEL_IS_SASL_NTLM @@ -1797,7 +1791,6 @@ camel_sasl_ntlm_get_type camel-sasl-plain CamelSaslPlain CamelSaslPlain -camel_sasl_plain_authtype CAMEL_SASL_PLAIN CAMEL_IS_SASL_PLAIN @@ -1815,7 +1808,6 @@ camel_sasl_plain_get_type camel-sasl-popb4smtp CamelSaslPOPB4SMTP CamelSaslPOPB4SMTP -camel_sasl_popb4smtp_authtype CAMEL_SASL_POPB4SMTP CAMEL_IS_SASL_POPB4SMTP diff --git a/docs/reference/camel/tmpl/camel-sasl-anonymous.sgml b/docs/reference/camel/tmpl/camel-sasl-anonymous.sgml index 9c0d359..a2dd8d8 100644 --- a/docs/reference/camel/tmpl/camel-sasl-anonymous.sgml +++ b/docs/reference/camel/tmpl/camel-sasl-anonymous.sgml @@ -45,9 +45,3 @@ CamelSaslAnonymous @Returns: - - - - - - diff --git a/docs/reference/camel/tmpl/camel-sasl-cram-md5.sgml b/docs/reference/camel/tmpl/camel-sasl-cram-md5.sgml index 00b71e9..66915f5 100644 --- a/docs/reference/camel/tmpl/camel-sasl-cram-md5.sgml +++ b/docs/reference/camel/tmpl/camel-sasl-cram-md5.sgml @@ -26,9 +26,3 @@ CamelSaslCramMd5 - - - - - - diff --git a/docs/reference/camel/tmpl/camel-sasl-digest-md5.sgml b/docs/reference/camel/tmpl/camel-sasl-digest-md5.sgml index 3d7b7e2..4634a7e 100644 --- a/docs/reference/camel/tmpl/camel-sasl-digest-md5.sgml +++ b/docs/reference/camel/tmpl/camel-sasl-digest-md5.sgml @@ -26,9 +26,3 @@ CamelSaslDigestMd5 - - - - - - diff --git a/docs/reference/camel/tmpl/camel-sasl-gssapi.sgml b/docs/reference/camel/tmpl/camel-sasl-gssapi.sgml index 44738cd..95aac35 100644 --- a/docs/reference/camel/tmpl/camel-sasl-gssapi.sgml +++ b/docs/reference/camel/tmpl/camel-sasl-gssapi.sgml @@ -26,9 +26,3 @@ CamelSaslGssapi - - - - - - diff --git a/docs/reference/camel/tmpl/camel-sasl-login.sgml b/docs/reference/camel/tmpl/camel-sasl-login.sgml index 4cd3fea..c62bbc9 100644 --- a/docs/reference/camel/tmpl/camel-sasl-login.sgml +++ b/docs/reference/camel/tmpl/camel-sasl-login.sgml @@ -26,9 +26,3 @@ CamelSaslLogin - - - - - - diff --git a/docs/reference/camel/tmpl/camel-sasl-ntlm.sgml b/docs/reference/camel/tmpl/camel-sasl-ntlm.sgml index 79bab89..ee924b5 100644 --- a/docs/reference/camel/tmpl/camel-sasl-ntlm.sgml +++ b/docs/reference/camel/tmpl/camel-sasl-ntlm.sgml @@ -26,9 +26,3 @@ CamelSaslNTLM - - - - - - diff --git a/docs/reference/camel/tmpl/camel-sasl-plain.sgml b/docs/reference/camel/tmpl/camel-sasl-plain.sgml index 9a73f29..266d543 100644 --- a/docs/reference/camel/tmpl/camel-sasl-plain.sgml +++ b/docs/reference/camel/tmpl/camel-sasl-plain.sgml @@ -26,9 +26,3 @@ CamelSaslPlain - - - - - - diff --git a/docs/reference/camel/tmpl/camel-sasl-popb4smtp.sgml b/docs/reference/camel/tmpl/camel-sasl-popb4smtp.sgml index 3fe4e62..fc98595 100644 --- a/docs/reference/camel/tmpl/camel-sasl-popb4smtp.sgml +++ b/docs/reference/camel/tmpl/camel-sasl-popb4smtp.sgml @@ -26,9 +26,3 @@ CamelSaslPOPB4SMTP - - - - - - diff --git a/docs/reference/camel/tmpl/camel-unused.sgml b/docs/reference/camel/tmpl/camel-unused.sgml index 382fa94..24edac7 100644 --- a/docs/reference/camel/tmpl/camel-unused.sgml +++ b/docs/reference/camel/tmpl/camel-unused.sgml @@ -8432,6 +8432,12 @@ streams @pid: @Returns: + + + + + + @@ -8440,6 +8446,48 @@ streams @sasl: @Returns: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.7.4