libpurple/protocols/jabber/libxmpp.c

Thu, 20 Sep 2007 16:30:17 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Thu, 20 Sep 2007 16:30:17 +0000
branch
sadrul.currentmedia
changeset 21193
e918a1846d03
parent 19992
3cdb4f27fb7c
child 20288
5ca925a094e2
child 20401
8aaa593a6269
permissions
-rw-r--r--

Use an independant status type for 'current media' stuff, instead of using
status attributes. This includes changes in both xmpp and msn.
Also, in MSN, CurrentMedia is sent with PSM if you turn on the status and
set the attributes on the account.

16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /* purple
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 *
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
5 * source distribution.
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
6 *
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 *
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 *
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18273
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 *
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
23 /* libxmpp is the XMPP protocol plugin. It is linked against libjabbercommon,
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
24 * which may be used to support other protocols (Bonjour) which may need to
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25 * share code.
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
26 */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
27
18273
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18178
diff changeset
28 #include "internal.h"
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18178
diff changeset
29
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
30 #include "accountopt.h"
19992
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
31 #include "debug.h"
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
32 #include "version.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
33
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
34 #include "iq.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
35 #include "jabber.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
36 #include "chat.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
37 #include "message.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
38 #include "roster.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
39 #include "si.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
40 #include "message.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
41 #include "presence.h"
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
42 #include "google.h"
17773
6956b763b3d1 Implemented adding callbacks for PEP events. Moved the feature list to be application-global instead of per-connection (makes more sense).
Andreas Monitzer <am@adiumx.com>
parents: 17012
diff changeset
43 #include "pep.h"
17791
b947d72db9db Implemented user tune, currently untested.
Andreas Monitzer <am@adiumx.com>
parents: 17788
diff changeset
44 #include "usertune.h"
17816
1b7362b4a7a2 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 <am@adiumx.com>
parents: 17800
diff changeset
45 #include "caps.h"
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
46
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
47 static PurplePluginProtocolInfo prpl_info =
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
48 {
19992
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
49 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME | OPT_PROTO_MAIL_CHECK |
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
50 #ifdef HAVE_CYRUS_SASL
19992
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
51 OPT_PROTO_PASSWORD_OPTIONAL |
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
52 #endif
18092
1a2362194473 Mostly taken from the patch on ticket #410, don't send unknown slash
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17012
diff changeset
53 OPT_PROTO_SLASH_COMMANDS_NATIVE,
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
54 NULL, /* user_splits */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55 NULL, /* protocol_options */
17787
439329d20337 Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <am@adiumx.com>
parents: 17773
diff changeset
56 {"png", 32, 32, 96, 96, 8191, PURPLE_ICON_SCALE_SEND | PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
57 jabber_list_icon, /* list_icon */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
58 jabber_list_emblem, /* list_emblems */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
59 jabber_status_text, /* status_text */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
60 jabber_tooltip_text, /* tooltip_text */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
61 jabber_status_types, /* status_types */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
62 jabber_blist_node_menu, /* blist_node_menu */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
63 jabber_chat_info, /* chat_info */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
64 jabber_chat_info_defaults, /* chat_info_defaults */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65 jabber_login, /* login */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
66 jabber_close, /* close */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 jabber_message_send_im, /* send_im */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
68 jabber_set_info, /* set_info */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
69 jabber_send_typing, /* send_typing */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
70 jabber_buddy_get_info, /* get_info */
17683
cc7e7a1d5d8c Two questions:
Mark Doliner <markdoliner@pidgin.im>
parents: 17012
diff changeset
71 jabber_presence_send, /* set_status */
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
72 jabber_idle_set, /* set_idle */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
73 NULL, /* change_passwd */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
74 jabber_roster_add_buddy, /* add_buddy */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
75 NULL, /* add_buddies */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
76 jabber_roster_remove_buddy, /* remove_buddy */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
77 NULL, /* remove_buddies */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
78 NULL, /* add_permit */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
79 jabber_google_roster_add_deny, /* add_deny */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
80 NULL, /* rem_permit */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
81 jabber_google_roster_rem_deny, /* rem_deny */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
82 NULL, /* set_permit_deny */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
83 jabber_chat_join, /* join_chat */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
84 NULL, /* reject_chat */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
85 jabber_get_chat_name, /* get_chat_name */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
86 jabber_chat_invite, /* chat_invite */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
87 jabber_chat_leave, /* chat_leave */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
88 NULL, /* chat_whisper */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
89 jabber_message_send_chat, /* chat_send */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
90 jabber_keepalive, /* keepalive */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
91 jabber_register_account, /* register_user */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92 jabber_buddy_get_info_chat, /* get_cb_info */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
93 NULL, /* get_cb_away */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
94 jabber_roster_alias_change, /* alias_buddy */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95 jabber_roster_group_change, /* group_buddy */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
96 jabber_roster_group_rename, /* rename_group */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
97 NULL, /* buddy_free */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
98 jabber_convo_closed, /* convo_closed */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
99 jabber_normalize, /* normalize */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
100 jabber_set_buddy_icon, /* set_buddy_icon */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
101 NULL, /* remove_group */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
102 jabber_chat_buddy_real_name, /* get_cb_real_name */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
103 jabber_chat_set_topic, /* set_chat_topic */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
104 jabber_find_blist_chat, /* find_blist_chat */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
105 jabber_roomlist_get_list, /* roomlist_get_list */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106 jabber_roomlist_cancel, /* roomlist_cancel */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
107 NULL, /* roomlist_expand_category */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
108 NULL, /* can_receive_file */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
109 jabber_si_xfer_send, /* send_file */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
110 jabber_si_new_xfer, /* new_xfer */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
111 jabber_offline_message, /* offline_message */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112 NULL, /* whiteboard_prpl_ops */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
113 jabber_prpl_send_raw, /* send_raw */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
114 jabber_roomlist_room_serialize, /* roomlist_room_serialize */
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
115 jabber_unregister_account, /* unregister_user */
16746
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
116
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
117 /* padding */
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
118 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
119 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
120 NULL
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
121 };
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
122
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 static gboolean load_plugin(PurplePlugin *plugin)
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
124 {
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
125 purple_signal_register(plugin, "jabber-receiving-xmlnode",
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
126 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
127 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
128 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
129
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
130 purple_signal_register(plugin, "jabber-sending-xmlnode",
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
131 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
132 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
133 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
134
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
135 purple_signal_register(plugin, "jabber-sending-text",
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
136 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
138 purple_value_new_outgoing(PURPLE_TYPE_STRING));
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
139
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
140
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141 return TRUE;
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
142 }
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
143
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
144 static gboolean unload_plugin(PurplePlugin *plugin)
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
145 {
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
146 purple_signal_unregister(plugin, "jabber-receiving-xmlnode");
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
147
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
148 purple_signal_unregister(plugin, "jabber-sending-xmlnode");
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
149
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
150 purple_signal_unregister(plugin, "jabber-sending-text");
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
151
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
152 return TRUE;
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
153 }
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
154
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
155 static PurplePluginInfo info =
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
156 {
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
157 PURPLE_PLUGIN_MAGIC,
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
158 PURPLE_MAJOR_VERSION,
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
159 PURPLE_MINOR_VERSION,
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
160 PURPLE_PLUGIN_PROTOCOL, /**< type */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
161 NULL, /**< ui_requirement */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
162 0, /**< flags */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
163 NULL, /**< dependencies */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
164 PURPLE_PRIORITY_DEFAULT, /**< priority */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
165
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
166 "prpl-jabber", /**< id */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
167 "XMPP", /**< name */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
168 VERSION, /**< version */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
169 /** summary */
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16799
diff changeset
170 N_("XMPP Protocol Plugin"),
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
171 /** description */
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16799
diff changeset
172 N_("XMPP Protocol Plugin"),
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
173 NULL, /**< author */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
174 PURPLE_WEBSITE, /**< homepage */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
175
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
176 load_plugin, /**< load */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
177 unload_plugin, /**< unload */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
178 NULL, /**< destroy */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
179
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
180 NULL, /**< ui_info */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
181 &prpl_info, /**< extra_info */
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
182 NULL, /**< prefs_info */
16746
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
183 jabber_actions,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
184
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
185 /* padding */
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
186 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
187 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
188 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16303
diff changeset
189 NULL
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
190 };
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
191
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
192 static void
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
193 init_plugin(PurplePlugin *plugin)
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
194 {
19992
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
195 #ifdef HAVE_CYRUS_SASL
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
196 int ret;
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
197 #endif
19894
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
198 PurpleAccountUserSplit *split;
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
199 PurpleAccountOption *option;
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
200
17008
502623177086 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@pidgin.im>
parents: 17007
diff changeset
201 /* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */
19894
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
202 split = purple_account_user_split_new(_("Domain"), NULL, '@');
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
203 purple_account_user_split_set_reverse(split, FALSE);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
204 prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
205
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
206 split = purple_account_user_split_new(_("Resource"), "Home", '/');
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
207 purple_account_user_split_set_reverse(split, FALSE);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
208 prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
209
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
210 option = purple_account_option_bool_new(_("Require SSL/TLS"), "require_tls", FALSE);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
211 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
212 option);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
213
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
214 option = purple_account_option_bool_new(_("Force old (port 5223) SSL"), "old_ssl", FALSE);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
215 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
216 option);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
217
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
218 option = purple_account_option_bool_new(
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
219 _("Allow plaintext auth over unencrypted streams"),
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
220 "auth_plain_in_clear", FALSE);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
221 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
222 option);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
223
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
224 option = purple_account_option_int_new(_("Connect port"), "port", 5222);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
225 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
226 option);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
227
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
228 option = purple_account_option_string_new(_("Connect server"),
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
229 "connect_server", NULL);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
230 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
231 option);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
232
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
233
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
234 jabber_init_plugin(plugin);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
235
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
236 purple_prefs_remove("/plugins/prpl/jabber");
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
237
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
238 /* XXX - If any other plugin wants SASL this won't be good ... */
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
239 #ifdef HAVE_CYRUS_SASL
19992
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
240 if ((ret = sasl_client_init(NULL)) != SASL_OK) {
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
241 purple_debug_error("xmpp", "Error (%d) initializing SASL.\n", ret);
3cdb4f27fb7c Cleanup the SASL init and add error checking.
Daniel Atallah <datallah@pidgin.im>
parents: 19897
diff changeset
242 }
19894
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
243 #endif
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
244 jabber_register_commands();
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
245
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
246 jabber_iq_init();
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
247 jabber_pep_init();
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
248
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
249 jabber_tune_init();
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
250 jabber_caps_init();
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
251
19894
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
252 jabber_add_feature("avatarmeta", AVATARNAMESPACEMETA, jabber_pep_namespace_only_when_pep_enabled_cb);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
253 jabber_add_feature("avatardata", AVATARNAMESPACEDATA, jabber_pep_namespace_only_when_pep_enabled_cb);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
254 jabber_add_feature("buzz", "http://www.xmpp.org/extensions/xep-0224.html#ns", jabber_buzz_isenabled);
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
255
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 18996
diff changeset
256 jabber_pep_register_handler("avatar", AVATARNAMESPACEMETA, jabber_buddy_avatar_update_metadata);
16303
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
257 }
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
258
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
259
0dd957edcc0a Very important to add files \!
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
260 PURPLE_INIT_PLUGIN(jabber, init_plugin, info);

mercurial