aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/pop3/camel-pop3-provider.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/providers/pop3/camel-pop3-provider.c')
-rw-r--r--camel/providers/pop3/camel-pop3-provider.c60
1 files changed, 46 insertions, 14 deletions
diff --git a/camel/providers/pop3/camel-pop3-provider.c b/camel/providers/pop3/camel-pop3-provider.c
index af5e530818..1cfecde700 100644
--- a/camel/providers/pop3/camel-pop3-provider.c
+++ b/camel/providers/pop3/camel-pop3-provider.c
@@ -43,9 +43,7 @@ static CamelProvider pop3_provider = {
CAMEL_URL_NEED_USER | CAMEL_URL_NEED_HOST | CAMEL_URL_ALLOW_AUTH,
- { 0, 0 },
-
- NULL
+ /* ... */
};
#if defined (HAVE_NSS) || defined (HAVE_OPENSSL)
@@ -63,9 +61,40 @@ static CamelProvider spop_provider = {
CAMEL_URL_NEED_USER | CAMEL_URL_NEED_HOST | CAMEL_URL_ALLOW_AUTH,
- { 0, 0 },
+ /* ... */
+};
+#endif
+
+CamelServiceAuthType camel_pop3_password_authtype = {
+ N_("Password"),
+
+ N_("This option will connect to the POP server using a plaintext "
+ "password. This is the only option supported by many POP servers."),
+
+ "",
+ TRUE
+};
+
+CamelServiceAuthType camel_pop3_apop_authtype = {
+ "APOP",
+
+ N_("This option will connect to the POP server using an encrypted "
+ "password via the APOP protocol. This may not work for all users "
+ "even on servers that claim to support it."),
+
+ "+APOP",
+ TRUE
+};
+
+#ifdef HAVE_KRB4
+CamelServiceAuthType camel_pop3_kpop_authtype = {
+ "Kerberos 4 (KPOP)",
+
+ N_("This will connect to the POP server and use Kerberos 4 "
+ "to authenticate to it."),
- NULL
+ "+KPOP",
+ FALSE
};
#endif
@@ -74,19 +103,22 @@ camel_provider_module_init (CamelSession *session)
{
pop3_provider.object_types[CAMEL_PROVIDER_STORE] =
camel_pop3_store_get_type ();
-#if defined (HAVE_NSS) || defined (HAVE_OPENSSL)
- spop_provider.object_types[CAMEL_PROVIDER_STORE] =
- camel_pop3_store_get_type ();
-#endif
-
pop3_provider.service_cache = g_hash_table_new (camel_url_hash, camel_url_equal);
-
-#if defined (HAVE_NSS) || defined (HAVE_OPENSSL)
- spop_provider.service_cache = g_hash_table_new (camel_url_hash, camel_url_equal);
+
+#ifdef HAVE_KRB4
+ pop3_provider.authtypes = g_list_prepend (camel_remote_store_authtype_list (), &camel_pop3_kpop_authtype);
#endif
-
+ pop3_provider.authtypes = g_list_prepend (pop3_provider.authtypes, &camel_pop3_apop_authtype);
+ pop3_provider.authtypes = g_list_prepend (pop3_provider.authtypes, &camel_pop3_password_authtype);
+
camel_session_register_provider (session, &pop3_provider);
+
#if defined (HAVE_NSS) || defined (HAVE_OPENSSL)
+ spop_provider.object_types[CAMEL_PROVIDER_STORE] =
+ camel_pop3_store_get_type ();
+ spop_provider.service_cache = g_hash_table_new (camel_url_hash, camel_url_equal);
+ spop_provider.authtypes = g_list_copy (pop3_provider.authtypes);
+
camel_session_register_provider (session, &spop_provider);
#endif
}