/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2013 Hiroyuki Yamamoto and the Claws Mail team
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 1999-2015 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
*/
#ifdef HAVE_CONFIG_H
#include "smtp.h"
#include "imap.h"
#include "remotefolder.h"
-#include "base64.h"
#include "combobox.h"
#include "setup.h"
#include "quote_fmt.h"
GtkWidget *entry_out_cert_file;
GtkWidget *entry_out_cert_pass;
+ GtkWidget *ssl_certs_auto_accept_checkbtn;
GtkWidget *use_nonblocking_ssl_checkbtn;
} SSLPage;
prefs_account_enum_set_data_from_radiobtn,
prefs_account_enum_set_radiobtn},
+ {"ssl_certs_auto_accept", "0", &tmp_ac_prefs.ssl_certs_auto_accept, P_BOOL,
+ &ssl_page.ssl_certs_auto_accept_checkbtn,
+ prefs_set_data_from_toggle, prefs_set_toggle},
+
{"use_nonblocking_ssl", "1", &tmp_ac_prefs.use_nonblocking_ssl, P_BOOL,
&ssl_page.use_nonblocking_ssl_checkbtn,
prefs_set_data_from_toggle, prefs_set_toggle},
{"out_ssl_client_cert_pass", "", &tmp_ac_prefs.out_ssl_client_cert_pass, P_PASSWORD,
NULL, NULL, NULL},
+ {"ssl_certs_auto_accept", "0", &tmp_ac_prefs.ssl_certs_auto_accept, P_BOOL,
+ NULL, NULL, NULL},
+
{"use_nonblocking_ssl", "1", &tmp_ac_prefs.use_nonblocking_ssl, P_BOOL,
NULL, NULL, NULL},
#endif /* USE_GNUTLS */
COMBOBOX_ADD (menu, "ANONYMOUS", IMAP_AUTH_ANON);
COMBOBOX_ADD (menu, "GSSAPI", IMAP_AUTH_GSSAPI);
COMBOBOX_ADD (menu, "DIGEST-MD5", IMAP_AUTH_DIGEST_MD5);
+ COMBOBOX_ADD (menu, "SCRAM-SHA-1", IMAP_AUTH_SCRAM_SHA1);
hbox1 = gtk_hbox_new (FALSE, 8);
gtk_widget_show (hbox1);
GtkWidget *entry_out_cert_pass;
GtkWidget *vbox7;
+ GtkWidget *ssl_certs_auto_accept_checkbtn;
GtkWidget *use_nonblocking_ssl_checkbtn;
GtkWidget *hbox;
GtkWidget *hbox_spc;
gtk_widget_show (vbox7);
gtk_box_pack_start (GTK_BOX (vbox1), vbox7, FALSE, FALSE, 0);
+ PACK_CHECK_BUTTON(vbox7, ssl_certs_auto_accept_checkbtn,
+ _("Automatically accept valid SSL certificates"));
+
PACK_CHECK_BUTTON(vbox7, use_nonblocking_ssl_checkbtn,
_("Use non-blocking SSL"));
page->entry_out_cert_file = entry_out_cert_file;
page->entry_out_cert_pass = entry_out_cert_pass;
+ page->ssl_certs_auto_accept_checkbtn = ssl_certs_auto_accept_checkbtn;
page->use_nonblocking_ssl_checkbtn = use_nonblocking_ssl_checkbtn;
tmp_ac_prefs = *ac_prefs;
gchar *rcpath;
gint id;
gchar **strv, **cur;
+ gsize len;
cm_return_if_fail(ac_prefs != NULL);
cm_return_if_fail(label != NULL);
if (privacy_prefs != NULL) {
strv = g_strsplit(privacy_prefs, ",", 0);
for (cur = strv; *cur != NULL; cur++) {
- gchar *encvalue, *value;
+ gchar *encvalue, *tmp;
encvalue = strchr(*cur, '=');
if (encvalue == NULL)
encvalue[0] = '\0';
encvalue++;
- value = g_malloc0(strlen(encvalue));
- if (base64_decode(value, encvalue, strlen(encvalue)) > 0)
- g_hash_table_insert(ac_prefs->privacy_prefs, g_strdup(*cur), g_strdup(value));
- g_free(value);
+ tmp = g_base64_decode_zero(encvalue, &len);
+ if (len > 0)
+ g_hash_table_insert(ac_prefs->privacy_prefs, g_strdup(*cur), tmp);
+ else
+ g_free(tmp);
}
g_strfreev(strv);
g_free(privacy_prefs);
if (str->len > 0)
g_string_append_c(str, ',');
- encvalue = g_malloc0(B64LEN(strlen(value)) + 1);
- base64_encode(encvalue, (gchar *) value, strlen(value));
+ encvalue = g_base64_encode(value, strlen(value));
g_string_append_printf(str, "%s=%s", (gchar *) key, encvalue);
g_free(encvalue);
}
static void auto_configure_cb (GtkWidget *widget, gpointer data)
{
gchar *address = NULL;
- const gchar *domain = NULL;
AutoConfigureData *recv_data;
AutoConfigureData *send_data;
static GCancellable *recv_cancel = NULL;
address = gtk_editable_get_chars(GTK_EDITABLE(basic_page.addr_entry), 0, -1);
- if (strchr(address, '@') < 0) {
+ if (strchr(address, '@') == NULL) {
g_free(address);
gtk_label_set_text(GTK_LABEL(basic_page.auto_configure_lbl),
_("Failed (wrong address)"));
+ return;
}
- domain = strchr(address, '@') + 1;
if (protocol == A_POP3 || protocol == A_IMAP4) {
recv_data = g_new0(AutoConfigureData, 1);
case A_POP3:
recv_data->ssl_service = "pop3s";
recv_data->tls_service = "pop3";
- recv_data->domain = g_strdup(domain);
+ recv_data->address = g_strdup(address);
recv_data->hostname_entry = GTK_ENTRY(basic_page.recvserv_entry);
recv_data->set_port = GTK_TOGGLE_BUTTON(advanced_page.popport_checkbtn);
recv_data->port = GTK_SPIN_BUTTON(advanced_page.popport_spinbtn);
recv_data->ssl_checkbtn = GTK_TOGGLE_BUTTON(ssl_page.pop_ssltunnel_radiobtn);
recv_data->default_port = 110;
recv_data->default_ssl_port = 995;
+ recv_data->uid_entry = GTK_ENTRY(basic_page.uid_entry);
break;
case A_IMAP4:
recv_data->ssl_service = "imaps";
recv_data->tls_service = "imap";
- recv_data->domain = g_strdup(domain);
+ recv_data->address = g_strdup(address);
recv_data->hostname_entry = GTK_ENTRY(basic_page.recvserv_entry);
recv_data->set_port = GTK_TOGGLE_BUTTON(advanced_page.imapport_checkbtn);
recv_data->port = GTK_SPIN_BUTTON(advanced_page.imapport_spinbtn);
recv_data->ssl_checkbtn = GTK_TOGGLE_BUTTON(ssl_page.imap_ssltunnel_radiobtn);
recv_data->default_port = 143;
recv_data->default_ssl_port = 993;
+ recv_data->uid_entry = GTK_ENTRY(basic_page.uid_entry);
break;
default:
cm_return_if_fail(FALSE);
send_data->ssl_service = NULL;
send_data->tls_service = "submission";
- send_data->domain = g_strdup(domain);
+ send_data->address = g_strdup(address);
send_data->hostname_entry = GTK_ENTRY(basic_page.smtpserv_entry);
send_data->set_port = GTK_TOGGLE_BUTTON(advanced_page.smtpport_checkbtn);
send_data->port = GTK_SPIN_BUTTON(advanced_page.smtpport_spinbtn);
send_data->ssl_checkbtn = NULL;
send_data->default_port = 25;
send_data->default_ssl_port = -1;
+ send_data->uid_entry = NULL;
send_data->auth_checkbtn = GTK_TOGGLE_BUTTON(send_page.smtp_auth_checkbtn);
auto_configure_service(send_data);