* and modest_serversecurity_combo_box_set_active_serversecurity().
*/
if (!self->combo_outgoing_security)
+
self->combo_outgoing_security = GTK_WIDGET (modest_serversecurity_combo_box_new ());
caption = hildon_caption_new (sizegroup, _("mcen_li_emailsetup_secure_connection"),
self->combo_outgoing_security, NULL, HILDON_CAPTION_OPTIONAL);
if (name_in_use) {
/* Warn the user via a dialog: */
- show_error (GTK_WINDOW (self), _("mail_ib_account_name_already_existing"));
+ hildon_banner_show_information(NULL, NULL, _("mail_ib_account_name_already_existing"));
return FALSE;
}
if ((!email_address) || (strlen(email_address) == 0))
return FALSE;
- if (!modest_text_utils_validate_email_address (email_address)) {
+ if (!modest_text_utils_validate_email_address (email_address, NULL)) {
/* Warn the user via a dialog: */
- show_error (GTK_WINDOW (self), _("mcen_ib_invalid_email"));
+ /*show_error (GTK_WINDOW (self), _("mcen_ib_invalid_email"));*/
+ hildon_banner_show_information (NULL, NULL, _("mcen_ib_invalid_email"));
- /* Return focus to the email address entry: */
- gtk_widget_grab_focus (self->entry_user_email);
-
+ /* Return focus to the email address entry: */
+ gtk_widget_grab_focus (self->entry_user_email);
+ gtk_editable_select_region (GTK_EDITABLE (self->entry_user_email), 0, -1);
return FALSE;
}
+
+ /* Find a suitable authentication method when secure authentication is desired */
+ const gchar* hostname = gtk_entry_get_text (GTK_ENTRY (self->entry_incomingserver));
+ gint port_num = hildon_number_editor_get_value (
+ HILDON_NUMBER_EDITOR (self->entry_incoming_port));
+ const gchar* username = gtk_entry_get_text (GTK_ENTRY (self->entry_user_username));
+
+ const ModestConnectionProtocol protocol_security_incoming = modest_serversecurity_combo_box_get_active_serversecurity (
+ MODEST_SERVERSECURITY_COMBO_BOX (self->combo_incoming_security));
+
+ /* If we use an encrypted protocol then there is no need to encrypt the password */
+ if (!modest_protocol_info_is_secure(protocol_security_incoming))
+ {
+ if (gtk_toggle_button_get_active (
+ GTK_TOGGLE_BUTTON (self->checkbox_incoming_auth))) {
+ GError *error = NULL;
+ GList *list_auth_methods =
+ modest_maemo_utils_get_supported_secure_authentication_methods (self->incoming_protocol,
+ hostname, port_num, username, GTK_WINDOW (self), &error);
+ if (list_auth_methods) {
+ /* Use the first supported method.
+ * TODO: Should we prioritize them, to prefer a particular one? */
+ GList* method;
+ for (method = list_auth_methods; method != NULL; method = g_list_next(method))
+ {
+ ModestAuthProtocol proto = (ModestAuthProtocol)(GPOINTER_TO_INT(list_auth_methods->data));
+ // Allow secure methods, e.g MD5 only
+ if (modest_protocol_info_auth_is_secure(proto))
+ {
+ self->protocol_authentication_incoming = proto;
+ break;
+ }
+ }
+ g_list_free (list_auth_methods);
+ }
+
+ if (list_auth_methods == NULL ||
+ !modest_protocol_info_auth_is_secure(self->protocol_authentication_incoming))
+ {
+ if(error == NULL || error->domain != modest_maemo_utils_get_supported_secure_authentication_error_quark() ||
+ error->code != MODEST_MAEMO_UTILS_GET_SUPPORTED_SECURE_AUTHENTICATION_ERROR_CANCELED)
+ {
+ GtkWidget* error_dialog = gtk_message_dialog_new(GTK_WINDOW(self),
+ GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK, (error != NULL) ? error->message : _("Server does not support secure authentication!"));
+ gtk_dialog_run(GTK_DIALOG(error_dialog));
+ gtk_widget_destroy(error_dialog);
+ }
+
+ if(error != NULL) g_error_free(error);
+ /* This is a nasty hack. jschmid. */
+ /* Don't let the dialog close */
+ /*g_signal_stop_emission_by_name (dialog, "response");*/
+ return FALSE;
+ }
+ }
+ }
/* TODO: The UI Spec wants us to check that the servernames are valid,
* but does not specify how.
if (prevent_response) {
/* This is a nasty hack. murrayc. */
/* Don't let the dialog close */
- g_signal_stop_emission_by_name (wizard_dialog, "response");
+ g_signal_stop_emission_by_name (wizard_dialog, "response");
return;
}
{
const gboolean saved = save_configuration (self);
if (saved) {
- /* Do not show the account-saved dialog if we are just saving this
- * temporarily, because from the user's point of view it will not
- * really be saved (saved + enabled) until later.
- */
- const gboolean enabled =
- modest_account_mgr_get_enabled (self->account_manager, self->account_name);
- if (enabled)
- show_ok (GTK_WINDOW (self), _("mcen_ib_advsetup_settings_saved"));
+ /* Do not show the account-saved dialog if we are just saving this
+ * temporarily, because from the user's point of view it will not
+ * really be saved (saved + enabled) until later.
+ */
+ const gboolean enabled =
+ modest_account_mgr_get_enabled (self->account_manager, self->account_name);
+ if (enabled)
+ show_ok (GTK_WINDOW (self), _("mcen_ib_advsetup_settings_saved"));
}
else
show_error (GTK_WINDOW (self), _("mail_ib_setting_failed"));
g_assert (self->account_manager);
g_object_ref (self->account_manager);
+ self->protocol_authentication_incoming = MODEST_PROTOCOL_AUTH_PASSWORD;
+
/* Create the common pages,
*/
self->page_account_details = create_page_account_details (self);
} else {
gtk_widget_show (dialog->caption_leave_messages);
}
-
+
+ update_incoming_server_security_choices (dialog, incoming_account->proto);
if (incoming_account) {
/* Remember this for later: */
dialog->incoming_protocol = incoming_account->proto;
* If secure authentication is unchecked, allow sending username and password also as plain text.
* If secure authentication is checked, require one of the secure methods during connection: SSL, TLS, CRAM-MD5 etc.
* TODO: Do we need to discover which of these (SSL, TLS, CRAM-MD5) is supported?
- */
- /* Is AUTH_PASSWORD a secure method? We accept AUTH_PASSWORD while
- saving so we should accept it here, too */
- const ModestAuthProtocol secure_auth = modest_server_account_get_secure_auth(
- dialog->account_manager, incoming_account->account_name);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (dialog->checkbox_incoming_auth),
- secure_auth != MODEST_PROTOCOL_AUTH_PASSWORD);
- /* Note that MODEST_PROTOCOL_AUTH_PLAIN should probably never be used. */
-
- update_incoming_server_title (dialog, incoming_account->proto);
- update_incoming_server_security_choices (dialog, incoming_account->proto);
-
+ */
const ModestConnectionProtocol security = modest_server_account_get_security (
dialog->account_manager, incoming_account->account_name);
modest_serversecurity_combo_box_set_active_serversecurity (
MODEST_SERVERSECURITY_COMBO_BOX (dialog->combo_incoming_security), security);
+ /* Check if we have
+ - a secure protocol
+ OR
+ - use encrypted passwords
+ */
+ const ModestAuthProtocol secure_auth = modest_server_account_get_secure_auth(
+ dialog->account_manager, incoming_account->account_name);
+ dialog->protocol_authentication_incoming = secure_auth;
+ if (modest_protocol_info_is_secure(security) ||
+ modest_protocol_info_auth_is_secure(secure_auth))
+ {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (dialog->checkbox_incoming_auth),
+ TRUE);
+ }
+ else
+ {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (dialog->checkbox_incoming_auth),
+ FALSE);
+ };
+
+ update_incoming_server_title (dialog, incoming_account->proto);
+
const gint port_num = modest_account_mgr_get_int (dialog->account_manager, incoming_account->account_name,
MODEST_ACCOUNT_PORT, TRUE /* server account */);
* If secure authentication is unchecked, allow sending username and password also as plain text.
* If secure authentication is checked, require one of the secure methods during connection: SSL, TLS, CRAM-MD5 etc.
*/
- ModestAuthProtocol protocol_authentication_incoming =
- MODEST_PROTOCOL_AUTH_PASSWORD;
- if (gtk_toggle_button_get_active (
- GTK_TOGGLE_BUTTON (dialog->checkbox_incoming_auth))) {
- GList *list_auth_methods =
- modest_maemo_utils_get_supported_secure_authentication_methods (dialog->incoming_protocol,
- hostname, port_num, GTK_WINDOW (dialog));
- if (list_auth_methods) {
- /* Use the first supported method.
- * TODO: Should we prioritize them, to prefer a particular one? */
- protocol_authentication_incoming =
- (ModestAuthProtocol)(GPOINTER_TO_INT(list_auth_methods->data));
- g_list_free (list_auth_methods);
- }
- else
- {
- GtkWidget* error_dialog = gtk_message_dialog_new(GTK_WINDOW(dialog),
- GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK, _("Server does not support secure authentication!"));
- gtk_dialog_run(GTK_DIALOG(error_dialog));
- gtk_widget_destroy(error_dialog);
- /* This is a nasty hack. jschmid. */
- /* Don't let the dialog close */
- g_signal_stop_emission_by_name (dialog, "response");
- return FALSE;
- }
-
- }
-
- modest_server_account_set_secure_auth (dialog->account_manager, incoming_account_name, protocol_authentication_incoming);
-
const ModestConnectionProtocol protocol_security_incoming = modest_serversecurity_combo_box_get_active_serversecurity (
MODEST_SERVERSECURITY_COMBO_BOX (dialog->combo_incoming_security));
modest_server_account_set_security (dialog->account_manager, incoming_account_name, protocol_security_incoming);
+ modest_server_account_set_secure_auth (dialog->account_manager, incoming_account_name, dialog->protocol_authentication_incoming);
g_free (incoming_account_name);
hildon_banner_show_information(GTK_WIDGET(
gtk_widget_get_parent_window(GTK_WIDGET(parent_window))), NULL, text);
}
-
-
-
-