Mercurial > pidgin
annotate libpurple/protocols/jabber/libxmpp.c @ 30362:879baaf87aa2
Added an error handler for family_icq.c. So far it works for
icq fullinfo and alias requests.
This was originally motivated by me getting "Server rate limit exceeded"
while testing authorization requests. This error completely prevented
the authorization request dialog from showing up.
author | ivan.komarov@soc.pidgin.im |
---|---|
date | Sun, 30 May 2010 19:01:30 +0000 |
parents | 2a436e0ce977 |
children | 8084631e2e84 |
rev | line source |
---|---|
16241 | 1 /* purple |
2 * | |
3 * Purple is the legal property of its developers, whose names are too numerous | |
4 * to list here. Please refer to the COPYRIGHT file distributed with this | |
5 * source distribution. | |
6 * | |
7 * This program is free software; you can redistribute it and/or modify | |
8 * it under the terms of the GNU General Public License as published by | |
9 * the Free Software Foundation; either version 2 of the License, or | |
10 * (at your option) any later version. | |
11 * | |
12 * This program is distributed in the hope that it will be useful, | |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 * GNU General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU General Public License | |
18 * along with this program; if not, write to the Free Software | |
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18210
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
16241 | 20 * |
21 */ | |
22 | |
23 /* libxmpp is the XMPP protocol plugin. It is linked against libjabbercommon, | |
24 * which may be used to support other protocols (Bonjour) which may need to | |
25 * share code. | |
26 */ | |
27 | |
18210
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18106
diff
changeset
|
28 #include "internal.h" |
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18106
diff
changeset
|
29 |
16241 | 30 #include "accountopt.h" |
27860
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
31 #include "core.h" |
19998
7baa2bc64226
Cleanup the SASL init and add error checking.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19697
diff
changeset
|
32 #include "debug.h" |
16241 | 33 #include "version.h" |
34 | |
35 #include "iq.h" | |
36 #include "jabber.h" | |
37 #include "chat.h" | |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25952
diff
changeset
|
38 #include "disco.h" |
16241 | 39 #include "message.h" |
40 #include "roster.h" | |
41 #include "si.h" | |
42 #include "message.h" | |
43 #include "presence.h" | |
44 #include "google.h" | |
17839
0370da969e8a
Implemented adding callbacks for PEP events. Moved the feature list to be application-global instead of per-connection (makes more sense).
Andreas Monitzer <pidgin@monitzer.com>
parents:
16962
diff
changeset
|
45 #include "pep.h" |
29463
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29460
diff
changeset
|
46 #include "usermood.h" |
17857
3e437e86bd6e
Implemented user tune, currently untested.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17854
diff
changeset
|
47 #include "usertune.h" |
17882
f88b3a093cba
Implemented ad-hoc commands for the buddy action menu (untested), implemented the receiving end of XEP-0115: Entity Capabilities. Note that this seems not to be reliable right now, since some clients seem to have a very broken [read: completely non-functional] implementation (most notably Gajim and the py-transports).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17866
diff
changeset
|
48 #include "caps.h" |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23110
diff
changeset
|
49 #include "data.h" |
25721
87a206ca018f
Some changes got lost when I merged...
Marcus Lundblad <ml@update.uu.se>
parents:
25720
diff
changeset
|
50 #include "ibb.h" |
16241 | 51 |
27860
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
52 static PurplePlugin *my_protocol = NULL; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
53 |
16241 | 54 static PurplePluginProtocolInfo prpl_info = |
55 { | |
19998
7baa2bc64226
Cleanup the SASL init and add error checking.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19697
diff
changeset
|
56 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME | OPT_PROTO_MAIL_CHECK | |
16241 | 57 #ifdef HAVE_CYRUS_SASL |
19998
7baa2bc64226
Cleanup the SASL init and add error checking.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19697
diff
changeset
|
58 OPT_PROTO_PASSWORD_OPTIONAL | |
7baa2bc64226
Cleanup the SASL init and add error checking.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19697
diff
changeset
|
59 #endif |
18030
62a71bb085ef
Mostly taken from the patch on ticket #410, don't send unknown slash
Stu Tomlinson <stu@nosnilmot.com>
parents:
16962
diff
changeset
|
60 OPT_PROTO_SLASH_COMMANDS_NATIVE, |
16241 | 61 NULL, /* user_splits */ |
62 NULL, /* protocol_options */ | |
21841
d0a3463633ba
Remove size restriction on XMPP avatars
Sean Egan <seanegan@gmail.com>
parents:
21637
diff
changeset
|
63 {"png", 32, 32, 96, 96, 0, PURPLE_ICON_SCALE_SEND | PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */ |
16241 | 64 jabber_list_icon, /* list_icon */ |
65 jabber_list_emblem, /* list_emblems */ | |
66 jabber_status_text, /* status_text */ | |
67 jabber_tooltip_text, /* tooltip_text */ | |
68 jabber_status_types, /* status_types */ | |
69 jabber_blist_node_menu, /* blist_node_menu */ | |
70 jabber_chat_info, /* chat_info */ | |
71 jabber_chat_info_defaults, /* chat_info_defaults */ | |
72 jabber_login, /* login */ | |
73 jabber_close, /* close */ | |
74 jabber_message_send_im, /* send_im */ | |
75 jabber_set_info, /* set_info */ | |
76 jabber_send_typing, /* send_typing */ | |
77 jabber_buddy_get_info, /* get_info */ | |
25147
6d6e10476c52
Clean up jabber_presence_send
Paul Aurich <paul@darkrain42.org>
parents:
25145
diff
changeset
|
78 jabber_set_status, /* set_status */ |
16241 | 79 jabber_idle_set, /* set_idle */ |
80 NULL, /* change_passwd */ | |
81 jabber_roster_add_buddy, /* add_buddy */ | |
82 NULL, /* add_buddies */ | |
83 jabber_roster_remove_buddy, /* remove_buddy */ | |
84 NULL, /* remove_buddies */ | |
85 NULL, /* add_permit */ | |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24556
diff
changeset
|
86 jabber_add_deny, /* add_deny */ |
16241 | 87 NULL, /* rem_permit */ |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24556
diff
changeset
|
88 jabber_rem_deny, /* rem_deny */ |
16241 | 89 NULL, /* set_permit_deny */ |
90 jabber_chat_join, /* join_chat */ | |
91 NULL, /* reject_chat */ | |
92 jabber_get_chat_name, /* get_chat_name */ | |
93 jabber_chat_invite, /* chat_invite */ | |
94 jabber_chat_leave, /* chat_leave */ | |
95 NULL, /* chat_whisper */ | |
96 jabber_message_send_chat, /* chat_send */ | |
97 jabber_keepalive, /* keepalive */ | |
98 jabber_register_account, /* register_user */ | |
23358
da78db9f188f
Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23354
diff
changeset
|
99 NULL, /* get_cb_info */ |
16241 | 100 NULL, /* get_cb_away */ |
101 jabber_roster_alias_change, /* alias_buddy */ | |
102 jabber_roster_group_change, /* group_buddy */ | |
103 jabber_roster_group_rename, /* rename_group */ | |
104 NULL, /* buddy_free */ | |
105 jabber_convo_closed, /* convo_closed */ | |
106 jabber_normalize, /* normalize */ | |
107 jabber_set_buddy_icon, /* set_buddy_icon */ | |
108 NULL, /* remove_group */ | |
109 jabber_chat_buddy_real_name, /* get_cb_real_name */ | |
110 jabber_chat_set_topic, /* set_chat_topic */ | |
111 jabber_find_blist_chat, /* find_blist_chat */ | |
112 jabber_roomlist_get_list, /* roomlist_get_list */ | |
113 jabber_roomlist_cancel, /* roomlist_cancel */ | |
114 NULL, /* roomlist_expand_category */ | |
28534
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
115 jabber_can_receive_file, /* can_receive_file */ |
16241 | 116 jabber_si_xfer_send, /* send_file */ |
117 jabber_si_new_xfer, /* new_xfer */ | |
118 jabber_offline_message, /* offline_message */ | |
119 NULL, /* whiteboard_prpl_ops */ | |
120 jabber_prpl_send_raw, /* send_raw */ | |
121 jabber_roomlist_room_serialize, /* roomlist_room_serialize */ | |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
122 jabber_unregister_account, /* unregister_user */ |
20631
56cec2b6ff98
Uh, these two callbacks were backwards. Methinks somebody didn't test
Mark Doliner <mark@kingant.net>
parents:
20149
diff
changeset
|
123 jabber_send_attention, /* send_attention */ |
56cec2b6ff98
Uh, these two callbacks were backwards. Methinks somebody didn't test
Mark Doliner <mark@kingant.net>
parents:
20149
diff
changeset
|
124 jabber_attention_types, /* attention_types */ |
16667
a338acd14365
And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents:
16241
diff
changeset
|
125 |
23109
718a9c287839
Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
22659
diff
changeset
|
126 sizeof(PurplePluginProtocolInfo), /* struct_size */ |
23807
ff29208e03ef
propagate from branch 'im.pidgin.pidgin' (head 75f0460d3679231b61d572e76fe02534a597c6b5)
Sadrul Habib Chowdhury <imadil@gmail.com>
diff
changeset
|
127 NULL, /* get_account_text_table */ |
23787
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23776
diff
changeset
|
128 jabber_initiate_media, /* initiate_media */ |
26108
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
129 jabber_get_media_caps, /* get_media_caps */ |
29847
2a436e0ce977
Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <paul@darkrain42.org>
parents:
29582
diff
changeset
|
130 jabber_get_moods, /* get_moods */ |
2a436e0ce977
Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <paul@darkrain42.org>
parents:
29582
diff
changeset
|
131 NULL, /* set_public_alias */ |
2a436e0ce977
Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
Paul Aurich <paul@darkrain42.org>
parents:
29582
diff
changeset
|
132 NULL /* get_public_alias */ |
16241 | 133 }; |
134 | |
135 static gboolean load_plugin(PurplePlugin *plugin) | |
136 { | |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
137 jabber_plugin_init(plugin); |
26870
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26836
diff
changeset
|
138 |
16241 | 139 return TRUE; |
140 } | |
141 | |
142 static gboolean unload_plugin(PurplePlugin *plugin) | |
143 { | |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
144 jabber_plugin_uninit(plugin); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
145 |
16241 | 146 return TRUE; |
147 } | |
148 | |
149 static PurplePluginInfo info = | |
150 { | |
151 PURPLE_PLUGIN_MAGIC, | |
152 PURPLE_MAJOR_VERSION, | |
153 PURPLE_MINOR_VERSION, | |
154 PURPLE_PLUGIN_PROTOCOL, /**< type */ | |
155 NULL, /**< ui_requirement */ | |
156 0, /**< flags */ | |
157 NULL, /**< dependencies */ | |
158 PURPLE_PRIORITY_DEFAULT, /**< priority */ | |
159 | |
160 "prpl-jabber", /**< id */ | |
161 "XMPP", /**< name */ | |
21030
3cc856ca2338
Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents:
20631
diff
changeset
|
162 DISPLAY_VERSION, /**< version */ |
16241 | 163 /** summary */ |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16719
diff
changeset
|
164 N_("XMPP Protocol Plugin"), |
16241 | 165 /** description */ |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16719
diff
changeset
|
166 N_("XMPP Protocol Plugin"), |
16241 | 167 NULL, /**< author */ |
168 PURPLE_WEBSITE, /**< homepage */ | |
169 | |
170 load_plugin, /**< load */ | |
171 unload_plugin, /**< unload */ | |
172 NULL, /**< destroy */ | |
173 | |
174 NULL, /**< ui_info */ | |
175 &prpl_info, /**< extra_info */ | |
176 NULL, /**< prefs_info */ | |
16667
a338acd14365
And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents:
16241
diff
changeset
|
177 jabber_actions, |
a338acd14365
And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents:
16241
diff
changeset
|
178 |
a338acd14365
And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents:
16241
diff
changeset
|
179 /* padding */ |
a338acd14365
And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents:
16241
diff
changeset
|
180 NULL, |
a338acd14365
And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents:
16241
diff
changeset
|
181 NULL, |
a338acd14365
And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents:
16241
diff
changeset
|
182 NULL, |
a338acd14365
And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents:
16241
diff
changeset
|
183 NULL |
16241 | 184 }; |
185 | |
27860
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
186 static PurpleAccount *find_acct(const char *prpl, const char *acct_id) |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
187 { |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
188 PurpleAccount *acct = NULL; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
189 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
190 /* If we have a specific acct, use it */ |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
191 if (acct_id) { |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
192 acct = purple_accounts_find(acct_id, prpl); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
193 if (acct && !purple_account_is_connected(acct)) |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
194 acct = NULL; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
195 } else { /* Otherwise find an active account for the protocol */ |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
196 GList *l = purple_accounts_get_all(); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
197 while (l) { |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
198 if (!strcmp(prpl, purple_account_get_protocol_id(l->data)) |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
199 && purple_account_is_connected(l->data)) { |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
200 acct = l->data; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
201 break; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
202 } |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
203 l = l->next; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
204 } |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
205 } |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
206 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
207 return acct; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
208 } |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
209 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
210 static gboolean xmpp_uri_handler(const char *proto, const char *user, GHashTable *params) |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
211 { |
28773
088fac135139
On Windows, treat a 'xmpp:foo@bar.com' URI as opening an IM window.
Paul Aurich <paul@darkrain42.org>
parents:
28534
diff
changeset
|
212 char *acct_id = params ? g_hash_table_lookup(params, "account") : NULL; |
27860
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
213 PurpleAccount *acct; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
214 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
215 if (g_ascii_strcasecmp(proto, "xmpp")) |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
216 return FALSE; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
217 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
218 acct = find_acct(purple_plugin_get_id(my_protocol), acct_id); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
219 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
220 if (!acct) |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
221 return FALSE; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
222 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
223 /* xmpp:romeo@montague.net?message;subject=Test%20Message;body=Here%27s%20a%20test%20message */ |
28773
088fac135139
On Windows, treat a 'xmpp:foo@bar.com' URI as opening an IM window.
Paul Aurich <paul@darkrain42.org>
parents:
28534
diff
changeset
|
224 /* params is NULL if the URI has no '?' (or anything after it) */ |
088fac135139
On Windows, treat a 'xmpp:foo@bar.com' URI as opening an IM window.
Paul Aurich <paul@darkrain42.org>
parents:
28534
diff
changeset
|
225 if (!params || g_hash_table_lookup_extended(params, "message", NULL, NULL)) { |
27860
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
226 char *body = g_hash_table_lookup(params, "body"); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
227 if (user && *user) { |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
228 PurpleConversation *conv = |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
229 purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, user); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
230 purple_conversation_present(conv); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
231 if (body && *body) |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
232 purple_conv_send_confirm(conv, body); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
233 } |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
234 } else if (g_hash_table_lookup_extended(params, "roster", NULL, NULL)) { |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
235 char *name = g_hash_table_lookup(params, "name"); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
236 if (user && *user) |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
237 purple_blist_request_add_buddy(acct, user, NULL, name); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
238 } else if (g_hash_table_lookup_extended(params, "join", NULL, NULL)) { |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
239 PurpleConnection *gc = purple_account_get_connection(acct); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
240 if (user && *user) { |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
241 GHashTable *params = jabber_chat_info_defaults(gc, user); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
242 jabber_chat_join(gc, params); |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
243 } |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
244 return TRUE; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
245 } |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
246 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
247 return FALSE; |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
248 } |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
249 |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
250 |
16241 | 251 static void |
252 init_plugin(PurplePlugin *plugin) | |
253 { | |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
254 PurpleAccountUserSplit *split; |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
255 PurpleAccountOption *option; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
256 |
16952
919515748253
Handle people forgetting to enter a domain. Also, change 'server,' in the account options to 'domain,' which is its proper name, and hopefully less confusion
Sean Egan <seanegan@gmail.com>
parents:
16951
diff
changeset
|
257 /* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */ |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
258 split = purple_account_user_split_new(_("Domain"), NULL, '@'); |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
259 purple_account_user_split_set_reverse(split, FALSE); |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
260 prpl_info.user_splits = g_list_append(prpl_info.user_splits, split); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
261 |
29582
782bf663733d
jabber: Fix leaving the Resource blank in Finch, so it isn't '(null)'
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
29559
diff
changeset
|
262 split = purple_account_user_split_new(_("Resource"), "", '/'); |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
263 purple_account_user_split_set_reverse(split, FALSE); |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
264 prpl_info.user_splits = g_list_append(prpl_info.user_splits, split); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
265 |
28515
4fd0baa32a9e
jabber: Fix a few places where the default for require_tls was wrong.
Paul Aurich <paul@darkrain42.org>
parents:
27860
diff
changeset
|
266 option = purple_account_option_bool_new(_("Require SSL/TLS"), "require_tls", JABBER_DEFAULT_REQUIRE_TLS); |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
267 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
268 option); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
269 |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
270 option = purple_account_option_bool_new(_("Force old (port 5223) SSL"), "old_ssl", FALSE); |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
271 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
272 option); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
273 |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
274 option = purple_account_option_bool_new( |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
275 _("Allow plaintext auth over unencrypted streams"), |
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
276 "auth_plain_in_clear", FALSE); |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
277 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
278 option); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
279 |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
280 option = purple_account_option_int_new(_("Connect port"), "port", 5222); |
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
281 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
282 option); |
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
283 |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
284 option = purple_account_option_string_new(_("Connect server"), |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
285 "connect_server", NULL); |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
286 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
287 option); |
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
288 |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21125
diff
changeset
|
289 option = purple_account_option_string_new(_("File transfer proxies"), |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21125
diff
changeset
|
290 "ft_proxies", |
26836
a4b59d72b94b
Marcus convinced me (I didn't need much) this is a better idea.
Paul Aurich <paul@darkrain42.org>
parents:
26835
diff
changeset
|
291 /* TODO: Is this an acceptable default? |
a4b59d72b94b
Marcus convinced me (I didn't need much) this is a better idea.
Paul Aurich <paul@darkrain42.org>
parents:
26835
diff
changeset
|
292 * Also, keep this in sync as they add more servers */ |
29047
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
28974
diff
changeset
|
293 JABBER_DEFAULT_FT_PROXIES); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21125
diff
changeset
|
294 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21125
diff
changeset
|
295 option); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21125
diff
changeset
|
296 |
27173
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27006
diff
changeset
|
297 option = purple_account_option_string_new(_("BOSH URL"), |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27006
diff
changeset
|
298 "bosh_url", NULL); |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27006
diff
changeset
|
299 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27006
diff
changeset
|
300 option); |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27006
diff
changeset
|
301 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23110
diff
changeset
|
302 /* this should probably be part of global smiley theme settings later on, |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23110
diff
changeset
|
303 shared with MSN */ |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23110
diff
changeset
|
304 option = purple_account_option_bool_new(_("Show Custom Smileys"), |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23110
diff
changeset
|
305 "custom_smileys", TRUE); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23110
diff
changeset
|
306 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23110
diff
changeset
|
307 option); |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23110
diff
changeset
|
308 |
27860
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
309 my_protocol = plugin; |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
310 |
19489
b0733d5d7621
Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18922
diff
changeset
|
311 purple_prefs_remove("/plugins/prpl/jabber"); |
21637
844225b0c905
Now that the release has been tagged and strings are unfrozen, enable the new ft proxy account setting for xmpp accounts. Also, prevent duplicate entries in the streamhost lists. I don't know if the default account proxy is acceptable, perhaps there shouldn't be a default value.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21603
diff
changeset
|
312 |
27860
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
313 purple_signal_connect(purple_get_core(), "uri-handler", plugin, |
da22b6d0151e
Add support for XMPP URIs on Windows. Closes #2326.
Paul Aurich <paul@darkrain42.org>
parents:
27345
diff
changeset
|
314 PURPLE_CALLBACK(xmpp_uri_handler), NULL); |
16241 | 315 } |
316 | |
317 | |
318 PURPLE_INIT_PLUGIN(jabber, init_plugin, info); |