diff options
author | Milan Crha <mcrha@redhat.com> | 2012-04-23 18:42:50 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2012-04-23 18:44:02 +0800 |
commit | 12256b4f1cc7def560824ed5fb3c506669709a32 (patch) | |
tree | 021273e6eca80507c281e4c32809a00387358dd1 /plugins/caldav | |
parent | a99526ed9cc1735412722de9494ee234536056f3 (diff) | |
download | gsoc2013-evolution-12256b4f1cc7def560824ed5fb3c506669709a32.tar.gz gsoc2013-evolution-12256b4f1cc7def560824ed5fb3c506669709a32.tar.zst gsoc2013-evolution-12256b4f1cc7def560824ed5fb3c506669709a32.zip |
Bug #671537 - Option to validate SSL certificates with libsoup
Diffstat (limited to 'plugins/caldav')
-rw-r--r-- | plugins/caldav/caldav-browse-server.c | 20 | ||||
-rw-r--r-- | plugins/caldav/caldav-browse-server.h | 9 | ||||
-rw-r--r-- | plugins/caldav/caldav-source.c | 15 |
3 files changed, 38 insertions, 6 deletions
diff --git a/plugins/caldav/caldav-browse-server.c b/plugins/caldav/caldav-browse-server.c index 789396e91a..8ff459cf1c 100644 --- a/plugins/caldav/caldav-browse-server.c +++ b/plugins/caldav/caldav-browse-server.c @@ -1279,7 +1279,8 @@ init_dialog (GtkDialog *dialog, const gchar *username, const gchar *usermail, gboolean autoschedule, - gint source_type) + gint source_type, + gboolean ignore_invalid_cert) { GtkBox *content_area; GtkWidget *label, *info_box, *spinner, *info_label, *hbox; @@ -1413,7 +1414,10 @@ init_dialog (GtkDialog *dialog, gtk_widget_hide (*new_url_entry); gtk_widget_hide (spinner); - session = soup_session_sync_new (); + session = soup_session_sync_new_with_options ( + SOUP_SESSION_SSL_USE_SYSTEM_CA_FILE, !ignore_invalid_cert, + NULL); + if (g_getenv ("CALDAV_DEBUG") != NULL) { SoupLogger *logger; @@ -1581,6 +1585,7 @@ caldav_browse_server (GtkWindow *parent, const gchar *server_url, const gchar *username, gboolean use_ssl, + gboolean ignore_invalid_cert, gchar **new_usermail, gboolean *new_autoschedule, gint source_type) @@ -1616,7 +1621,16 @@ caldav_browse_server (GtkWindow *parent, new_url_entry = NULL; new_usermail_combo = NULL; new_autoschedule_check = NULL; - init_dialog (GTK_DIALOG (dialog), &new_url_entry, &new_usermail_combo, &new_autoschedule_check, url, username, new_usermail ? *new_usermail : NULL, new_autoschedule ? *new_autoschedule : FALSE, source_type); + init_dialog (GTK_DIALOG (dialog), + &new_url_entry, + &new_usermail_combo, + &new_autoschedule_check, + url, + username, + new_usermail ? *new_usermail : NULL, + new_autoschedule ? *new_autoschedule : FALSE, + source_type, + ignore_invalid_cert); if (new_url_entry && gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { const gchar *txt; diff --git a/plugins/caldav/caldav-browse-server.h b/plugins/caldav/caldav-browse-server.h index 6a275f1726..8f37603838 100644 --- a/plugins/caldav/caldav-browse-server.h +++ b/plugins/caldav/caldav-browse-server.h @@ -26,6 +26,13 @@ /* Opens a window with a list of available calendars for a given server; * Returns server URL of a calendar user chose, or NULL to let it be as is. */ -gchar *caldav_browse_server (GtkWindow *parent, const gchar *server_url, const gchar *username, gboolean use_ssl, gchar **new_usermail, gboolean *new_autoschedule, gint source_type); +gchar * caldav_browse_server (GtkWindow *parent, + const gchar *server_url, + const gchar *username, + gboolean use_ssl, + gboolean ignore_invalid_cert, + gchar **new_usermail, + gboolean *new_autoschedule, + gint source_type); #endif /* CALDAV_BROWSE_SERVER_H */ diff --git a/plugins/caldav/caldav-source.c b/plugins/caldav/caldav-source.c index b56b4b2c5f..130d0fa834 100644 --- a/plugins/caldav/caldav-source.c +++ b/plugins/caldav/caldav-source.c @@ -153,7 +153,7 @@ browse_cal_clicked_cb (GtkButton *button, gpointer user_data) { GtkEntry *url, *username, *usermail; - GtkToggleButton *ssl, *autoschedule; + GtkToggleButton *ssl, *ignore_cert, *autoschedule; gchar *new_url, *new_usermail; gboolean new_autoschedule; @@ -161,6 +161,7 @@ browse_cal_clicked_cb (GtkButton *button, url = g_object_get_data (G_OBJECT (button), "caldav-url"); ssl = g_object_get_data (G_OBJECT (button), "caldav-ssl"); + ignore_cert = g_object_get_data (G_OBJECT (button), "caldav-ignore-cert"); username = g_object_get_data (G_OBJECT (button), "caldav-username"); usermail = g_object_get_data (G_OBJECT (button), "caldav-usermail"); autoschedule = g_object_get_data (G_OBJECT (button), "caldav-autoschedule"); @@ -169,6 +170,8 @@ browse_cal_clicked_cb (GtkButton *button, g_return_if_fail (GTK_IS_ENTRY (url)); g_return_if_fail (ssl != NULL); g_return_if_fail (GTK_IS_TOGGLE_BUTTON (ssl)); + g_return_if_fail (ignore_cert != NULL); + g_return_if_fail (GTK_IS_TOGGLE_BUTTON (ignore_cert)); g_return_if_fail (username != NULL); g_return_if_fail (GTK_IS_ENTRY (username)); g_return_if_fail (usermail != NULL); @@ -184,6 +187,7 @@ browse_cal_clicked_cb (GtkButton *button, gtk_entry_get_text (url), gtk_entry_get_text (username), gtk_toggle_button_get_active (ssl), + gtk_toggle_button_get_active (ignore_cert), &new_usermail, &new_autoschedule, GPOINTER_TO_INT (user_data)); @@ -208,7 +212,7 @@ oge_caldav (EPlugin *epl, ECalConfigTargetSource *t = (ECalConfigTargetSource *) data->target; ESource *source; SoupURI *suri; - GtkWidget *parent, *location, *ssl, *user, *mail, *autoschedule, *browse_cal; + GtkWidget *parent, *location, *ssl, *ignore_cert, *user, *mail, *autoschedule, *browse_cal; gchar *uri, *username; guint n_rows; @@ -246,6 +250,12 @@ oge_caldav (EPlugin *epl, G_CALLBACK (location_changed_cb), source); ssl = e_plugin_util_add_check (parent, _("Use _secure connection"), source, "ssl", "1", "0"); + ignore_cert = e_plugin_util_add_check (parent, _("_Ignore invalid SSL certificate"), source, "ignore-invalid-cert", "1", NULL); + + g_object_bind_property ( + ssl, "active", + ignore_cert, "sensitive", + G_BINDING_SYNC_CREATE); user = e_plugin_util_add_entry (parent, _("User_name:"), NULL, NULL); gtk_entry_set_text (GTK_ENTRY (user), username ? username : ""); @@ -271,6 +281,7 @@ oge_caldav (EPlugin *epl, g_object_set_data (G_OBJECT (browse_cal), "caldav-url", location); g_object_set_data (G_OBJECT (browse_cal), "caldav-ssl", ssl); + g_object_set_data (G_OBJECT (browse_cal), "caldav-ignore-cert", ignore_cert); g_object_set_data (G_OBJECT (browse_cal), "caldav-username", user); g_object_set_data (G_OBJECT (browse_cal), "caldav-usermail", mail); g_object_set_data (G_OBJECT (browse_cal), "caldav-autoschedule", autoschedule); |