annotate libpurple/protocols/jabber/libxmpp.c @ 17615:cca457b9158b

disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
author Andreas Monitzer <pidgin@monitzer.com>
date Fri, 29 Jun 2007 21:44:42 +0000
parents 233af7fe561c
children 9686d549f084
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /* purple
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2 *
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 * source distribution.
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
6 *
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * (at your option) any later version.
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 *
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * GNU General Public License for more details.
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 *
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 *
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 /* libxmpp is the XMPP protocol plugin. It is linked against libjabbercommon,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 * which may be used to support other protocols (Bonjour) which may need to
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 * share code.
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 #include "accountopt.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 #include "internal.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 #include "version.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 #include "iq.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 #include "jabber.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 #include "chat.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 #include "message.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 #include "roster.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 #include "si.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38 #include "message.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 #include "presence.h"
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40 #include "google.h"
17566
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: 16973
diff changeset
41 #include "pep.h"
17584
3e437e86bd6e Implemented user tune, currently untested.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17581
diff changeset
42 #include "usertune.h"
17609
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: 17593
diff changeset
43 #include "caps.h"
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 static PurplePluginProtocolInfo prpl_info =
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 {
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 #ifdef HAVE_CYRUS_SASL
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME |
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 OPT_PROTO_MAIL_CHECK | OPT_PROTO_PASSWORD_OPTIONAL,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 #else
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME | OPT_PROTO_MAIL_CHECK,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52 #endif
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 NULL, /* user_splits */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 NULL, /* protocol_options */
17580
7754d39d70c5 Added support for setting the avatar via XEP-0084. Receiving other people's avatar is up next.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17566
diff changeset
55 {"png", 32, 32, 96, 96, 8191, PURPLE_ICON_SCALE_SEND | PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 jabber_list_icon, /* list_icon */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 jabber_list_emblem, /* list_emblems */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 jabber_status_text, /* status_text */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 jabber_tooltip_text, /* tooltip_text */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 jabber_status_types, /* status_types */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 jabber_blist_node_menu, /* blist_node_menu */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 jabber_chat_info, /* chat_info */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 jabber_chat_info_defaults, /* chat_info_defaults */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 jabber_login, /* login */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 jabber_close, /* close */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 jabber_message_send_im, /* send_im */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67 jabber_set_info, /* set_info */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 jabber_send_typing, /* send_typing */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69 jabber_buddy_get_info, /* get_info */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70 jabber_presence_send, /* set_away */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 jabber_idle_set, /* set_idle */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72 NULL, /* change_passwd */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 jabber_roster_add_buddy, /* add_buddy */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 NULL, /* add_buddies */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75 jabber_roster_remove_buddy, /* remove_buddy */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
76 NULL, /* remove_buddies */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77 NULL, /* add_permit */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78 jabber_google_roster_add_deny, /* add_deny */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79 NULL, /* rem_permit */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 jabber_google_roster_rem_deny, /* rem_deny */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 NULL, /* set_permit_deny */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 jabber_chat_join, /* join_chat */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 NULL, /* reject_chat */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84 jabber_get_chat_name, /* get_chat_name */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 jabber_chat_invite, /* chat_invite */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 jabber_chat_leave, /* chat_leave */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 NULL, /* chat_whisper */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 jabber_message_send_chat, /* chat_send */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 jabber_keepalive, /* keepalive */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 jabber_register_account, /* register_user */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 jabber_buddy_get_info_chat, /* get_cb_info */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 NULL, /* get_cb_away */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 jabber_roster_alias_change, /* alias_buddy */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 jabber_roster_group_change, /* group_buddy */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 jabber_roster_group_rename, /* rename_group */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96 NULL, /* buddy_free */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 jabber_convo_closed, /* convo_closed */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 jabber_normalize, /* normalize */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99 jabber_set_buddy_icon, /* set_buddy_icon */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100 NULL, /* remove_group */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 jabber_chat_buddy_real_name, /* get_cb_real_name */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102 jabber_chat_set_topic, /* set_chat_topic */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 jabber_find_blist_chat, /* find_blist_chat */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 jabber_roomlist_get_list, /* roomlist_get_list */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 jabber_roomlist_cancel, /* roomlist_cancel */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 NULL, /* roomlist_expand_category */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 NULL, /* can_receive_file */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 jabber_si_xfer_send, /* send_file */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 jabber_si_new_xfer, /* new_xfer */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 jabber_offline_message, /* offline_message */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 NULL, /* whiteboard_prpl_ops */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 jabber_prpl_send_raw, /* send_raw */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 jabber_roomlist_room_serialize, /* roomlist_room_serialize */
16675
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
114
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
115 /* padding */
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
116 NULL,
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
117 NULL,
17593
759cd72bd2ff Replaced a clean and simple API with a very weird hack due to vivid request on #pidgin by multiple devs. This avoids the change in PurplePluginProtocolInfo, but requires complicated change tracking in every prpl. The others prpl should add this change tracking, too (since otherwise the status gets changed even though nothing they care about changed), but that's not up to me.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17592
diff changeset
118 NULL,
16675
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
119 NULL
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120 };
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 static gboolean load_plugin(PurplePlugin *plugin)
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 {
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 purple_signal_register(plugin, "jabber-receiving-xmlnode",
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 purple_signal_register(plugin, "jabber-sending-xmlnode",
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134 purple_signal_register(plugin, "jabber-sending-text",
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137 purple_value_new_outgoing(PURPLE_TYPE_STRING));
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 return TRUE;
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141 }
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 static gboolean unload_plugin(PurplePlugin *plugin)
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 {
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145 purple_signal_unregister(plugin, "jabber-receiving-xmlnode");
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 purple_signal_unregister(plugin, "jabber-sending-xmlnode");
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
149 purple_signal_unregister(plugin, "jabber-sending-text");
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151 return TRUE;
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 }
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
153
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
154 static PurplePluginInfo info =
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
155 {
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
156 PURPLE_PLUGIN_MAGIC,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157 PURPLE_MAJOR_VERSION,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 PURPLE_MINOR_VERSION,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159 PURPLE_PLUGIN_PROTOCOL, /**< type */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 NULL, /**< ui_requirement */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 0, /**< flags */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 NULL, /**< dependencies */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163 PURPLE_PRIORITY_DEFAULT, /**< priority */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165 "prpl-jabber", /**< id */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 "XMPP", /**< name */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
167 VERSION, /**< version */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168 /** summary */
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16728
diff changeset
169 N_("XMPP Protocol Plugin"),
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 /** description */
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16728
diff changeset
171 N_("XMPP Protocol Plugin"),
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 NULL, /**< author */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 PURPLE_WEBSITE, /**< homepage */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 load_plugin, /**< load */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 unload_plugin, /**< unload */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 NULL, /**< destroy */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 NULL, /**< ui_info */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 &prpl_info, /**< extra_info */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181 NULL, /**< prefs_info */
16675
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
182 jabber_actions,
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
183
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
184 /* padding */
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
185 NULL,
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
186 NULL,
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
187 NULL,
a338acd14365 And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16241
diff changeset
188 NULL
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189 };
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
190
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
191 static void
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
192 init_plugin(PurplePlugin *plugin)
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
193 {
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
194 PurpleAccountUserSplit *split;
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
195 PurpleAccountOption *option;
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
196
16963
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: 16962
diff changeset
197 /* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */
16973
b08636a33721 disapproval of revision 'b53a835bb1f153bec412cb4b7b18e9b93829c4d3'
Richard Laager <rlaager@wiktel.com>
parents: 16972
diff changeset
198 split = purple_account_user_split_new(_("Domain"), NULL, '@');
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
199 prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
200
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
201 split = purple_account_user_split_new(_("Resource"), "Home", '/');
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
202 prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
204 option = purple_account_option_bool_new(_("Force old (port 5223) SSL"), "old_ssl", FALSE);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
205 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206 option);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 option = purple_account_option_bool_new(
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
209 _("Allow plaintext auth over unencrypted streams"),
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210 "auth_plain_in_clear", FALSE);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212 option);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214 option = purple_account_option_int_new(_("Connect port"), "port", 5222);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
215 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216 option);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
217
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 option = purple_account_option_string_new(_("Connect server"),
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
219 "connect_server", NULL);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
220 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221 option);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
223
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
224 jabber_init_plugin(plugin);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
225
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226 purple_prefs_remove("/plugins/prpl/jabber");
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
227
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228 /* XXX - If any other plugin wants SASL this won't be good ... */
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229 #ifdef HAVE_CYRUS_SASL
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 sasl_client_init(NULL);
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231 #endif
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232 jabber_register_commands();
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
233
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234 jabber_iq_init();
17566
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: 16973
diff changeset
235 jabber_pep_init();
17589
248d2d0c606e Forgot to initialize the user tune
Andreas Monitzer <pidgin@monitzer.com>
parents: 17588
diff changeset
236
248d2d0c606e Forgot to initialize the user tune
Andreas Monitzer <pidgin@monitzer.com>
parents: 17588
diff changeset
237 jabber_tune_init();
17609
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: 17593
diff changeset
238 jabber_caps_init();
17581
5ab3c6bb95b4 Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17580
diff changeset
239
17588
91cbd18fee06 svn revision 728 of Psi fixes the avatar namespace issue, so I can remove this workaround.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17584
diff changeset
240 jabber_add_feature("avatarmeta", AVATARNAMESPACEMETA, jabber_pep_namespace_only_when_pep_enabled_cb);
91cbd18fee06 svn revision 728 of Psi fixes the avatar namespace issue, so I can remove this workaround.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17584
diff changeset
241 jabber_add_feature("avatardata", AVATARNAMESPACEDATA, jabber_pep_namespace_only_when_pep_enabled_cb);
17615
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
242 jabber_add_feature("buzz", "http://pidgin.im/xmpp/buzz", NULL);
17581
5ab3c6bb95b4 Implemented receiving other people's avatars via XEP-0084. Note that this code now includes a workaround for a non-spec incompatibility for the current ejabberd PEP implementation, and doesn't use the correct namespace due to Psi using the wrong one (outdated?). Works fine though, and the vcard-based approach is retained.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17580
diff changeset
243
17588
91cbd18fee06 svn revision 728 of Psi fixes the avatar namespace issue, so I can remove this workaround.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17584
diff changeset
244 jabber_pep_register_handler("avatar", AVATARNAMESPACEMETA, jabber_buddy_avatar_update_metadata);
16241
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245 }
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247
1aed376daccb Very important to add files \!
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248 PURPLE_INIT_PLUGIN(jabber, init_plugin, info);