Mercurial > pidgin
annotate libgaim/protocols/msn/notification.c @ 20392:9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
"uploaded a diff, this diff is unchanged from the last tarball that I
previously uploaded, except that it's against HEAD. This should be a little
easier for most people."
(This was apparently msn-p13-merge-head.diff, which SourceForge didn't allow to
be uploaded.)
PLUS
"Updated the diff with basically no change, except with simom's icon fix.
The previous diff was broken because some of the files were not added"
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sun, 15 Apr 2007 03:01:41 +0000 |
parents | 0b0ecee55091 |
children | 40a04930b233 |
rev | line source |
---|---|
14192 | 1 /** |
2 * @file notification.c Notification server functions | |
3 * | |
4 * gaim | |
5 * | |
6 * Gaim is the legal property of its developers, whose names are too numerous | |
7 * to list here. Please refer to the COPYRIGHT file distributed with this | |
8 * source distribution. | |
9 * | |
10 * This program is free software; you can redistribute it and/or modify | |
11 * it under the terms of the GNU General Public License as published by | |
12 * the Free Software Foundation; either version 2 of the License, or | |
13 * (at your option) any later version. | |
14 * | |
15 * This program is distributed in the hope that it will be useful, | |
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 * GNU General Public License for more details. | |
19 * | |
20 * You should have received a copy of the GNU General Public License | |
21 * along with this program; if not, write to the Free Software | |
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
23 */ | |
24 #include "msn.h" | |
25 #include "notification.h" | |
26 #include "state.h" | |
27 #include "error.h" | |
20392
9ba7dee775e1
The first msn-p13-merge-head.diff.gz from SF Patch #1621854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20391
diff
changeset
|
28 #include "msnutils.h" |
14192 | 29 #include "page.h" |
30 | |
31 #include "userlist.h" | |
32 #include "sync.h" | |
33 #include "slplink.h" | |
34 | |
35 static MsnTable *cbs_table; | |
36 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
37 /**************************************************************************** |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
38 * Local Function Prototype |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
39 ****************************************************************************/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
40 |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
41 static void msn_notification_fqy_yahoo(MsnSession *session, const char *passport); |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
42 static void msn_notification_post_adl(MsnCmdProc *cmdproc, char *payload, int payload_len); |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
43 static void msn_add_contact_xml(xmlnode *mlNode, const char *passport, int list_op, int type); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
44 |
14192 | 45 /************************************************************************** |
46 * Main | |
47 **************************************************************************/ | |
48 | |
49 static void | |
50 destroy_cb(MsnServConn *servconn) | |
51 { | |
52 MsnNotification *notification; | |
53 | |
54 notification = servconn->cmdproc->data; | |
55 g_return_if_fail(notification != NULL); | |
56 | |
57 msn_notification_destroy(notification); | |
58 } | |
59 | |
60 MsnNotification * | |
61 msn_notification_new(MsnSession *session) | |
62 { | |
63 MsnNotification *notification; | |
64 MsnServConn *servconn; | |
65 | |
66 g_return_val_if_fail(session != NULL, NULL); | |
67 | |
68 notification = g_new0(MsnNotification, 1); | |
69 | |
70 notification->session = session; | |
71 notification->servconn = servconn = msn_servconn_new(session, MSN_SERVCONN_NS); | |
72 msn_servconn_set_destroy_cb(servconn, destroy_cb); | |
73 | |
74 notification->cmdproc = servconn->cmdproc; | |
75 notification->cmdproc->data = notification; | |
76 notification->cmdproc->cbs_table = cbs_table; | |
77 | |
78 return notification; | |
79 } | |
80 | |
81 void | |
82 msn_notification_destroy(MsnNotification *notification) | |
83 { | |
84 notification->cmdproc->data = NULL; | |
85 | |
86 msn_servconn_set_destroy_cb(notification->servconn, NULL); | |
87 | |
88 msn_servconn_destroy(notification->servconn); | |
89 | |
90 g_free(notification); | |
91 } | |
92 | |
93 /************************************************************************** | |
94 * Connect | |
95 **************************************************************************/ | |
96 | |
97 static void | |
98 connect_cb(MsnServConn *servconn) | |
99 { | |
100 MsnCmdProc *cmdproc; | |
101 MsnSession *session; | |
102 GaimAccount *account; | |
103 char **a, **c, *vers; | |
104 int i; | |
105 | |
106 g_return_if_fail(servconn != NULL); | |
107 | |
108 cmdproc = servconn->cmdproc; | |
109 session = servconn->session; | |
110 account = session->account; | |
111 | |
112 /* Allocate an array for CVR0, NULL, and all the versions */ | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
113 // a = c = g_new0(char *, session->protocol_ver - WLM_MIN_PROTOCOL + 3); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
114 a = c = g_new0(char *, WLM_MAX_PROTOCOL - WLM_MIN_PROTOCOL + 3); |
14192 | 115 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
116 // for (i = session->protocol_ver; i >= WLM_MIN_PROTOCOL; i--) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
117 for (i = WLM_MAX_PROTOCOL; i >= WLM_MIN_PROTOCOL; i--) |
14192 | 118 *c++ = g_strdup_printf("MSNP%d", i); |
119 | |
120 *c++ = g_strdup("CVR0"); | |
121 | |
122 vers = g_strjoinv(" ", a); | |
123 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
124 if (session->login_step == MSN_LOGIN_STEP_START){ |
14192 | 125 msn_session_set_login_step(session, MSN_LOGIN_STEP_HANDSHAKE); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
126 }else{ |
14192 | 127 msn_session_set_login_step(session, MSN_LOGIN_STEP_HANDSHAKE2); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
128 } |
14192 | 129 |
130 msn_cmdproc_send(cmdproc, "VER", "%s", vers); | |
131 | |
132 g_strfreev(a); | |
133 g_free(vers); | |
134 } | |
135 | |
136 gboolean | |
137 msn_notification_connect(MsnNotification *notification, const char *host, int port) | |
138 { | |
139 MsnServConn *servconn; | |
140 | |
141 g_return_val_if_fail(notification != NULL, FALSE); | |
142 | |
143 servconn = notification->servconn; | |
144 | |
145 msn_servconn_set_connect_cb(servconn, connect_cb); | |
146 notification->in_use = msn_servconn_connect(servconn, host, port); | |
147 | |
148 return notification->in_use; | |
149 } | |
150 | |
151 void | |
152 msn_notification_disconnect(MsnNotification *notification) | |
153 { | |
154 g_return_if_fail(notification != NULL); | |
155 g_return_if_fail(notification->in_use); | |
156 | |
157 msn_servconn_disconnect(notification->servconn); | |
158 | |
159 notification->in_use = FALSE; | |
160 } | |
161 | |
162 /************************************************************************** | |
163 * Util | |
164 **************************************************************************/ | |
165 | |
166 static void | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
167 group_error_helper(MsnSession *session, const char *msg, const char *group_id, int error) |
14192 | 168 { |
169 GaimAccount *account; | |
170 GaimConnection *gc; | |
171 char *reason = NULL; | |
172 char *title = NULL; | |
173 | |
174 account = session->account; | |
175 gc = gaim_account_get_connection(account); | |
176 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
177 if (error == 224){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
178 if (group_id == 0){ |
14192 | 179 return; |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
180 }else{ |
14192 | 181 const char *group_name; |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
182 group_name = msn_userlist_find_group_name(session->userlist,group_id); |
14192 | 183 reason = g_strdup_printf(_("%s is not a valid group."), |
184 group_name); | |
185 } | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
186 }else{ |
14192 | 187 reason = g_strdup(_("Unknown error.")); |
188 } | |
189 | |
190 title = g_strdup_printf(_("%s on %s (%s)"), msg, | |
191 gaim_account_get_username(account), | |
192 gaim_account_get_protocol_name(account)); | |
193 gaim_notify_error(gc, NULL, title, reason); | |
194 g_free(title); | |
195 g_free(reason); | |
196 } | |
197 | |
198 /************************************************************************** | |
199 * Login | |
200 **************************************************************************/ | |
201 | |
202 void | |
203 msn_got_login_params(MsnSession *session, const char *login_params) | |
204 { | |
205 MsnCmdProc *cmdproc; | |
206 | |
207 cmdproc = session->notification->cmdproc; | |
208 | |
209 msn_session_set_login_step(session, MSN_LOGIN_STEP_AUTH_END); | |
210 | |
211 msn_cmdproc_send(cmdproc, "USR", "TWN S %s", login_params); | |
212 } | |
213 | |
214 static void | |
215 cvr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
216 { | |
217 GaimAccount *account; | |
218 | |
219 account = cmdproc->session->account; | |
220 msn_cmdproc_send(cmdproc, "USR", "TWN I %s", | |
221 gaim_account_get_username(account)); | |
222 } | |
223 | |
224 static void | |
225 usr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
226 { | |
227 MsnSession *session; | |
228 GaimAccount *account; | |
229 GaimConnection *gc; | |
230 | |
231 session = cmdproc->session; | |
232 account = session->account; | |
233 gc = gaim_account_get_connection(account); | |
234 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
235 if (!g_ascii_strcasecmp(cmd->params[1], "OK")){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
236 /* authenticate OK */ |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
237 /* friendly name part no longer true in msnp11 */ |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
238 #if 0 |
14192 | 239 const char *friendly = gaim_url_decode(cmd->params[3]); |
240 | |
241 gaim_connection_set_display_name(gc, friendly); | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
242 #endif |
14192 | 243 msn_session_set_login_step(session, MSN_LOGIN_STEP_SYN); |
244 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
245 // msn_cmdproc_send(cmdproc, "SYN", "%s", "0"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
246 //TODO we should use SOAP contact to fetch contact list |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
247 } else if (!g_ascii_strcasecmp(cmd->params[1], "TWN")){ |
14192 | 248 /* Passport authentication */ |
249 char **elems, **cur, **tokens; | |
250 | |
251 session->nexus = msn_nexus_new(session); | |
252 | |
253 /* Parse the challenge data. */ | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
254 session->nexus->challenge_data_str = g_strdup(cmd->params[3]); |
14192 | 255 elems = g_strsplit(cmd->params[3], ",", 0); |
256 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
257 for (cur = elems; *cur != NULL; cur++){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
258 tokens = g_strsplit(*cur, "=", 2); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
259 if(tokens[0]&&tokens[1]){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
260 gaim_debug_info("MaYuan","challenge %p,key:%s,value:%s\n", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
261 session->nexus->challenge_data,tokens[0],tokens[1]); |
14192 | 262 g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
263 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
264 /* Don't free each of the tokens, only the array. */ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
265 g_free(tokens); |
14192 | 266 } |
267 | |
268 g_strfreev(elems); | |
269 | |
270 msn_session_set_login_step(session, MSN_LOGIN_STEP_AUTH_START); | |
271 | |
272 msn_nexus_connect(session->nexus); | |
273 } | |
274 } | |
275 | |
276 static void | |
277 usr_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
278 { | |
279 MsnErrorType msnerr = 0; | |
280 | |
281 switch (error) | |
282 { | |
283 case 500: | |
284 case 601: | |
285 case 910: | |
286 case 921: | |
287 msnerr = MSN_ERROR_SERV_UNAVAILABLE; | |
288 break; | |
289 case 911: | |
290 msnerr = MSN_ERROR_AUTH; | |
291 break; | |
292 default: | |
293 return; | |
294 break; | |
295 } | |
296 | |
297 msn_session_set_error(cmdproc->session, msnerr, NULL); | |
298 } | |
299 | |
300 static void | |
301 ver_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
302 { | |
303 MsnSession *session; | |
304 GaimAccount *account; | |
305 gboolean protocol_supported = FALSE; | |
306 char proto_str[8]; | |
307 size_t i; | |
308 | |
309 session = cmdproc->session; | |
310 account = session->account; | |
311 | |
312 g_snprintf(proto_str, sizeof(proto_str), "MSNP%d", session->protocol_ver); | |
313 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
314 for (i = 1; i < cmd->param_count -1; i++){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
315 gaim_debug_info("MaYuan","%s,proto_str:%s\n",cmd->params[i],proto_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
316 if (strcmp(cmd->params[i], proto_str) >= 0) { |
14192 | 317 protocol_supported = TRUE; |
318 break; | |
319 } | |
320 } | |
321 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
322 if (!protocol_supported){ |
14192 | 323 msn_session_set_error(session, MSN_ERROR_UNSUPPORTED_PROTOCOL, |
324 NULL); | |
325 return; | |
326 } | |
327 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
328 /* |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
329 * Windows Live Messenger 8.0 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
330 * Notice :CVR String discriminate! |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
331 * reference of http://www.microsoft.com/globaldev/reference/oslocversion.mspx |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
332 * to see the Local ID |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
333 */ |
14192 | 334 msn_cmdproc_send(cmdproc, "CVR", |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
335 // "0x0409 winnt 5.1 i386 MSG80BETA 8.0.0689 msmsgs %s", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
336 "0x0804 winnt 5.1 i386 MSNMSGR 8.0.0792 msmsgs %s", |
14192 | 337 gaim_account_get_username(account)); |
338 } | |
339 | |
340 /************************************************************************** | |
341 * Log out | |
342 **************************************************************************/ | |
343 | |
344 static void | |
345 out_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
346 { | |
347 if (!g_ascii_strcasecmp(cmd->params[0], "OTH")) | |
348 msn_session_set_error(cmdproc->session, MSN_ERROR_SIGN_OTHER, | |
349 NULL); | |
350 else if (!g_ascii_strcasecmp(cmd->params[0], "SSD")) | |
351 msn_session_set_error(cmdproc->session, MSN_ERROR_SERV_DOWN, NULL); | |
352 } | |
353 | |
354 void | |
355 msn_notification_close(MsnNotification *notification) | |
356 { | |
357 g_return_if_fail(notification != NULL); | |
358 | |
359 if (!notification->in_use) | |
360 return; | |
361 | |
362 msn_cmdproc_send_quick(notification->cmdproc, "OUT", NULL, NULL); | |
363 | |
364 msn_notification_disconnect(notification); | |
365 } | |
366 | |
367 /************************************************************************** | |
368 * Messages | |
369 **************************************************************************/ | |
370 | |
371 static void | |
372 msg_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, | |
373 size_t len) | |
374 { | |
375 MsnMessage *msg; | |
376 | |
377 msg = msn_message_new_from_cmd(cmdproc->session, cmd); | |
378 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
379 msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM); |
14192 | 380 #ifdef MSN_DEBUG_NS |
381 msn_message_show_readable(msg, "Notification", TRUE); | |
382 #endif | |
383 | |
384 msn_cmdproc_process_msg(cmdproc, msg); | |
385 | |
386 msn_message_destroy(msg); | |
387 } | |
388 | |
389 static void | |
390 msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
391 { | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
392 gaim_debug_info("MaYuan","Processing MSG... \n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
393 if(cmd->payload_len == 0){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
394 return; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
395 } |
14192 | 396 /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued |
397 * command and we are processing it */ | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
398 if (cmd->payload == NULL){ |
14192 | 399 cmdproc->last_cmd->payload_cb = msg_cmd_post; |
400 cmdproc->servconn->payload_len = atoi(cmd->params[2]); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
401 }else{ |
14192 | 402 g_return_if_fail(cmd->payload_cb != NULL); |
403 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
404 gaim_debug_info("MaYuan","MSG payload:{%s}\n",cmd->payload); |
14192 | 405 cmd->payload_cb(cmdproc, cmd, cmd->payload, cmd->payload_len); |
406 } | |
407 } | |
408 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
409 /*send Message to Yahoo Messenger*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
410 void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
411 uum_send_msg(MsnSession *session,MsnMessage *msg) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
412 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
413 MsnCmdProc *cmdproc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
414 MsnTransaction *trans; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
415 char *payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
416 gsize payload_len; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
417 int type; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
418 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
419 cmdproc = session->notification->cmdproc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
420 g_return_if_fail(msg != NULL); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
421 payload = msn_message_gen_payload(msg, &payload_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
422 gaim_debug_info("MaYuan","send UUM,payload{%s},strlen:%d,len:%d\n", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
423 payload,strlen(payload),payload_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
424 type = msg->type; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
425 trans = msn_transaction_new(cmdproc, "UUM","%s 32 %d %d",msg->remote_user,type,payload_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
426 msn_transaction_set_payload(trans, payload, strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
427 msn_cmdproc_send_trans(cmdproc, trans); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
428 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
429 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
430 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
431 ubm_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
432 size_t len) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
433 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
434 MsnMessage *msg; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
435 GaimConnection *gc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
436 const char *passport; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
437 const char *content_type; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
438 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
439 gaim_debug_info("MaYuan","Process UBM payload:%s\n",payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
440 msg = msn_message_new_from_cmd(cmdproc->session, cmd); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
441 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
442 msn_message_parse_payload(msg, payload, len,MSG_LINE_DEM,MSG_BODY_DEM); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
443 #ifdef MSN_DEBUG_NS |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
444 msn_message_show_readable(msg, "Notification", TRUE); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
445 #endif |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
446 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
447 gc = cmdproc->session->account->gc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
448 passport = msg->remote_user; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
449 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
450 content_type = msn_message_get_content_type(msg); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
451 gaim_debug_info("MaYuan","type:%d\n",content_type); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
452 if(!strcmp(content_type,"text/plain")){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
453 const char *value; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
454 const char *body; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
455 char *body_str; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
456 char *body_enc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
457 char *body_final = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
458 size_t body_len; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
459 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
460 body = msn_message_get_bin_data(msg, &body_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
461 body_str = g_strndup(body, body_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
462 body_enc = g_markup_escape_text(body_str, -1); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
463 g_free(body_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
464 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
465 if ((value = msn_message_get_attr(msg, "X-MMS-IM-Format")) != NULL) { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
466 char *pre, *post; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
467 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
468 msn_parse_format(value, &pre, &post); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
469 body_final = g_strdup_printf("%s%s%s", pre ? pre : "", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
470 body_enc ? body_enc : "", post ? post : ""); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
471 g_free(pre); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
472 g_free(post); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
473 g_free(body_enc); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
474 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
475 serv_got_im(gc, passport, body_final, 0, time(NULL)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
476 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
477 if(!strcmp(content_type,"text/x-msmsgscontrol")){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
478 if(msn_message_get_attr(msg, "TypingUser") != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
479 serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
480 GAIM_TYPING); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
481 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
482 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
483 if(!strcmp(content_type,"text/x-msnmsgr-datacast")){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
484 char *username, *str; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
485 GaimAccount *account; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
486 GaimBuddy *buddy; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
487 const char *user; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
488 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
489 account = cmdproc->session->account; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
490 user = msg->remote_user; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
491 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
492 if ((buddy = gaim_find_buddy(account, user)) != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
493 username = g_markup_escape_text(gaim_buddy_get_alias(buddy), -1); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
494 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
495 username = g_markup_escape_text(user, -1); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
496 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
497 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
498 str = g_strdup_printf(_("%s just sent you a Nudge!"), username); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
499 g_free(username); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
500 msn_session_report_user(cmdproc->session,user,str,GAIM_MESSAGE_SYSTEM); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
501 g_free(str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
502 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
503 msn_message_destroy(msg); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
504 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
505 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
506 /*Yahoo msg process*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
507 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
508 ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
509 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
510 gaim_debug_info("MaYuan","Processing UBM... \n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
511 if(cmd->payload_len == 0){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
512 return; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
513 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
514 /* NOTE: cmd is not always cmdproc->last_cmd, sometimes cmd is a queued |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
515 * command and we are processing it */ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
516 if (cmd->payload == NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
517 cmdproc->last_cmd->payload_cb = ubm_cmd_post; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
518 cmdproc->servconn->payload_len = atoi(cmd->params[2]); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
519 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
520 g_return_if_fail(cmd->payload_cb != NULL); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
521 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
522 gaim_debug_info("MaYuan","UBM payload:{%s}\n",cmd->payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
523 ubm_cmd_post(cmdproc, cmd, cmd->payload, cmd->payload_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
524 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
525 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
526 |
14192 | 527 /************************************************************************** |
528 * Challenges | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
529 * we use MD5 to caculate the Chanllenges |
14192 | 530 **************************************************************************/ |
531 static void | |
532 chl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
533 { | |
534 MsnTransaction *trans; | |
535 char buf[33]; | |
536 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
537 #if 0 |
14192 | 538 cipher = gaim_ciphers_find_cipher("md5"); |
539 context = gaim_cipher_context_new(cipher, NULL); | |
540 gaim_cipher_context_append(context, (const guchar *)cmd->params[1], | |
541 strlen(cmd->params[1])); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
542 challenge_resp = MSNP13_WLM_PRODUCT_KEY; |
14192 | 543 |
544 gaim_cipher_context_append(context, (const guchar *)challenge_resp, | |
545 strlen(challenge_resp)); | |
546 gaim_cipher_context_digest(context, sizeof(digest), digest, NULL); | |
547 gaim_cipher_context_destroy(context); | |
548 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
549 for (i = 0; i < 16; i++){ |
14192 | 550 g_snprintf(buf + (i*2), 3, "%02x", digest[i]); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
551 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
552 #else |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
553 msn_handle_chl(cmd->params[1], buf); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
554 #endif |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
555 // gaim_debug_info("MaYuan","<<challenge:{%s}:{%s}\n",cmd->params[1],buf); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
556 trans = msn_transaction_new(cmdproc, "QRY", "%s 32", MSNP13_WLM_PRODUCT_ID); |
14192 | 557 |
558 msn_transaction_set_payload(trans, buf, 32); | |
559 | |
560 msn_cmdproc_send_trans(cmdproc, trans); | |
561 } | |
562 | |
563 /************************************************************************** | |
564 * Buddy Lists | |
565 **************************************************************************/ | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
566 /* add contact to xmlnode */ |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
567 static void |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
568 msn_add_contact_xml(xmlnode *mlNode,const char *passport,int list_op,int type) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
569 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
570 xmlnode *d_node,*c_node; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
571 char **tokens; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
572 char *email,*domain; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
573 char *list_op_str,*type_str; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
574 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
575 gaim_debug_info("MaYuan","passport:%s\n",passport); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
576 tokens = g_strsplit(passport, "@", 2); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
577 email = tokens[0]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
578 domain = tokens[1]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
579 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
580 /*find a domain Node*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
581 for(d_node = xmlnode_get_child(mlNode,"d"); d_node; d_node = xmlnode_get_next_twin(d_node)){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
582 const char * attr = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
583 gaim_debug_info("MaYuan","d_node:%s\n",d_node->name); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
584 attr = xmlnode_get_attrib(d_node,"n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
585 if(attr == NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
586 continue; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
587 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
588 if(!strcmp(attr,domain)){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
589 break; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
590 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
591 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
592 if(d_node == NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
593 /*domain not found, create a new domain Node*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
594 gaim_debug_info("MaYuan","get No d_node\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
595 d_node = xmlnode_new("d"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
596 xmlnode_set_attrib(d_node,"n",domain); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
597 xmlnode_insert_child(mlNode,d_node); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
598 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
599 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
600 /*create contact node*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
601 c_node = xmlnode_new("c"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
602 xmlnode_set_attrib(c_node,"n",email); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
603 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
604 list_op_str = g_strdup_printf("%d",list_op); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
605 gaim_debug_info("MaYuan","list_op:%d\n",list_op_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
606 xmlnode_set_attrib(c_node,"l",list_op_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
607 g_free(list_op_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
608 #if 0 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
609 type_str = g_strdup_printf("%d",type); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
610 xmlnode_set_attrib(c_node,"t",type_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
611 #else |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
612 if(g_strrstr(domain,"yahoo") != NULL){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
613 type_str = g_strdup_printf("32"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
614 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
615 /*passport*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
616 type_str = g_strdup_printf("1"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
617 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
618 /*mobile*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
619 //type_str = g_strdup_printf("4"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
620 xmlnode_set_attrib(c_node,"t",type_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
621 g_free(type_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
622 #endif |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
623 xmlnode_insert_child(d_node, c_node); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
624 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
625 g_free(tokens); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
626 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
627 |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
628 static void |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
629 msn_notification_post_adl(MsnCmdProc *cmdproc,char *payload, int payload_len) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
630 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
631 MsnTransaction *trans; |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
632 const char *display_name; |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
633 const char *friendly; |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
634 |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
635 display_name = gaim_connection_get_display_name(cmdproc->session->account->gc); |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
636 if (display_name) { |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
637 friendly = gaim_url_encode(display_name); |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
638 msn_cmdproc_send(cmdproc, "PRP", "MFN %s", friendly); |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
639 } |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
640 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
641 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
642 gaim_debug_info("MaYuan","Send ADL{%s}\n",payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
643 trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
644 msn_transaction_set_payload(trans, payload, strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
645 msn_cmdproc_send_trans(cmdproc, trans); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
646 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
647 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
648 /*dump contact info to NS*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
649 void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
650 msn_notification_dump_contact(MsnSession *session) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
651 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
652 MsnUserList *userlist; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
653 MsnUser *user; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
654 GList *l; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
655 xmlnode *adl_node; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
656 char *payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
657 int payload_len; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
658 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
659 userlist = session->userlist; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
660 adl_node = xmlnode_new("ml"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
661 adl_node->child = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
662 xmlnode_set_attrib(adl_node, "l", "1"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
663 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
664 /*get the userlist*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
665 for (l = userlist->users; l != NULL; l = l->next){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
666 user = l->data; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
667 msn_add_contact_xml(adl_node,user->passport,user->list_op&MSN_LIST_OP_MASK,user->type); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
668 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
669 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
670 payload = xmlnode_to_str(adl_node,&payload_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
671 xmlnode_free(adl_node); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
672 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
673 msn_notification_post_adl(session->notification->cmdproc,payload,payload_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
674 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
675 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
676 /*Post FQY to NS,Inform add a Yahoo User*/ |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
677 static void |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
678 msn_notification_fqy_yahoo(MsnSession *session, const char *passport) |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
679 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
680 MsnTransaction *trans; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
681 MsnCmdProc *cmdproc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
682 char* email,*domain,*payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
683 char **tokens; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
684 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
685 cmdproc = session->notification->cmdproc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
686 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
687 tokens = g_strsplit(passport, "@", 2); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
688 email = tokens[0]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
689 domain = tokens[1]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
690 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
691 payload = g_strdup_printf("<ml><d n=\"%s\"><c n=\"%s\"/></d></ml>",domain,email); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
692 trans = msn_transaction_new(cmdproc, "FQY","%d",strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
693 msn_transaction_set_payload(trans, payload, strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
694 msn_cmdproc_send_trans(cmdproc, trans); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
695 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
696 g_free(payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
697 g_free(tokens); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
698 } |
14192 | 699 |
700 static void | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
701 blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
702 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
703 gaim_debug_info("MaYuan","Process BLP\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
704 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
705 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
706 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
707 adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
14192 | 708 { |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
709 gaim_debug_info("MaYuan","Process ADL\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
710 } |
14192 | 711 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
712 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
713 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
714 size_t len) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
715 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
716 gaim_debug_info("MaYuan","FQY payload{%s}\n",payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
717 msn_notification_post_adl(cmdproc,payload,len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
718 } |
14192 | 719 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
720 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
721 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
722 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
723 gaim_debug_info("MaYuan","Process FQY\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
724 cmdproc->last_cmd->payload_cb = fqy_cmd_post; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
725 } |
14192 | 726 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
727 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
728 rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
729 { |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
730 #if 0 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
731 MsnTransaction *trans; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
732 char * payload; |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
733 #endif |
14192 | 734 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
735 gaim_debug_info("MaYuan","Process ADL\n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
736 #if 0 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
737 trans = msn_transaction_new(cmdproc, "RML",""); |
14192 | 738 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
739 msn_transaction_set_payload(trans, payload, strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
740 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
741 msn_cmdproc_send_trans(cmdproc, trans); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
742 #endif |
14192 | 743 } |
744 | |
745 static void | |
746 add_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
747 { | |
748 MsnSession *session; | |
749 GaimAccount *account; | |
750 GaimConnection *gc; | |
751 const char *list, *passport; | |
752 char *reason = NULL; | |
753 char *msg = NULL; | |
754 char **params; | |
755 | |
756 session = cmdproc->session; | |
757 account = session->account; | |
758 gc = gaim_account_get_connection(account); | |
759 params = g_strsplit(trans->params, " ", 0); | |
760 | |
761 list = params[0]; | |
762 passport = params[1]; | |
763 | |
764 if (!strcmp(list, "FL")) | |
765 msg = g_strdup_printf(_("Unable to add user on %s (%s)"), | |
766 gaim_account_get_username(account), | |
767 gaim_account_get_protocol_name(account)); | |
768 else if (!strcmp(list, "BL")) | |
769 msg = g_strdup_printf(_("Unable to block user on %s (%s)"), | |
770 gaim_account_get_username(account), | |
771 gaim_account_get_protocol_name(account)); | |
772 else if (!strcmp(list, "AL")) | |
773 msg = g_strdup_printf(_("Unable to permit user on %s (%s)"), | |
774 gaim_account_get_username(account), | |
775 gaim_account_get_protocol_name(account)); | |
776 | |
777 if (!strcmp(list, "FL")) | |
778 { | |
779 if (error == 210) | |
780 { | |
781 reason = g_strdup_printf(_("%s could not be added because " | |
782 "your buddy list is full."), passport); | |
783 } | |
784 } | |
785 | |
786 if (reason == NULL) | |
787 { | |
788 if (error == 208) | |
789 { | |
790 reason = g_strdup_printf(_("%s is not a valid passport account."), | |
791 passport); | |
792 } | |
793 else if (error == 500) | |
794 { | |
795 reason = g_strdup(_("Service Temporarily Unavailable.")); | |
796 } | |
797 else | |
798 { | |
799 reason = g_strdup(_("Unknown error.")); | |
800 } | |
801 } | |
802 | |
803 if (msg != NULL) | |
804 { | |
805 gaim_notify_error(gc, NULL, msg, reason); | |
806 g_free(msg); | |
807 } | |
808 | |
809 if (!strcmp(list, "FL")) | |
810 { | |
811 GaimBuddy *buddy; | |
812 | |
813 buddy = gaim_find_buddy(account, passport); | |
814 | |
815 if (buddy != NULL) | |
816 gaim_blist_remove_buddy(buddy); | |
817 } | |
818 | |
819 g_free(reason); | |
820 | |
821 g_strfreev(params); | |
822 } | |
823 | |
824 static void | |
825 adg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
826 { | |
827 MsnSession *session; | |
828 gint group_id; | |
829 const char *group_name; | |
830 | |
831 session = cmdproc->session; | |
832 | |
833 group_id = atoi(cmd->params[3]); | |
834 | |
835 group_name = gaim_url_decode(cmd->params[2]); | |
836 | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
837 msn_group_new(session->userlist, cmd->params[3], group_name); |
14192 | 838 |
839 /* There is a user that must me moved to this group */ | |
840 if (cmd->trans->data) | |
841 { | |
842 /* msn_userlist_move_buddy(); */ | |
843 MsnUserList *userlist = cmdproc->session->userlist; | |
844 MsnMoveBuddy *data = cmd->trans->data; | |
845 | |
846 if (data->old_group_name != NULL) | |
847 { | |
848 msn_userlist_rem_buddy(userlist, data->who, MSN_LIST_FL, data->old_group_name); | |
849 g_free(data->old_group_name); | |
850 } | |
851 | |
852 msn_userlist_add_buddy(userlist, data->who, MSN_LIST_FL, group_name); | |
853 g_free(data->who); | |
854 | |
855 } | |
856 } | |
857 | |
858 static void | |
859 fln_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
860 { | |
861 MsnSlpLink *slplink; | |
862 MsnUser *user; | |
863 | |
864 user = msn_userlist_find_user(cmdproc->session->userlist, cmd->params[0]); | |
865 | |
866 user->status = "offline"; | |
867 msn_user_update(user); | |
868 | |
869 slplink = msn_session_find_slplink(cmdproc->session, cmd->params[0]); | |
870 | |
871 if (slplink != NULL) | |
872 msn_slplink_destroy(slplink); | |
873 | |
874 } | |
875 | |
876 static void | |
877 iln_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
878 { | |
879 MsnSession *session; | |
880 GaimAccount *account; | |
881 GaimConnection *gc; | |
882 MsnUser *user; | |
883 MsnObject *msnobj; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
884 int wlmclient; |
14192 | 885 const char *state, *passport, *friendly; |
886 | |
887 session = cmdproc->session; | |
888 account = session->account; | |
889 gc = gaim_account_get_connection(account); | |
890 | |
891 state = cmd->params[1]; | |
892 passport = cmd->params[2]; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
893 /*if a contact is actually on the WLM part or the yahoo part*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
894 wlmclient = atoi(cmd->params[3]); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
895 friendly = gaim_url_decode(cmd->params[4]); |
14192 | 896 |
897 user = msn_userlist_find_user(session->userlist, passport); | |
898 | |
899 serv_got_alias(gc, passport, friendly); | |
900 | |
901 msn_user_set_friendly_name(user, friendly); | |
902 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
903 if (session->protocol_ver >= 9 && cmd->param_count == 8){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
904 msnobj = msn_object_new_from_string(gaim_url_decode(cmd->params[6])); |
14192 | 905 msn_user_set_object(user, msnobj); |
906 } | |
907 | |
908 msn_user_set_state(user, state); | |
909 msn_user_update(user); | |
910 } | |
911 | |
912 static void | |
913 ipg_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, size_t len) | |
914 { | |
915 #if 0 | |
916 gaim_debug_misc("msn", "Incoming Page: {%s}\n", payload); | |
917 #endif | |
918 } | |
919 | |
920 static void | |
921 ipg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
922 { | |
923 cmdproc->servconn->payload_len = atoi(cmd->params[0]); | |
924 cmdproc->last_cmd->payload_cb = ipg_cmd_post; | |
925 } | |
926 | |
927 static void | |
928 nln_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
929 { | |
930 MsnSession *session; | |
931 GaimAccount *account; | |
932 GaimConnection *gc; | |
933 MsnUser *user; | |
934 MsnObject *msnobj; | |
935 int clientid; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
936 int wlmclient; |
14484
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
937 const char *state, *passport, *friendly, *old_friendly; |
14192 | 938 |
939 session = cmdproc->session; | |
940 account = session->account; | |
941 gc = gaim_account_get_connection(account); | |
942 | |
943 state = cmd->params[0]; | |
944 passport = cmd->params[1]; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
945 wlmclient = atoi(cmd->params[2]); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
946 friendly = gaim_url_decode(cmd->params[3]); |
14192 | 947 |
948 user = msn_userlist_find_user(session->userlist, passport); | |
949 | |
14484
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
950 old_friendly = msn_user_get_friendly_name(user); |
14494
0aa6adcdd819
[gaim-migrate @ 17213]
Richard Laager <rlaager@wiktel.com>
parents:
14484
diff
changeset
|
951 if (!old_friendly || (old_friendly && strcmp(old_friendly, friendly))) |
14484
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
952 { |
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
953 serv_got_alias(gc, passport, friendly); |
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
954 msn_user_set_friendly_name(user, friendly); |
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
955 } |
14192 | 956 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
957 if (session->protocol_ver >= 9){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
958 if (cmd->param_count == 7){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
959 msnobj = msn_object_new_from_string(gaim_url_decode(cmd->params[5])); |
14192 | 960 msn_user_set_object(user, msnobj); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
961 }else{ |
14192 | 962 msn_user_set_object(user, NULL); |
963 } | |
964 } | |
965 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
966 clientid = atoi(cmd->params[4]); |
14192 | 967 user->mobile = (clientid & MSN_CLIENT_CAP_MSNMOBILE); |
968 | |
969 msn_user_set_state(user, state); | |
970 msn_user_update(user); | |
971 } | |
972 | |
973 #if 0 | |
974 static void | |
975 chg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
976 { | |
977 char *state = cmd->params[1]; | |
978 int state_id = 0; | |
979 | |
980 if (!strcmp(state, "NLN")) | |
981 state_id = MSN_ONLINE; | |
982 else if (!strcmp(state, "BSY")) | |
983 state_id = MSN_BUSY; | |
984 else if (!strcmp(state, "IDL")) | |
985 state_id = MSN_IDLE; | |
986 else if (!strcmp(state, "BRB")) | |
987 state_id = MSN_BRB; | |
988 else if (!strcmp(state, "AWY")) | |
989 state_id = MSN_AWAY; | |
990 else if (!strcmp(state, "PHN")) | |
991 state_id = MSN_PHONE; | |
992 else if (!strcmp(state, "LUN")) | |
993 state_id = MSN_LUNCH; | |
994 else if (!strcmp(state, "HDN")) | |
995 state_id = MSN_HIDDEN; | |
996 | |
997 cmdproc->session->state = state_id; | |
998 } | |
999 #endif | |
1000 | |
1001 | |
1002 static void | |
1003 not_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, size_t len) | |
1004 { | |
1005 #if 0 | |
1006 MSN_SET_PARAMS("NOT %d\r\n%s", cmdproc->servconn->payload, payload); | |
1007 gaim_debug_misc("msn", "Notification: {%s}\n", payload); | |
1008 #endif | |
1009 } | |
1010 | |
1011 static void | |
1012 not_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1013 { | |
1014 cmdproc->servconn->payload_len = atoi(cmd->params[0]); | |
1015 cmdproc->last_cmd->payload_cb = not_cmd_post; | |
1016 } | |
1017 | |
1018 static void | |
1019 rea_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1020 { | |
1021 /* TODO: This might be for us too */ | |
1022 | |
1023 MsnSession *session; | |
1024 GaimConnection *gc; | |
1025 const char *friendly; | |
1026 | |
1027 session = cmdproc->session; | |
1028 gc = session->account->gc; | |
1029 friendly = gaim_url_decode(cmd->params[3]); | |
1030 | |
1031 gaim_connection_set_display_name(gc, friendly); | |
1032 } | |
1033 | |
1034 static void | |
1035 prp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1036 { | |
1037 MsnSession *session = cmdproc->session; | |
1038 const char *type, *value; | |
1039 | |
1040 g_return_if_fail(cmd->param_count >= 3); | |
1041 | |
1042 type = cmd->params[2]; | |
1043 | |
1044 if (cmd->param_count == 4) | |
1045 { | |
1046 value = cmd->params[3]; | |
1047 if (!strcmp(type, "PHH")) | |
1048 msn_user_set_home_phone(session->user, gaim_url_decode(value)); | |
1049 else if (!strcmp(type, "PHW")) | |
1050 msn_user_set_work_phone(session->user, gaim_url_decode(value)); | |
1051 else if (!strcmp(type, "PHM")) | |
1052 msn_user_set_mobile_phone(session->user, gaim_url_decode(value)); | |
1053 } | |
1054 else | |
1055 { | |
1056 if (!strcmp(type, "PHH")) | |
1057 msn_user_set_home_phone(session->user, NULL); | |
1058 else if (!strcmp(type, "PHW")) | |
1059 msn_user_set_work_phone(session->user, NULL); | |
1060 else if (!strcmp(type, "PHM")) | |
1061 msn_user_set_mobile_phone(session->user, NULL); | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1062 else if (!strcmp(type, "MFM")) { |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1063 type = cmd->params[1]; |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1064 gaim_connection_set_display_name( |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1065 gaim_account_get_connection(session->account), |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1066 gaim_url_decode(cmd->params[2])); |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1067 } |
14192 | 1068 } |
1069 } | |
1070 | |
1071 static void | |
1072 reg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1073 { | |
1074 MsnSession *session; | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1075 const char *group_id, *group_name; |
14192 | 1076 |
1077 session = cmdproc->session; | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1078 group_id = cmd->params[2]; |
14192 | 1079 group_name = gaim_url_decode(cmd->params[3]); |
1080 | |
1081 msn_userlist_rename_group_id(session->userlist, group_id, group_name); | |
1082 } | |
1083 | |
1084 static void | |
1085 reg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
1086 { | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1087 const char * group_id; |
14192 | 1088 char **params; |
1089 | |
1090 params = g_strsplit(trans->params, " ", 0); | |
1091 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1092 group_id = params[0]; |
14192 | 1093 |
1094 group_error_helper(cmdproc->session, _("Unable to rename group"), group_id, error); | |
1095 | |
1096 g_strfreev(params); | |
1097 } | |
1098 | |
1099 static void | |
1100 rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1101 { | |
1102 MsnSession *session; | |
1103 MsnUser *user; | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1104 const char *group_id, *list, *passport; |
14192 | 1105 MsnListId list_id; |
1106 | |
1107 session = cmdproc->session; | |
1108 list = cmd->params[1]; | |
1109 passport = cmd->params[3]; | |
1110 user = msn_userlist_find_user(session->userlist, passport); | |
1111 | |
1112 g_return_if_fail(user != NULL); | |
1113 | |
1114 list_id = msn_get_list_id(list); | |
1115 | |
1116 if (cmd->param_count == 5) | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1117 group_id = cmd->params[4]; |
14192 | 1118 else |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1119 group_id = NULL; |
14192 | 1120 |
1121 msn_got_rem_user(session, user, list_id, group_id); | |
1122 msn_user_update(user); | |
1123 } | |
1124 | |
1125 static void | |
1126 rmg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1127 { | |
1128 MsnSession *session; | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1129 const char *group_id; |
14192 | 1130 |
1131 session = cmdproc->session; | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1132 group_id = cmd->params[2]; |
14192 | 1133 |
1134 msn_userlist_remove_group_id(session->userlist, group_id); | |
1135 } | |
1136 | |
1137 static void | |
1138 rmg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
1139 { | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1140 const char *group_id; |
14192 | 1141 char **params; |
1142 | |
1143 params = g_strsplit(trans->params, " ", 0); | |
1144 | |
1145 group_id = atoi(params[0]); | |
1146 | |
1147 group_error_helper(cmdproc->session, _("Unable to delete group"), group_id, error); | |
1148 | |
1149 g_strfreev(params); | |
1150 } | |
1151 | |
1152 static void | |
1153 syn_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1154 { | |
1155 MsnSession *session; | |
1156 int total_users; | |
1157 | |
1158 session = cmdproc->session; | |
1159 | |
1160 if (cmd->param_count == 2) | |
1161 { | |
1162 /* | |
1163 * This can happen if we sent a SYN with an up-to-date | |
1164 * buddy list revision, but we send 0 to get a full list. | |
1165 * So, error out. | |
1166 */ | |
1167 | |
1168 msn_session_set_error(cmdproc->session, MSN_ERROR_BAD_BLIST, NULL); | |
1169 return; | |
1170 } | |
1171 | |
1172 total_users = atoi(cmd->params[2]); | |
1173 | |
1174 if (total_users == 0) | |
1175 { | |
1176 msn_session_finish_login(session); | |
1177 } | |
1178 else | |
1179 { | |
1180 /* syn_table */ | |
1181 MsnSync *sync; | |
1182 | |
1183 sync = msn_sync_new(session); | |
1184 sync->total_users = total_users; | |
1185 sync->old_cbs_table = cmdproc->cbs_table; | |
1186 | |
1187 session->sync = sync; | |
1188 cmdproc->cbs_table = sync->cbs_table; | |
1189 } | |
1190 } | |
1191 | |
1192 /************************************************************************** | |
1193 * Misc commands | |
1194 **************************************************************************/ | |
1195 | |
1196 static void | |
1197 url_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1198 { | |
1199 MsnSession *session; | |
1200 GaimAccount *account; | |
1201 const char *rru; | |
1202 const char *url; | |
1203 GaimCipher *cipher; | |
1204 GaimCipherContext *context; | |
1205 guchar digest[16]; | |
1206 FILE *fd; | |
1207 char *buf; | |
1208 char buf2[3]; | |
1209 char sendbuf[64]; | |
1210 int i; | |
1211 | |
1212 session = cmdproc->session; | |
1213 account = session->account; | |
1214 | |
1215 rru = cmd->params[1]; | |
1216 url = cmd->params[2]; | |
1217 | |
1218 buf = g_strdup_printf("%s%lu%s", | |
1219 session->passport_info.mspauth, | |
1220 time(NULL) - session->passport_info.sl, | |
1221 gaim_connection_get_password(account->gc)); | |
1222 | |
1223 cipher = gaim_ciphers_find_cipher("md5"); | |
1224 context = gaim_cipher_context_new(cipher, NULL); | |
1225 | |
1226 gaim_cipher_context_append(context, (const guchar *)buf, strlen(buf)); | |
1227 gaim_cipher_context_digest(context, sizeof(digest), digest, NULL); | |
1228 gaim_cipher_context_destroy(context); | |
1229 | |
1230 g_free(buf); | |
1231 | |
1232 memset(sendbuf, 0, sizeof(sendbuf)); | |
1233 | |
1234 for (i = 0; i < 16; i++) | |
1235 { | |
1236 g_snprintf(buf2, sizeof(buf2), "%02x", digest[i]); | |
1237 strcat(sendbuf, buf2); | |
1238 } | |
1239 | |
1240 if (session->passport_info.file != NULL) | |
1241 { | |
1242 g_unlink(session->passport_info.file); | |
1243 g_free(session->passport_info.file); | |
1244 } | |
1245 | |
1246 if ((fd = gaim_mkstemp(&session->passport_info.file, FALSE)) == NULL) | |
1247 { | |
1248 gaim_debug_error("msn", | |
1249 "Error opening temp passport file: %s\n", | |
1250 strerror(errno)); | |
1251 } | |
1252 else | |
1253 { | |
1254 fputs("<html>\n" | |
1255 "<head>\n" | |
1256 "<noscript>\n" | |
1257 "<meta http-equiv=\"Refresh\" content=\"0; " | |
1258 "url=http://www.hotmail.com\">\n" | |
1259 "</noscript>\n" | |
1260 "</head>\n\n", | |
1261 fd); | |
1262 | |
1263 fprintf(fd, "<body onload=\"document.pform.submit(); \">\n"); | |
1264 fprintf(fd, "<form name=\"pform\" action=\"%s\" method=\"POST\">\n\n", | |
1265 url); | |
1266 fprintf(fd, "<input type=\"hidden\" name=\"mode\" value=\"ttl\">\n"); | |
1267 fprintf(fd, "<input type=\"hidden\" name=\"login\" value=\"%s\">\n", | |
1268 gaim_account_get_username(account)); | |
1269 fprintf(fd, "<input type=\"hidden\" name=\"username\" value=\"%s\">\n", | |
1270 gaim_account_get_username(account)); | |
14602 | 1271 if (session->passport_info.sid != NULL) |
1272 fprintf(fd, "<input type=\"hidden\" name=\"sid\" value=\"%s\">\n", | |
1273 session->passport_info.sid); | |
1274 if (session->passport_info.kv != NULL) | |
1275 fprintf(fd, "<input type=\"hidden\" name=\"kv\" value=\"%s\">\n", | |
1276 session->passport_info.kv); | |
14192 | 1277 fprintf(fd, "<input type=\"hidden\" name=\"id\" value=\"2\">\n"); |
1278 fprintf(fd, "<input type=\"hidden\" name=\"sl\" value=\"%ld\">\n", | |
1279 time(NULL) - session->passport_info.sl); | |
1280 fprintf(fd, "<input type=\"hidden\" name=\"rru\" value=\"%s\">\n", | |
1281 rru); | |
14602 | 1282 if (session->passport_info.mspauth != NULL) |
1283 fprintf(fd, "<input type=\"hidden\" name=\"auth\" value=\"%s\">\n", | |
1284 session->passport_info.mspauth); | |
14192 | 1285 fprintf(fd, "<input type=\"hidden\" name=\"creds\" value=\"%s\">\n", |
1286 sendbuf); /* TODO Digest me (huh? -- ChipX86) */ | |
1287 fprintf(fd, "<input type=\"hidden\" name=\"svc\" value=\"mail\">\n"); | |
1288 fprintf(fd, "<input type=\"hidden\" name=\"js\" value=\"yes\">\n"); | |
1289 fprintf(fd, "</form></body>\n"); | |
1290 fprintf(fd, "</html>\n"); | |
1291 | |
1292 if (fclose(fd)) | |
1293 { | |
1294 gaim_debug_error("msn", | |
1295 "Error closing temp passport file: %s\n", | |
1296 strerror(errno)); | |
1297 | |
1298 g_unlink(session->passport_info.file); | |
1299 g_free(session->passport_info.file); | |
1300 session->passport_info.file = NULL; | |
1301 } | |
1302 #ifdef _WIN32 | |
1303 else | |
1304 { | |
1305 /* | |
1306 * Renaming file with .html extension, so that the | |
1307 * win32 open_url will work. | |
1308 */ | |
1309 char *tmp; | |
1310 | |
1311 if ((tmp = | |
1312 g_strdup_printf("%s.html", | |
1313 session->passport_info.file)) != NULL) | |
1314 { | |
1315 if (g_rename(session->passport_info.file, | |
1316 tmp) == 0) | |
1317 { | |
1318 g_free(session->passport_info.file); | |
1319 session->passport_info.file = tmp; | |
1320 } | |
1321 else | |
1322 g_free(tmp); | |
1323 } | |
1324 } | |
1325 #endif | |
1326 } | |
1327 } | |
1328 /************************************************************************** | |
1329 * Switchboards | |
1330 **************************************************************************/ | |
1331 | |
1332 static void | |
1333 rng_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1334 { | |
1335 MsnSession *session; | |
1336 MsnSwitchBoard *swboard; | |
1337 const char *session_id; | |
1338 char *host; | |
1339 int port; | |
1340 | |
1341 session = cmdproc->session; | |
1342 session_id = cmd->params[0]; | |
1343 | |
1344 msn_parse_socket(cmd->params[1], &host, &port); | |
1345 | |
1346 if (session->http_method) | |
1347 port = 80; | |
1348 | |
1349 swboard = msn_switchboard_new(session); | |
1350 | |
1351 msn_switchboard_set_invited(swboard, TRUE); | |
1352 msn_switchboard_set_session_id(swboard, cmd->params[0]); | |
1353 msn_switchboard_set_auth_key(swboard, cmd->params[3]); | |
1354 swboard->im_user = g_strdup(cmd->params[4]); | |
1355 /* msn_switchboard_add_user(swboard, cmd->params[4]); */ | |
1356 | |
1357 if (!msn_switchboard_connect(swboard, host, port)) | |
1358 msn_switchboard_destroy(swboard); | |
1359 | |
1360 g_free(host); | |
1361 } | |
1362 | |
1363 static void | |
1364 xfr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1365 { | |
1366 char *host; | |
1367 int port; | |
1368 | |
1369 if (strcmp(cmd->params[1], "SB") && strcmp(cmd->params[1], "NS")) | |
1370 { | |
1371 /* Maybe we can have a generic bad command error. */ | |
1372 gaim_debug_error("msn", "Bad XFR command (%s)\n", cmd->params[1]); | |
1373 return; | |
1374 } | |
1375 | |
1376 msn_parse_socket(cmd->params[2], &host, &port); | |
1377 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1378 if (!strcmp(cmd->params[1], "SB")){ |
14192 | 1379 gaim_debug_error("msn", "This shouldn't be handled here.\n"); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1380 }else if (!strcmp(cmd->params[1], "NS")){ |
14192 | 1381 MsnSession *session; |
1382 | |
1383 session = cmdproc->session; | |
1384 | |
1385 msn_session_set_login_step(session, MSN_LOGIN_STEP_TRANSFER); | |
1386 | |
1387 msn_notification_connect(session->notification, host, port); | |
1388 } | |
1389 | |
1390 g_free(host); | |
1391 } | |
1392 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1393 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1394 gcf_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1395 size_t len) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1396 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1397 /*get the payload content*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1398 gaim_debug_info("MaYuan","GCF{%s}\n",cmd->payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1399 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1400 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1401 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1402 gcf_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1403 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1404 gaim_debug_info("MaYuan","Processing GCF... \n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1405 cmdproc->last_cmd->payload_cb = gcf_cmd_post; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1406 return; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1407 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1408 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1409 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1410 sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1411 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1412 gaim_debug_info("MaYuan","Processing SBS... \n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1413 if(cmd->payload_len == 0){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1414 return; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1415 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1416 /*get the payload content*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1417 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1418 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1419 /* |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1420 * Get the UBX's PSM info |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1421 * Post it to the User status |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1422 * Thanks for Chris <ukdrizzle@yahoo.co.uk>'s code |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1423 */ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1424 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1425 ubx_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1426 size_t len) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1427 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1428 MsnSession *session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1429 GaimAccount *account; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1430 GaimConnection *gc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1431 MsnUser *user; |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1432 const char *passport; |
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1433 char *psm_str; |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1434 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1435 /*get the payload content*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1436 // gaim_debug_info("MaYuan","UBX {%s} payload{%s}\n",cmd->params[0], cmd->payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1437 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1438 session = cmdproc->session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1439 account = session->account; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1440 gc = gaim_account_get_connection(account); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1441 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1442 passport = cmd->params[0]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1443 user = msn_userlist_find_user(session->userlist, passport); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1444 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1445 psm_str = msn_get_psm(cmd->payload,len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1446 msn_user_set_statusline(user, psm_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1447 msn_user_update(user); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1448 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1449 g_free(psm_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1450 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1451 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1452 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1453 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1454 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1455 gaim_debug_info("MaYuan","UBX... \n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1456 if(cmd->payload_len == 0){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1457 return; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1458 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1459 cmdproc->last_cmd->payload_cb = ubx_cmd_post; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1460 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1461 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1462 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1463 uux_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1464 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1465 gaim_debug_info("MaYuan","UUX... \n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1466 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1467 |
14192 | 1468 /************************************************************************** |
1469 * Message Types | |
1470 **************************************************************************/ | |
1471 | |
1472 static void | |
1473 profile_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | |
1474 { | |
1475 MsnSession *session; | |
1476 const char *value; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1477 const char *clLastChange; |
14192 | 1478 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1479 gaim_debug_info("MaYuan","profile_msg... \n"); |
14192 | 1480 session = cmdproc->session; |
1481 | |
1482 if (strcmp(msg->remote_user, "Hotmail")) | |
1483 /* This isn't an official message. */ | |
1484 return; | |
1485 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1486 if ((value = msn_message_get_attr(msg, "kv")) != NULL){ |
14192 | 1487 if (session->passport_info.kv != NULL) |
1488 g_free(session->passport_info.kv); | |
1489 | |
1490 session->passport_info.kv = g_strdup(value); | |
1491 } | |
1492 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1493 if ((value = msn_message_get_attr(msg, "sid")) != NULL){ |
14192 | 1494 if (session->passport_info.sid != NULL) |
1495 g_free(session->passport_info.sid); | |
1496 | |
1497 session->passport_info.sid = g_strdup(value); | |
1498 } | |
1499 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1500 if ((value = msn_message_get_attr(msg, "MSPAuth")) != NULL){ |
14192 | 1501 if (session->passport_info.mspauth != NULL) |
1502 g_free(session->passport_info.mspauth); | |
1503 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1504 gaim_debug_info("MaYuan","MSPAuth:%s\n",value); |
14192 | 1505 session->passport_info.mspauth = g_strdup(value); |
1506 } | |
1507 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1508 if ((value = msn_message_get_attr(msg, "ClientIP")) != NULL){ |
14192 | 1509 if (session->passport_info.client_ip != NULL) |
1510 g_free(session->passport_info.client_ip); | |
1511 | |
1512 session->passport_info.client_ip = g_strdup(value); | |
1513 } | |
1514 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1515 if ((value = msn_message_get_attr(msg, "ClientPort")) != NULL){ |
14192 | 1516 session->passport_info.client_port = ntohs(atoi(value)); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1517 } |
14192 | 1518 |
1519 if ((value = msn_message_get_attr(msg, "LoginTime")) != NULL) | |
1520 session->passport_info.sl = atol(value); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1521 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1522 /*starting retrieve the contact list*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1523 msn_userlist_load(session); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1524 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1525 msn_session_set_bnode(session); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1526 session->contact = msn_contact_new(session); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1527 clLastChange = gaim_blist_node_get_string(msn_session_get_bnode(session),"CLLastChange"); |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1528 msn_get_contact_list(session->contact, clLastChange); |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1529 // msn_contact_connect(session->contact); |
14192 | 1530 } |
1531 | |
1532 static void | |
1533 initial_email_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | |
1534 { | |
1535 MsnSession *session; | |
1536 GaimConnection *gc; | |
1537 GHashTable *table; | |
1538 const char *unread; | |
1539 | |
1540 session = cmdproc->session; | |
1541 gc = session->account->gc; | |
1542 | |
1543 if (strcmp(msg->remote_user, "Hotmail")) | |
1544 /* This isn't an official message. */ | |
1545 return; | |
1546 | |
1547 if (session->passport_info.file == NULL) | |
1548 { | |
1549 MsnTransaction *trans; | |
1550 trans = msn_transaction_new(cmdproc, "URL", "%s", "INBOX"); | |
1551 msn_transaction_queue_cmd(trans, msg->cmd); | |
1552 | |
1553 msn_cmdproc_send_trans(cmdproc, trans); | |
1554 | |
1555 return; | |
1556 } | |
1557 | |
1558 if (!gaim_account_get_check_mail(session->account)) | |
1559 return; | |
1560 | |
1561 table = msn_message_get_hashtable_from_body(msg); | |
1562 | |
1563 unread = g_hash_table_lookup(table, "Inbox-Unread"); | |
1564 | |
1565 if (unread != NULL) | |
1566 { | |
1567 int count = atoi(unread); | |
1568 | |
1569 if (count > 0) | |
1570 { | |
1571 const char *passport; | |
1572 const char *url; | |
1573 | |
1574 passport = msn_user_get_passport(session->user); | |
1575 url = session->passport_info.file; | |
1576 | |
1577 gaim_notify_emails(gc, atoi(unread), FALSE, NULL, NULL, | |
1578 &passport, &url, NULL, NULL); | |
1579 } | |
1580 } | |
1581 | |
1582 g_hash_table_destroy(table); | |
1583 } | |
1584 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1585 /*offline Message notification process*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1586 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1587 initial_mdata_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1588 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1589 MsnSession *session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1590 char **elems, **cur, **tokens; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1591 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1592 // gaim_debug_info("MaYuan","mdata...{%s} \n",msg->body); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1593 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1594 // /*time debug*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1595 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1596 const char *timestr; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1597 time_t t; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1598 struct tm *tm; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1599 char datestr[]="2006-07-15T07:21:26+0700"; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1600 GDate *date; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1601 time(&t); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1602 tm = gmtime(&t); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1603 timestr = gaim_utf8_strftime("%a, %d %b %Y %T %Z", tm); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1604 // strftime(datestr,strlen(datestr),"%a",tm); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1605 date = g_date_new(); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1606 g_date_set_parse(date,datestr); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1607 gaim_debug_info("MaYuan","date is NULL?date valid%d\n",g_date_valid(date)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1608 g_date_free(date); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1609 gaim_debug_info("MaYuan","utf8 time:{%s}\n",timestr); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1610 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1611 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1612 /*new a oim session*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1613 session = cmdproc->session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1614 session->oim = msn_oim_new(session); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1615 // msn_oim_connect(session->oim); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1616 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1617 /*parse offline message data*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1618 elems = g_strsplit(msg->body, "\r\n", 0); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1619 for (cur = elems; *cur != NULL; cur++){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1620 const char *key, *value; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1621 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1622 // gaim_debug_info("MaYuan","cur:{%s}\n",*cur); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1623 tokens = g_strsplit(*cur, ": ", 2); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1624 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1625 key = tokens[0]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1626 value = tokens[1]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1627 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1628 /*if not MIME content ,then return*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1629 if ((key != NULL) && (!strcmp(key, "Mail-Data")) ){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1630 // gaim_debug_info("MaYuan","data:{%s}\n",value); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1631 msn_parse_oim_msg(session->oim,value); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1632 g_strfreev(tokens); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1633 break; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1634 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1635 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1636 g_strfreev(tokens); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1637 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1638 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1639 g_strfreev(elems); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1640 /* test code for add group*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1641 // msn_add_group(session,"hello"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1642 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1643 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1644 /*offline Message Notification*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1645 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1646 delete_oim_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1647 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1648 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1649 |
14192 | 1650 static void |
1651 email_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | |
1652 { | |
1653 MsnSession *session; | |
1654 GaimConnection *gc; | |
1655 GHashTable *table; | |
1656 char *from, *subject, *tmp; | |
1657 | |
1658 session = cmdproc->session; | |
1659 gc = session->account->gc; | |
1660 | |
1661 if (strcmp(msg->remote_user, "Hotmail")) | |
1662 /* This isn't an official message. */ | |
1663 return; | |
1664 | |
1665 if (session->passport_info.file == NULL) | |
1666 { | |
1667 MsnTransaction *trans; | |
1668 trans = msn_transaction_new(cmdproc, "URL", "%s", "INBOX"); | |
1669 msn_transaction_queue_cmd(trans, msg->cmd); | |
1670 | |
1671 msn_cmdproc_send_trans(cmdproc, trans); | |
1672 | |
1673 return; | |
1674 } | |
1675 | |
1676 if (!gaim_account_get_check_mail(session->account)) | |
1677 return; | |
1678 | |
1679 table = msn_message_get_hashtable_from_body(msg); | |
1680 | |
1681 from = subject = NULL; | |
1682 | |
1683 tmp = g_hash_table_lookup(table, "From"); | |
1684 if (tmp != NULL) | |
1685 from = gaim_mime_decode_field(tmp); | |
1686 | |
1687 tmp = g_hash_table_lookup(table, "Subject"); | |
1688 if (tmp != NULL) | |
1689 subject = gaim_mime_decode_field(tmp); | |
1690 | |
1691 gaim_notify_email(gc, | |
1692 (subject != NULL ? subject : ""), | |
1693 (from != NULL ? from : ""), | |
1694 msn_user_get_passport(session->user), | |
1695 session->passport_info.file, NULL, NULL); | |
1696 | |
1697 if (from != NULL) | |
1698 g_free(from); | |
1699 | |
1700 if (subject != NULL) | |
1701 g_free(subject); | |
1702 | |
1703 g_hash_table_destroy(table); | |
1704 } | |
1705 | |
1706 static void | |
1707 system_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | |
1708 { | |
1709 GHashTable *table; | |
1710 const char *type_s; | |
1711 | |
1712 if (strcmp(msg->remote_user, "Hotmail")) | |
1713 /* This isn't an official message. */ | |
1714 return; | |
1715 | |
1716 table = msn_message_get_hashtable_from_body(msg); | |
1717 | |
1718 if ((type_s = g_hash_table_lookup(table, "Type")) != NULL) | |
1719 { | |
1720 int type = atoi(type_s); | |
1721 char buf[MSN_BUF_LEN]; | |
1722 int minutes; | |
1723 | |
1724 switch (type) | |
1725 { | |
1726 case 1: | |
1727 minutes = atoi(g_hash_table_lookup(table, "Arg1")); | |
1728 g_snprintf(buf, sizeof(buf), ngettext( | |
1729 "The MSN server will shut down for maintenance " | |
1730 "in %d minute. You will automatically be " | |
1731 "signed out at that time. Please finish any " | |
1732 "conversations in progress.\n\nAfter the " | |
1733 "maintenance has been completed, you will be " | |
1734 "able to successfully sign in.", | |
1735 "The MSN server will shut down for maintenance " | |
1736 "in %d minutes. You will automatically be " | |
1737 "signed out at that time. Please finish any " | |
1738 "conversations in progress.\n\nAfter the " | |
1739 "maintenance has been completed, you will be " | |
1740 "able to successfully sign in.", minutes), | |
1741 minutes); | |
1742 default: | |
1743 break; | |
1744 } | |
1745 | |
1746 if (*buf != '\0') | |
1747 gaim_notify_info(cmdproc->session->account->gc, NULL, buf, NULL); | |
1748 } | |
1749 | |
1750 g_hash_table_destroy(table); | |
1751 } | |
1752 | |
1753 void | |
1754 msn_notification_add_buddy(MsnNotification *notification, const char *list, | |
1755 const char *who, const char *store_name, | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1756 const char *group_id) |
14192 | 1757 { |
1758 MsnCmdProc *cmdproc; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1759 xmlnode *adl_node; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1760 char *payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1761 int payload_len; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1762 |
14192 | 1763 cmdproc = notification->servconn->cmdproc; |
1764 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1765 if (strcmp(list, "FL") != 0){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1766 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1767 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1768 adl_node = xmlnode_new("ml"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1769 adl_node->child = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1770 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1771 msn_add_contact_xml(adl_node,who,1,1); |
14192 | 1772 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1773 payload = xmlnode_to_str(adl_node,&payload_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1774 xmlnode_free(adl_node); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1775 if(msn_user_is_yahoo(notification->session->account,who)){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1776 msn_notification_fqy_yahoo(notification->session, who); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1777 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1778 msn_notification_post_adl(notification->servconn->cmdproc, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1779 payload,payload_len); |
14192 | 1780 } |
1781 } | |
1782 | |
1783 void | |
1784 msn_notification_rem_buddy(MsnNotification *notification, const char *list, | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1785 const char *who, const char *group_id) |
14192 | 1786 { |
1787 MsnCmdProc *cmdproc; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1788 MsnTransaction *trans; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1789 xmlnode *rml_node; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1790 char *payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1791 int payload_len; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1792 |
14192 | 1793 cmdproc = notification->servconn->cmdproc; |
1794 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1795 rml_node = xmlnode_new("ml"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1796 rml_node->child = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1797 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1798 msn_add_contact_xml(rml_node,who,1,1); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1799 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1800 payload = xmlnode_to_str(rml_node,&payload_len); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1801 xmlnode_free(rml_node); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1802 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1803 gaim_debug_info("MaYuan","RML{%s}\n",payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1804 trans = msn_transaction_new(cmdproc, "RML","%d",strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1805 msn_transaction_set_payload(trans, payload, strlen(payload)); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1806 msn_cmdproc_send_trans(cmdproc, trans); |
14192 | 1807 } |
1808 | |
1809 /************************************************************************** | |
1810 * Init | |
1811 **************************************************************************/ | |
1812 void | |
1813 msn_notification_init(void) | |
1814 { | |
1815 /* TODO: check prp, blp */ | |
1816 | |
1817 cbs_table = msn_table_new(); | |
1818 | |
1819 /* Synchronous */ | |
1820 msn_table_add_cmd(cbs_table, "CHG", "CHG", NULL); | |
1821 msn_table_add_cmd(cbs_table, "CHG", "ILN", iln_cmd); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1822 msn_table_add_cmd(cbs_table, "ADL", "ILN", iln_cmd); |
14192 | 1823 msn_table_add_cmd(cbs_table, "REM", "REM", rem_cmd); |
1824 msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd); | |
1825 msn_table_add_cmd(cbs_table, "USR", "XFR", xfr_cmd); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1826 msn_table_add_cmd(cbs_table, "USR", "GCF", gcf_cmd); |
14192 | 1827 msn_table_add_cmd(cbs_table, "SYN", "SYN", syn_cmd); |
1828 msn_table_add_cmd(cbs_table, "CVR", "CVR", cvr_cmd); | |
1829 msn_table_add_cmd(cbs_table, "VER", "VER", ver_cmd); | |
1830 msn_table_add_cmd(cbs_table, "REA", "REA", rea_cmd); | |
1831 msn_table_add_cmd(cbs_table, "PRP", "PRP", prp_cmd); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1832 msn_table_add_cmd(cbs_table, "BLP", "BLP", blp_cmd); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1833 // msn_table_add_cmd(cbs_table, "BLP", "BLP", NULL); |
14192 | 1834 msn_table_add_cmd(cbs_table, "REG", "REG", reg_cmd); |
1835 msn_table_add_cmd(cbs_table, "ADG", "ADG", adg_cmd); | |
1836 msn_table_add_cmd(cbs_table, "RMG", "RMG", rmg_cmd); | |
1837 msn_table_add_cmd(cbs_table, "XFR", "XFR", xfr_cmd); | |
1838 | |
1839 /* Asynchronous */ | |
1840 msn_table_add_cmd(cbs_table, NULL, "IPG", ipg_cmd); | |
1841 msn_table_add_cmd(cbs_table, NULL, "MSG", msg_cmd); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1842 msn_table_add_cmd(cbs_table, NULL, "UBM", ubm_cmd); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1843 msn_table_add_cmd(cbs_table, NULL, "GCF", gcf_cmd); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1844 msn_table_add_cmd(cbs_table, NULL, "SBS", sbs_cmd); |
14192 | 1845 msn_table_add_cmd(cbs_table, NULL, "NOT", not_cmd); |
1846 | |
1847 msn_table_add_cmd(cbs_table, NULL, "CHL", chl_cmd); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1848 msn_table_add_cmd(cbs_table, NULL, "RML", rml_cmd); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1849 msn_table_add_cmd(cbs_table, NULL, "ADL", adl_cmd); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1850 msn_table_add_cmd(cbs_table, NULL, "FQY", fqy_cmd); |
14192 | 1851 |
1852 msn_table_add_cmd(cbs_table, NULL, "QRY", NULL); | |
1853 msn_table_add_cmd(cbs_table, NULL, "QNG", NULL); | |
1854 msn_table_add_cmd(cbs_table, NULL, "FLN", fln_cmd); | |
1855 msn_table_add_cmd(cbs_table, NULL, "NLN", nln_cmd); | |
1856 msn_table_add_cmd(cbs_table, NULL, "ILN", iln_cmd); | |
1857 msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd); | |
1858 msn_table_add_cmd(cbs_table, NULL, "RNG", rng_cmd); | |
1859 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1860 msn_table_add_cmd(cbs_table, NULL, "UBX", ubx_cmd); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1861 msn_table_add_cmd(cbs_table, NULL, "UUX", uux_cmd); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1862 |
14192 | 1863 msn_table_add_cmd(cbs_table, NULL, "URL", url_cmd); |
1864 | |
1865 msn_table_add_cmd(cbs_table, "fallback", "XFR", xfr_cmd); | |
1866 | |
1867 msn_table_add_error(cbs_table, "ADD", add_error); | |
1868 msn_table_add_error(cbs_table, "REG", reg_error); | |
1869 msn_table_add_error(cbs_table, "RMG", rmg_error); | |
1870 /* msn_table_add_error(cbs_table, "REA", rea_error); */ | |
1871 msn_table_add_error(cbs_table, "USR", usr_error); | |
1872 | |
1873 msn_table_add_msg_type(cbs_table, | |
1874 "text/x-msmsgsprofile", | |
1875 profile_msg); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1876 /*initial OIM notification*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1877 msn_table_add_msg_type(cbs_table, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1878 "text/x-msmsgsinitialmdatanotification", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1879 initial_mdata_msg); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1880 /*OIM notification when user online*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1881 msn_table_add_msg_type(cbs_table, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1882 "text/x-msmsgsoimnotification", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1883 initial_mdata_msg); |
14192 | 1884 msn_table_add_msg_type(cbs_table, |
1885 "text/x-msmsgsinitialemailnotification", | |
1886 initial_email_msg); | |
1887 msn_table_add_msg_type(cbs_table, | |
1888 "text/x-msmsgsemailnotification", | |
1889 email_msg); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1890 /*delete an offline Message notification*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1891 msn_table_add_msg_type(cbs_table, |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1892 "text/x-msmsgsactivemailnotification", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1893 delete_oim_msg); |
14192 | 1894 msn_table_add_msg_type(cbs_table, |
1895 "application/x-msmsgssystemmessage", | |
1896 system_msg); | |
1897 } | |
1898 | |
1899 void | |
1900 msn_notification_end(void) | |
1901 { | |
1902 msn_table_destroy(cbs_table); | |
1903 } | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1904 |