You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/mail-client/claws-mail-vcalendar/files/claws-mail-vcalendar-2.0.13...

151 lines
4.9 KiB

In some instances, it might be the case that the only possible way to access a
calendaring service is through https, and in such cases, the only way to
authenticate (at least within the confines of vCalendar) is by embedding the
username:password into the ics URL and/or have a 'private' url that shouldn't
be shared.
In either case, after configuring a calendar and trying to access it, the full
url is displayed in the status tray when trying to poll the calendar, something
like:
Fetching 'https://user:password@server.example.com/location/of/my/Calendar'...
Thus, use of the vCalendar plugin really isn't suitable or secure for such
configurations! In the scenarios above, the former is more of a concern but
neither is one you'd necessarily want to expose to prying eyes. Even a google
calendar "private url", for example, is visible it its entirety within the
status tray.
SOLUTION:
Simply display the name that user has given to the calendar subscription in the
tray instead. Instead of what is currently displayed, just display something
like
Fetching 'My Enterprisey Collaboration Suite Calendar..."
Fetching 'Google Calendar'...
Upstream bug report: http://www.thewildbeast.co.uk/claws-mail/bugzilla/show_bug.cgi?id=2782
Gentoo bug report: https://bugs.gentoo.org/show_bug.cgi?id=443500
--- src/vcal_folder.c 11 Jul 2012 22:01:23 -0000 1.2.2.120
+++ src/vcal_folder.c 16 Nov 2012 09:03:33 -0000 1.2.2.121
@@ -1609,7 +1609,7 @@
return GINT_TO_POINTER(0);
}
-gchar *vcal_curl_read(const char *url, gboolean verbose,
+gchar *vcal_curl_read(const char *url, const gchar *label, gboolean verbose,
void (*callback)(const gchar *url, gchar *data, gboolean verbose, gchar *error))
{
gchar *result;
@@ -1618,25 +1618,19 @@
pthread_t pt;
pthread_attr_t pta;
#endif
- gchar *msg;
void *res;
gboolean killed;
gchar *error = NULL;
result = NULL;
td = g_new0(thread_data, 1);
- msg = NULL;
res = NULL;
killed = FALSE;
-
+
td->url = url;
td->result = NULL;
td->done = FALSE;
-
- msg = g_strdup_printf(_("Fetching '%s'..."), url);
-
- STATUSBAR_PUSH(mainwindow_get_mainwindow(), msg);
-
- g_free(msg);
+
+ STATUSBAR_PUSH(mainwindow_get_mainwindow(), label);
#ifdef USE_PTHREAD
if (pthread_attr_init(&pta) != 0 ||
@@ -1868,7 +1862,8 @@
static void update_subscription(const gchar *uri, gboolean verbose)
{
FolderItem *item = get_folder_item_for_uri(uri);
-
+ gchar *label;
+
if (prefs_common_get_prefs()->work_offline) {
if (!verbose ||
!inc_offline_should_override(TRUE,
@@ -1882,7 +1877,11 @@
return;
}
main_window_cursor_wait(mainwindow_get_mainwindow());
- vcal_curl_read(uri, verbose, update_subscription_finish);
+
+ label = g_strdup_printf(_("Fetching calendar for %s..."),
+ item && item->name ? item->name : _("new subscription"));
+ vcal_curl_read(uri, label, verbose, update_subscription_finish);
+ g_free(label);
}
static void check_subs_cb(GtkAction *action, gpointer data)
Index: src/vcal_folder.h
===================================================================
RCS file: //plugins/vcalendar/src/vcal_folder.h,v
retrieving revision 1.1.2.15
retrieving revision 1.1.2.16
diff -u -B -u -r1.1.2.15 -r1.1.2.16
--- src/vcal_folder.h 6 Nov 2011 12:06:21 -0000 1.1.2.15
+++ src/vcal_folder.h 16 Nov 2012 09:03:33 -0000 1.1.2.16
@@ -36,7 +36,7 @@
void vcal_folder_export(Folder *folder);
gboolean vcal_curl_put(gchar *url, FILE *fp, gint filesize, const gchar *user, const gchar *pass);
-gchar *vcal_curl_read(const char *url, gboolean verbose,
+gchar *vcal_curl_read(const char *url, const gchar *label, gboolean verbose,
void (*callback)(const gchar *url, gchar *data, gboolean verbose, gchar
*error));
gchar* get_item_event_list_for_date(FolderItem *item, EventTime date);
Index: src/vcal_meeting_gtk.c
===================================================================
RCS file: //plugins/vcalendar/src/vcal_meeting_gtk.c,v
retrieving revision 1.1.2.95
retrieving revision 1.1.2.96
diff -u -B -u -r1.1.2.95 -r1.1.2.96
--- src/vcal_meeting_gtk.c 30 Oct 2011 10:12:54 -0000 1.1.2.95
+++ src/vcal_meeting_gtk.c 16 Nov 2012 09:03:33 -0000 1.1.2.96
@@ -1085,7 +1085,7 @@
if (!local_only) {
remail = g_strdup(email);
- g_free(email);
+
extract_address(remail);
if (strrchr(remail, ' '))
user = g_strdup(strrchr(remail, ' ')+1);
@@ -1125,17 +1125,22 @@
&& strncmp(tmp, "ftp://", 6))
contents = file_read_to_str(tmp);
else {
+ gchar *label = g_strdup_printf(_("Fetching planning for %s..."), email);
if (!strncmp(tmp, "webcal://", 9)) {
gchar *tmp2 = g_strdup_printf("http://%s", tmp+9);
g_free(tmp);
tmp = tmp2;
}
- contents = vcal_curl_read(tmp, FALSE, NULL);
+ contents = vcal_curl_read(tmp, label, FALSE, NULL);
+ g_free(label);
}
} else {
contents = NULL;
}
+
+ g_free(email);
g_free(tmp);
+
if (contents == NULL) {
uncertain = TRUE;
att_update_icon(meet, attendee, 2, _("Free/busy retrieval failed"));