Mercurial > pidgin
annotate libgaim/protocols/msn/notification.c @ 20393:40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
"A little late, but here is a version that should remember your friendly
name. Also has a fix for a crasher when MSN sends you back:
<faultstring>Need to do full sync. Can't sync deltas Client
has too old a copy for us to do a delta sync</faultstring>
In this case, I make gaim re-request the full contact list/address book.
I haven't look too deeply into the reverse list problem, but I think the
solution would involve caching the reverse list, which may require
extending the privacy api."
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sun, 15 Apr 2007 03:02:48 +0000 |
parents | 9ba7dee775e1 |
children |
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 |
20393
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
629 msn_notification_post_adl(MsnCmdProc *cmdproc, char *payload, int payload_len) |
20389
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; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
632 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
633 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
|
634 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
|
635 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
|
636 msn_cmdproc_send_trans(cmdproc, trans); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
637 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
638 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
639 /*dump contact info to NS*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
640 void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
641 msn_notification_dump_contact(MsnSession *session) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
642 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
643 MsnUserList *userlist; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
644 MsnUser *user; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
645 GList *l; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
646 xmlnode *adl_node; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
647 char *payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
648 int payload_len; |
20393
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
649 const char *display_name; |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
650 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
651 userlist = session->userlist; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
652 adl_node = xmlnode_new("ml"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
653 adl_node->child = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
654 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
|
655 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
656 /*get the userlist*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
657 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
|
658 user = l->data; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
659 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
|
660 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
661 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
662 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
|
663 xmlnode_free(adl_node); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
664 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
665 msn_notification_post_adl(session->notification->cmdproc,payload,payload_len); |
20393
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
666 |
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
667 display_name = gaim_connection_get_display_name(session->account->gc); |
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
668 if (display_name && strcmp(display_name, |
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
669 gaim_account_get_username(session->account))) { |
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
670 msn_act_id(session->account->gc, display_name); |
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
671 } |
40a04930b233
The second msn-p13-merge-head.diff.gz from SF Patch #162854 from Ka-Hing Cheung.
Richard Laager <rlaager@wiktel.com>
parents:
20392
diff
changeset
|
672 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
673 } |
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 /*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
|
676 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
|
677 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
|
678 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
679 MsnTransaction *trans; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
680 MsnCmdProc *cmdproc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
681 char* email,*domain,*payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
682 char **tokens; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
683 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
684 cmdproc = session->notification->cmdproc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
685 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
686 tokens = g_strsplit(passport, "@", 2); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
687 email = tokens[0]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
688 domain = tokens[1]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
689 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
690 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
|
691 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
|
692 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
|
693 msn_cmdproc_send_trans(cmdproc, trans); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
694 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
695 g_free(payload); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
696 g_free(tokens); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
697 } |
14192 | 698 |
699 static void | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
700 blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
701 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
702 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
|
703 } |
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 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
706 adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
14192 | 707 { |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
708 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
|
709 } |
14192 | 710 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
711 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
712 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
|
713 size_t len) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
714 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
715 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
|
716 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
|
717 } |
14192 | 718 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
719 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
720 fqy_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
721 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
722 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
|
723 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
|
724 } |
14192 | 725 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
726 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
727 rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
728 { |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
729 #if 0 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
730 MsnTransaction *trans; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
731 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
|
732 #endif |
14192 | 733 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
734 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
|
735 #if 0 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
736 trans = msn_transaction_new(cmdproc, "RML",""); |
14192 | 737 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
738 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
|
739 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
740 msn_cmdproc_send_trans(cmdproc, trans); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
741 #endif |
14192 | 742 } |
743 | |
744 static void | |
745 add_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
746 { | |
747 MsnSession *session; | |
748 GaimAccount *account; | |
749 GaimConnection *gc; | |
750 const char *list, *passport; | |
751 char *reason = NULL; | |
752 char *msg = NULL; | |
753 char **params; | |
754 | |
755 session = cmdproc->session; | |
756 account = session->account; | |
757 gc = gaim_account_get_connection(account); | |
758 params = g_strsplit(trans->params, " ", 0); | |
759 | |
760 list = params[0]; | |
761 passport = params[1]; | |
762 | |
763 if (!strcmp(list, "FL")) | |
764 msg = g_strdup_printf(_("Unable to add user on %s (%s)"), | |
765 gaim_account_get_username(account), | |
766 gaim_account_get_protocol_name(account)); | |
767 else if (!strcmp(list, "BL")) | |
768 msg = g_strdup_printf(_("Unable to block user on %s (%s)"), | |
769 gaim_account_get_username(account), | |
770 gaim_account_get_protocol_name(account)); | |
771 else if (!strcmp(list, "AL")) | |
772 msg = g_strdup_printf(_("Unable to permit user on %s (%s)"), | |
773 gaim_account_get_username(account), | |
774 gaim_account_get_protocol_name(account)); | |
775 | |
776 if (!strcmp(list, "FL")) | |
777 { | |
778 if (error == 210) | |
779 { | |
780 reason = g_strdup_printf(_("%s could not be added because " | |
781 "your buddy list is full."), passport); | |
782 } | |
783 } | |
784 | |
785 if (reason == NULL) | |
786 { | |
787 if (error == 208) | |
788 { | |
789 reason = g_strdup_printf(_("%s is not a valid passport account."), | |
790 passport); | |
791 } | |
792 else if (error == 500) | |
793 { | |
794 reason = g_strdup(_("Service Temporarily Unavailable.")); | |
795 } | |
796 else | |
797 { | |
798 reason = g_strdup(_("Unknown error.")); | |
799 } | |
800 } | |
801 | |
802 if (msg != NULL) | |
803 { | |
804 gaim_notify_error(gc, NULL, msg, reason); | |
805 g_free(msg); | |
806 } | |
807 | |
808 if (!strcmp(list, "FL")) | |
809 { | |
810 GaimBuddy *buddy; | |
811 | |
812 buddy = gaim_find_buddy(account, passport); | |
813 | |
814 if (buddy != NULL) | |
815 gaim_blist_remove_buddy(buddy); | |
816 } | |
817 | |
818 g_free(reason); | |
819 | |
820 g_strfreev(params); | |
821 } | |
822 | |
823 static void | |
824 adg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
825 { | |
826 MsnSession *session; | |
827 gint group_id; | |
828 const char *group_name; | |
829 | |
830 session = cmdproc->session; | |
831 | |
832 group_id = atoi(cmd->params[3]); | |
833 | |
834 group_name = gaim_url_decode(cmd->params[2]); | |
835 | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
836 msn_group_new(session->userlist, cmd->params[3], group_name); |
14192 | 837 |
838 /* There is a user that must me moved to this group */ | |
839 if (cmd->trans->data) | |
840 { | |
841 /* msn_userlist_move_buddy(); */ | |
842 MsnUserList *userlist = cmdproc->session->userlist; | |
843 MsnMoveBuddy *data = cmd->trans->data; | |
844 | |
845 if (data->old_group_name != NULL) | |
846 { | |
847 msn_userlist_rem_buddy(userlist, data->who, MSN_LIST_FL, data->old_group_name); | |
848 g_free(data->old_group_name); | |
849 } | |
850 | |
851 msn_userlist_add_buddy(userlist, data->who, MSN_LIST_FL, group_name); | |
852 g_free(data->who); | |
853 | |
854 } | |
855 } | |
856 | |
857 static void | |
858 fln_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
859 { | |
860 MsnSlpLink *slplink; | |
861 MsnUser *user; | |
862 | |
863 user = msn_userlist_find_user(cmdproc->session->userlist, cmd->params[0]); | |
864 | |
865 user->status = "offline"; | |
866 msn_user_update(user); | |
867 | |
868 slplink = msn_session_find_slplink(cmdproc->session, cmd->params[0]); | |
869 | |
870 if (slplink != NULL) | |
871 msn_slplink_destroy(slplink); | |
872 | |
873 } | |
874 | |
875 static void | |
876 iln_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
877 { | |
878 MsnSession *session; | |
879 GaimAccount *account; | |
880 GaimConnection *gc; | |
881 MsnUser *user; | |
882 MsnObject *msnobj; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
883 int wlmclient; |
14192 | 884 const char *state, *passport, *friendly; |
885 | |
886 session = cmdproc->session; | |
887 account = session->account; | |
888 gc = gaim_account_get_connection(account); | |
889 | |
890 state = cmd->params[1]; | |
891 passport = cmd->params[2]; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
892 /*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
|
893 wlmclient = atoi(cmd->params[3]); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
894 friendly = gaim_url_decode(cmd->params[4]); |
14192 | 895 |
896 user = msn_userlist_find_user(session->userlist, passport); | |
897 | |
898 serv_got_alias(gc, passport, friendly); | |
899 | |
900 msn_user_set_friendly_name(user, friendly); | |
901 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
902 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
|
903 msnobj = msn_object_new_from_string(gaim_url_decode(cmd->params[6])); |
14192 | 904 msn_user_set_object(user, msnobj); |
905 } | |
906 | |
907 msn_user_set_state(user, state); | |
908 msn_user_update(user); | |
909 } | |
910 | |
911 static void | |
912 ipg_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, size_t len) | |
913 { | |
914 #if 0 | |
915 gaim_debug_misc("msn", "Incoming Page: {%s}\n", payload); | |
916 #endif | |
917 } | |
918 | |
919 static void | |
920 ipg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
921 { | |
922 cmdproc->servconn->payload_len = atoi(cmd->params[0]); | |
923 cmdproc->last_cmd->payload_cb = ipg_cmd_post; | |
924 } | |
925 | |
926 static void | |
927 nln_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
928 { | |
929 MsnSession *session; | |
930 GaimAccount *account; | |
931 GaimConnection *gc; | |
932 MsnUser *user; | |
933 MsnObject *msnobj; | |
934 int clientid; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
935 int wlmclient; |
14484
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
936 const char *state, *passport, *friendly, *old_friendly; |
14192 | 937 |
938 session = cmdproc->session; | |
939 account = session->account; | |
940 gc = gaim_account_get_connection(account); | |
941 | |
942 state = cmd->params[0]; | |
943 passport = cmd->params[1]; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
944 wlmclient = atoi(cmd->params[2]); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
945 friendly = gaim_url_decode(cmd->params[3]); |
14192 | 946 |
947 user = msn_userlist_find_user(session->userlist, passport); | |
948 | |
14484
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
949 old_friendly = msn_user_get_friendly_name(user); |
14494
0aa6adcdd819
[gaim-migrate @ 17213]
Richard Laager <rlaager@wiktel.com>
parents:
14484
diff
changeset
|
950 if (!old_friendly || (old_friendly && strcmp(old_friendly, friendly))) |
14484
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
951 { |
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
952 serv_got_alias(gc, passport, friendly); |
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
953 msn_user_set_friendly_name(user, friendly); |
1f81919515ae
[gaim-migrate @ 17203]
Richard Laager <rlaager@wiktel.com>
parents:
14192
diff
changeset
|
954 } |
14192 | 955 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
956 if (session->protocol_ver >= 9){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
957 if (cmd->param_count == 7){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
958 msnobj = msn_object_new_from_string(gaim_url_decode(cmd->params[5])); |
14192 | 959 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
|
960 }else{ |
14192 | 961 msn_user_set_object(user, NULL); |
962 } | |
963 } | |
964 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
965 clientid = atoi(cmd->params[4]); |
14192 | 966 user->mobile = (clientid & MSN_CLIENT_CAP_MSNMOBILE); |
967 | |
968 msn_user_set_state(user, state); | |
969 msn_user_update(user); | |
970 } | |
971 | |
972 #if 0 | |
973 static void | |
974 chg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
975 { | |
976 char *state = cmd->params[1]; | |
977 int state_id = 0; | |
978 | |
979 if (!strcmp(state, "NLN")) | |
980 state_id = MSN_ONLINE; | |
981 else if (!strcmp(state, "BSY")) | |
982 state_id = MSN_BUSY; | |
983 else if (!strcmp(state, "IDL")) | |
984 state_id = MSN_IDLE; | |
985 else if (!strcmp(state, "BRB")) | |
986 state_id = MSN_BRB; | |
987 else if (!strcmp(state, "AWY")) | |
988 state_id = MSN_AWAY; | |
989 else if (!strcmp(state, "PHN")) | |
990 state_id = MSN_PHONE; | |
991 else if (!strcmp(state, "LUN")) | |
992 state_id = MSN_LUNCH; | |
993 else if (!strcmp(state, "HDN")) | |
994 state_id = MSN_HIDDEN; | |
995 | |
996 cmdproc->session->state = state_id; | |
997 } | |
998 #endif | |
999 | |
1000 | |
1001 static void | |
1002 not_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, size_t len) | |
1003 { | |
1004 #if 0 | |
1005 MSN_SET_PARAMS("NOT %d\r\n%s", cmdproc->servconn->payload, payload); | |
1006 gaim_debug_misc("msn", "Notification: {%s}\n", payload); | |
1007 #endif | |
1008 } | |
1009 | |
1010 static void | |
1011 not_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1012 { | |
1013 cmdproc->servconn->payload_len = atoi(cmd->params[0]); | |
1014 cmdproc->last_cmd->payload_cb = not_cmd_post; | |
1015 } | |
1016 | |
1017 static void | |
1018 rea_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1019 { | |
1020 /* TODO: This might be for us too */ | |
1021 | |
1022 MsnSession *session; | |
1023 GaimConnection *gc; | |
1024 const char *friendly; | |
1025 | |
1026 session = cmdproc->session; | |
1027 gc = session->account->gc; | |
1028 friendly = gaim_url_decode(cmd->params[3]); | |
1029 | |
1030 gaim_connection_set_display_name(gc, friendly); | |
1031 } | |
1032 | |
1033 static void | |
1034 prp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1035 { | |
1036 MsnSession *session = cmdproc->session; | |
1037 const char *type, *value; | |
1038 | |
1039 g_return_if_fail(cmd->param_count >= 3); | |
1040 | |
1041 type = cmd->params[2]; | |
1042 | |
1043 if (cmd->param_count == 4) | |
1044 { | |
1045 value = cmd->params[3]; | |
1046 if (!strcmp(type, "PHH")) | |
1047 msn_user_set_home_phone(session->user, gaim_url_decode(value)); | |
1048 else if (!strcmp(type, "PHW")) | |
1049 msn_user_set_work_phone(session->user, gaim_url_decode(value)); | |
1050 else if (!strcmp(type, "PHM")) | |
1051 msn_user_set_mobile_phone(session->user, gaim_url_decode(value)); | |
1052 } | |
1053 else | |
1054 { | |
1055 if (!strcmp(type, "PHH")) | |
1056 msn_user_set_home_phone(session->user, NULL); | |
1057 else if (!strcmp(type, "PHW")) | |
1058 msn_user_set_work_phone(session->user, NULL); | |
1059 else if (!strcmp(type, "PHM")) | |
1060 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
|
1061 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
|
1062 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
|
1063 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
|
1064 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
|
1065 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
|
1066 } |
14192 | 1067 } |
1068 } | |
1069 | |
1070 static void | |
1071 reg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1072 { | |
1073 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
|
1074 const char *group_id, *group_name; |
14192 | 1075 |
1076 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
|
1077 group_id = cmd->params[2]; |
14192 | 1078 group_name = gaim_url_decode(cmd->params[3]); |
1079 | |
1080 msn_userlist_rename_group_id(session->userlist, group_id, group_name); | |
1081 } | |
1082 | |
1083 static void | |
1084 reg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
1085 { | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1086 const char * group_id; |
14192 | 1087 char **params; |
1088 | |
1089 params = g_strsplit(trans->params, " ", 0); | |
1090 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1091 group_id = params[0]; |
14192 | 1092 |
1093 group_error_helper(cmdproc->session, _("Unable to rename group"), group_id, error); | |
1094 | |
1095 g_strfreev(params); | |
1096 } | |
1097 | |
1098 static void | |
1099 rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1100 { | |
1101 MsnSession *session; | |
1102 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
|
1103 const char *group_id, *list, *passport; |
14192 | 1104 MsnListId list_id; |
1105 | |
1106 session = cmdproc->session; | |
1107 list = cmd->params[1]; | |
1108 passport = cmd->params[3]; | |
1109 user = msn_userlist_find_user(session->userlist, passport); | |
1110 | |
1111 g_return_if_fail(user != NULL); | |
1112 | |
1113 list_id = msn_get_list_id(list); | |
1114 | |
1115 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
|
1116 group_id = cmd->params[4]; |
14192 | 1117 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
|
1118 group_id = NULL; |
14192 | 1119 |
1120 msn_got_rem_user(session, user, list_id, group_id); | |
1121 msn_user_update(user); | |
1122 } | |
1123 | |
1124 static void | |
1125 rmg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1126 { | |
1127 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
|
1128 const char *group_id; |
14192 | 1129 |
1130 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
|
1131 group_id = cmd->params[2]; |
14192 | 1132 |
1133 msn_userlist_remove_group_id(session->userlist, group_id); | |
1134 } | |
1135 | |
1136 static void | |
1137 rmg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
1138 { | |
20391
0b0ecee55091
The second msn.tgz from SF Patch #1621854 from Ka-Hing Cheung.
Ka-Hing Cheung <khc@hxbc.us>
parents:
20389
diff
changeset
|
1139 const char *group_id; |
14192 | 1140 char **params; |
1141 | |
1142 params = g_strsplit(trans->params, " ", 0); | |
1143 | |
1144 group_id = atoi(params[0]); | |
1145 | |
1146 group_error_helper(cmdproc->session, _("Unable to delete group"), group_id, error); | |
1147 | |
1148 g_strfreev(params); | |
1149 } | |
1150 | |
1151 static void | |
1152 syn_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1153 { | |
1154 MsnSession *session; | |
1155 int total_users; | |
1156 | |
1157 session = cmdproc->session; | |
1158 | |
1159 if (cmd->param_count == 2) | |
1160 { | |
1161 /* | |
1162 * This can happen if we sent a SYN with an up-to-date | |
1163 * buddy list revision, but we send 0 to get a full list. | |
1164 * So, error out. | |
1165 */ | |
1166 | |
1167 msn_session_set_error(cmdproc->session, MSN_ERROR_BAD_BLIST, NULL); | |
1168 return; | |
1169 } | |
1170 | |
1171 total_users = atoi(cmd->params[2]); | |
1172 | |
1173 if (total_users == 0) | |
1174 { | |
1175 msn_session_finish_login(session); | |
1176 } | |
1177 else | |
1178 { | |
1179 /* syn_table */ | |
1180 MsnSync *sync; | |
1181 | |
1182 sync = msn_sync_new(session); | |
1183 sync->total_users = total_users; | |
1184 sync->old_cbs_table = cmdproc->cbs_table; | |
1185 | |
1186 session->sync = sync; | |
1187 cmdproc->cbs_table = sync->cbs_table; | |
1188 } | |
1189 } | |
1190 | |
1191 /************************************************************************** | |
1192 * Misc commands | |
1193 **************************************************************************/ | |
1194 | |
1195 static void | |
1196 url_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1197 { | |
1198 MsnSession *session; | |
1199 GaimAccount *account; | |
1200 const char *rru; | |
1201 const char *url; | |
1202 GaimCipher *cipher; | |
1203 GaimCipherContext *context; | |
1204 guchar digest[16]; | |
1205 FILE *fd; | |
1206 char *buf; | |
1207 char buf2[3]; | |
1208 char sendbuf[64]; | |
1209 int i; | |
1210 | |
1211 session = cmdproc->session; | |
1212 account = session->account; | |
1213 | |
1214 rru = cmd->params[1]; | |
1215 url = cmd->params[2]; | |
1216 | |
1217 buf = g_strdup_printf("%s%lu%s", | |
1218 session->passport_info.mspauth, | |
1219 time(NULL) - session->passport_info.sl, | |
1220 gaim_connection_get_password(account->gc)); | |
1221 | |
1222 cipher = gaim_ciphers_find_cipher("md5"); | |
1223 context = gaim_cipher_context_new(cipher, NULL); | |
1224 | |
1225 gaim_cipher_context_append(context, (const guchar *)buf, strlen(buf)); | |
1226 gaim_cipher_context_digest(context, sizeof(digest), digest, NULL); | |
1227 gaim_cipher_context_destroy(context); | |
1228 | |
1229 g_free(buf); | |
1230 | |
1231 memset(sendbuf, 0, sizeof(sendbuf)); | |
1232 | |
1233 for (i = 0; i < 16; i++) | |
1234 { | |
1235 g_snprintf(buf2, sizeof(buf2), "%02x", digest[i]); | |
1236 strcat(sendbuf, buf2); | |
1237 } | |
1238 | |
1239 if (session->passport_info.file != NULL) | |
1240 { | |
1241 g_unlink(session->passport_info.file); | |
1242 g_free(session->passport_info.file); | |
1243 } | |
1244 | |
1245 if ((fd = gaim_mkstemp(&session->passport_info.file, FALSE)) == NULL) | |
1246 { | |
1247 gaim_debug_error("msn", | |
1248 "Error opening temp passport file: %s\n", | |
1249 strerror(errno)); | |
1250 } | |
1251 else | |
1252 { | |
1253 fputs("<html>\n" | |
1254 "<head>\n" | |
1255 "<noscript>\n" | |
1256 "<meta http-equiv=\"Refresh\" content=\"0; " | |
1257 "url=http://www.hotmail.com\">\n" | |
1258 "</noscript>\n" | |
1259 "</head>\n\n", | |
1260 fd); | |
1261 | |
1262 fprintf(fd, "<body onload=\"document.pform.submit(); \">\n"); | |
1263 fprintf(fd, "<form name=\"pform\" action=\"%s\" method=\"POST\">\n\n", | |
1264 url); | |
1265 fprintf(fd, "<input type=\"hidden\" name=\"mode\" value=\"ttl\">\n"); | |
1266 fprintf(fd, "<input type=\"hidden\" name=\"login\" value=\"%s\">\n", | |
1267 gaim_account_get_username(account)); | |
1268 fprintf(fd, "<input type=\"hidden\" name=\"username\" value=\"%s\">\n", | |
1269 gaim_account_get_username(account)); | |
14602 | 1270 if (session->passport_info.sid != NULL) |
1271 fprintf(fd, "<input type=\"hidden\" name=\"sid\" value=\"%s\">\n", | |
1272 session->passport_info.sid); | |
1273 if (session->passport_info.kv != NULL) | |
1274 fprintf(fd, "<input type=\"hidden\" name=\"kv\" value=\"%s\">\n", | |
1275 session->passport_info.kv); | |
14192 | 1276 fprintf(fd, "<input type=\"hidden\" name=\"id\" value=\"2\">\n"); |
1277 fprintf(fd, "<input type=\"hidden\" name=\"sl\" value=\"%ld\">\n", | |
1278 time(NULL) - session->passport_info.sl); | |
1279 fprintf(fd, "<input type=\"hidden\" name=\"rru\" value=\"%s\">\n", | |
1280 rru); | |
14602 | 1281 if (session->passport_info.mspauth != NULL) |
1282 fprintf(fd, "<input type=\"hidden\" name=\"auth\" value=\"%s\">\n", | |
1283 session->passport_info.mspauth); | |
14192 | 1284 fprintf(fd, "<input type=\"hidden\" name=\"creds\" value=\"%s\">\n", |
1285 sendbuf); /* TODO Digest me (huh? -- ChipX86) */ | |
1286 fprintf(fd, "<input type=\"hidden\" name=\"svc\" value=\"mail\">\n"); | |
1287 fprintf(fd, "<input type=\"hidden\" name=\"js\" value=\"yes\">\n"); | |
1288 fprintf(fd, "</form></body>\n"); | |
1289 fprintf(fd, "</html>\n"); | |
1290 | |
1291 if (fclose(fd)) | |
1292 { | |
1293 gaim_debug_error("msn", | |
1294 "Error closing temp passport file: %s\n", | |
1295 strerror(errno)); | |
1296 | |
1297 g_unlink(session->passport_info.file); | |
1298 g_free(session->passport_info.file); | |
1299 session->passport_info.file = NULL; | |
1300 } | |
1301 #ifdef _WIN32 | |
1302 else | |
1303 { | |
1304 /* | |
1305 * Renaming file with .html extension, so that the | |
1306 * win32 open_url will work. | |
1307 */ | |
1308 char *tmp; | |
1309 | |
1310 if ((tmp = | |
1311 g_strdup_printf("%s.html", | |
1312 session->passport_info.file)) != NULL) | |
1313 { | |
1314 if (g_rename(session->passport_info.file, | |
1315 tmp) == 0) | |
1316 { | |
1317 g_free(session->passport_info.file); | |
1318 session->passport_info.file = tmp; | |
1319 } | |
1320 else | |
1321 g_free(tmp); | |
1322 } | |
1323 } | |
1324 #endif | |
1325 } | |
1326 } | |
1327 /************************************************************************** | |
1328 * Switchboards | |
1329 **************************************************************************/ | |
1330 | |
1331 static void | |
1332 rng_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1333 { | |
1334 MsnSession *session; | |
1335 MsnSwitchBoard *swboard; | |
1336 const char *session_id; | |
1337 char *host; | |
1338 int port; | |
1339 | |
1340 session = cmdproc->session; | |
1341 session_id = cmd->params[0]; | |
1342 | |
1343 msn_parse_socket(cmd->params[1], &host, &port); | |
1344 | |
1345 if (session->http_method) | |
1346 port = 80; | |
1347 | |
1348 swboard = msn_switchboard_new(session); | |
1349 | |
1350 msn_switchboard_set_invited(swboard, TRUE); | |
1351 msn_switchboard_set_session_id(swboard, cmd->params[0]); | |
1352 msn_switchboard_set_auth_key(swboard, cmd->params[3]); | |
1353 swboard->im_user = g_strdup(cmd->params[4]); | |
1354 /* msn_switchboard_add_user(swboard, cmd->params[4]); */ | |
1355 | |
1356 if (!msn_switchboard_connect(swboard, host, port)) | |
1357 msn_switchboard_destroy(swboard); | |
1358 | |
1359 g_free(host); | |
1360 } | |
1361 | |
1362 static void | |
1363 xfr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
1364 { | |
1365 char *host; | |
1366 int port; | |
1367 | |
1368 if (strcmp(cmd->params[1], "SB") && strcmp(cmd->params[1], "NS")) | |
1369 { | |
1370 /* Maybe we can have a generic bad command error. */ | |
1371 gaim_debug_error("msn", "Bad XFR command (%s)\n", cmd->params[1]); | |
1372 return; | |
1373 } | |
1374 | |
1375 msn_parse_socket(cmd->params[2], &host, &port); | |
1376 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1377 if (!strcmp(cmd->params[1], "SB")){ |
14192 | 1378 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
|
1379 }else if (!strcmp(cmd->params[1], "NS")){ |
14192 | 1380 MsnSession *session; |
1381 | |
1382 session = cmdproc->session; | |
1383 | |
1384 msn_session_set_login_step(session, MSN_LOGIN_STEP_TRANSFER); | |
1385 | |
1386 msn_notification_connect(session->notification, host, port); | |
1387 } | |
1388 | |
1389 g_free(host); | |
1390 } | |
1391 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1392 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1393 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
|
1394 size_t len) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1395 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1396 /*get the payload content*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1397 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
|
1398 } |
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 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1401 gcf_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1402 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1403 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
|
1404 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
|
1405 return; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1406 } |
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 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1409 sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1410 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1411 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
|
1412 if(cmd->payload_len == 0){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1413 return; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1414 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1415 /*get the payload content*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1416 } |
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 * Get the UBX's PSM info |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1420 * Post it to the User status |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1421 * 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
|
1422 */ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1423 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1424 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
|
1425 size_t len) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1426 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1427 MsnSession *session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1428 GaimAccount *account; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1429 GaimConnection *gc; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1430 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
|
1431 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
|
1432 char *psm_str; |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1433 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1434 /*get the payload content*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1435 // 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
|
1436 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1437 session = cmdproc->session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1438 account = session->account; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1439 gc = gaim_account_get_connection(account); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1440 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1441 passport = cmd->params[0]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1442 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
|
1443 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1444 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
|
1445 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
|
1446 msn_user_update(user); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1447 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1448 g_free(psm_str); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1449 } |
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 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1452 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1453 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1454 gaim_debug_info("MaYuan","UBX... \n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1455 if(cmd->payload_len == 0){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1456 return; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1457 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1458 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
|
1459 } |
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 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1462 uux_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1463 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1464 gaim_debug_info("MaYuan","UUX... \n"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1465 } |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1466 |
14192 | 1467 /************************************************************************** |
1468 * Message Types | |
1469 **************************************************************************/ | |
1470 | |
1471 static void | |
1472 profile_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | |
1473 { | |
1474 MsnSession *session; | |
1475 const char *value; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1476 const char *clLastChange; |
14192 | 1477 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1478 gaim_debug_info("MaYuan","profile_msg... \n"); |
14192 | 1479 session = cmdproc->session; |
1480 | |
1481 if (strcmp(msg->remote_user, "Hotmail")) | |
1482 /* This isn't an official message. */ | |
1483 return; | |
1484 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1485 if ((value = msn_message_get_attr(msg, "kv")) != NULL){ |
14192 | 1486 if (session->passport_info.kv != NULL) |
1487 g_free(session->passport_info.kv); | |
1488 | |
1489 session->passport_info.kv = g_strdup(value); | |
1490 } | |
1491 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1492 if ((value = msn_message_get_attr(msg, "sid")) != NULL){ |
14192 | 1493 if (session->passport_info.sid != NULL) |
1494 g_free(session->passport_info.sid); | |
1495 | |
1496 session->passport_info.sid = g_strdup(value); | |
1497 } | |
1498 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1499 if ((value = msn_message_get_attr(msg, "MSPAuth")) != NULL){ |
14192 | 1500 if (session->passport_info.mspauth != NULL) |
1501 g_free(session->passport_info.mspauth); | |
1502 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1503 gaim_debug_info("MaYuan","MSPAuth:%s\n",value); |
14192 | 1504 session->passport_info.mspauth = g_strdup(value); |
1505 } | |
1506 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1507 if ((value = msn_message_get_attr(msg, "ClientIP")) != NULL){ |
14192 | 1508 if (session->passport_info.client_ip != NULL) |
1509 g_free(session->passport_info.client_ip); | |
1510 | |
1511 session->passport_info.client_ip = g_strdup(value); | |
1512 } | |
1513 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1514 if ((value = msn_message_get_attr(msg, "ClientPort")) != NULL){ |
14192 | 1515 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
|
1516 } |
14192 | 1517 |
1518 if ((value = msn_message_get_attr(msg, "LoginTime")) != NULL) | |
1519 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
|
1520 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1521 /*starting retrieve the contact list*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1522 msn_userlist_load(session); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1523 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1524 msn_session_set_bnode(session); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1525 session->contact = msn_contact_new(session); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1526 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
|
1527 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
|
1528 // msn_contact_connect(session->contact); |
14192 | 1529 } |
1530 | |
1531 static void | |
1532 initial_email_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | |
1533 { | |
1534 MsnSession *session; | |
1535 GaimConnection *gc; | |
1536 GHashTable *table; | |
1537 const char *unread; | |
1538 | |
1539 session = cmdproc->session; | |
1540 gc = session->account->gc; | |
1541 | |
1542 if (strcmp(msg->remote_user, "Hotmail")) | |
1543 /* This isn't an official message. */ | |
1544 return; | |
1545 | |
1546 if (session->passport_info.file == NULL) | |
1547 { | |
1548 MsnTransaction *trans; | |
1549 trans = msn_transaction_new(cmdproc, "URL", "%s", "INBOX"); | |
1550 msn_transaction_queue_cmd(trans, msg->cmd); | |
1551 | |
1552 msn_cmdproc_send_trans(cmdproc, trans); | |
1553 | |
1554 return; | |
1555 } | |
1556 | |
1557 if (!gaim_account_get_check_mail(session->account)) | |
1558 return; | |
1559 | |
1560 table = msn_message_get_hashtable_from_body(msg); | |
1561 | |
1562 unread = g_hash_table_lookup(table, "Inbox-Unread"); | |
1563 | |
1564 if (unread != NULL) | |
1565 { | |
1566 int count = atoi(unread); | |
1567 | |
1568 if (count > 0) | |
1569 { | |
1570 const char *passport; | |
1571 const char *url; | |
1572 | |
1573 passport = msn_user_get_passport(session->user); | |
1574 url = session->passport_info.file; | |
1575 | |
1576 gaim_notify_emails(gc, atoi(unread), FALSE, NULL, NULL, | |
1577 &passport, &url, NULL, NULL); | |
1578 } | |
1579 } | |
1580 | |
1581 g_hash_table_destroy(table); | |
1582 } | |
1583 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1584 /*offline Message notification process*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1585 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1586 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
|
1587 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1588 MsnSession *session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1589 char **elems, **cur, **tokens; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1590 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1591 // 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
|
1592 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1593 // /*time debug*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1594 { |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1595 const char *timestr; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1596 time_t t; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1597 struct tm *tm; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1598 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
|
1599 GDate *date; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1600 time(&t); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1601 tm = gmtime(&t); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1602 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
|
1603 // strftime(datestr,strlen(datestr),"%a",tm); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1604 date = g_date_new(); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1605 g_date_set_parse(date,datestr); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1606 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
|
1607 g_date_free(date); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1608 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
|
1609 } |
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 /*new a oim session*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1612 session = cmdproc->session; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1613 session->oim = msn_oim_new(session); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1614 // msn_oim_connect(session->oim); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1615 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1616 /*parse offline message data*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1617 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
|
1618 for (cur = elems; *cur != NULL; cur++){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1619 const char *key, *value; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1620 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1621 // 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
|
1622 tokens = g_strsplit(*cur, ": ", 2); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1623 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1624 key = tokens[0]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1625 value = tokens[1]; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1626 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1627 /*if not MIME content ,then return*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1628 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
|
1629 // 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
|
1630 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
|
1631 g_strfreev(tokens); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1632 break; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1633 } |
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 g_strfreev(tokens); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1636 } |
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 g_strfreev(elems); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1639 /* test code for add group*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1640 // msn_add_group(session,"hello"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1641 } |
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 /*offline Message Notification*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1644 static void |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1645 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
|
1646 { |
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 |
14192 | 1649 static void |
1650 email_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | |
1651 { | |
1652 MsnSession *session; | |
1653 GaimConnection *gc; | |
1654 GHashTable *table; | |
1655 char *from, *subject, *tmp; | |
1656 | |
1657 session = cmdproc->session; | |
1658 gc = session->account->gc; | |
1659 | |
1660 if (strcmp(msg->remote_user, "Hotmail")) | |
1661 /* This isn't an official message. */ | |
1662 return; | |
1663 | |
1664 if (session->passport_info.file == NULL) | |
1665 { | |
1666 MsnTransaction *trans; | |
1667 trans = msn_transaction_new(cmdproc, "URL", "%s", "INBOX"); | |
1668 msn_transaction_queue_cmd(trans, msg->cmd); | |
1669 | |
1670 msn_cmdproc_send_trans(cmdproc, trans); | |
1671 | |
1672 return; | |
1673 } | |
1674 | |
1675 if (!gaim_account_get_check_mail(session->account)) | |
1676 return; | |
1677 | |
1678 table = msn_message_get_hashtable_from_body(msg); | |
1679 | |
1680 from = subject = NULL; | |
1681 | |
1682 tmp = g_hash_table_lookup(table, "From"); | |
1683 if (tmp != NULL) | |
1684 from = gaim_mime_decode_field(tmp); | |
1685 | |
1686 tmp = g_hash_table_lookup(table, "Subject"); | |
1687 if (tmp != NULL) | |
1688 subject = gaim_mime_decode_field(tmp); | |
1689 | |
1690 gaim_notify_email(gc, | |
1691 (subject != NULL ? subject : ""), | |
1692 (from != NULL ? from : ""), | |
1693 msn_user_get_passport(session->user), | |
1694 session->passport_info.file, NULL, NULL); | |
1695 | |
1696 if (from != NULL) | |
1697 g_free(from); | |
1698 | |
1699 if (subject != NULL) | |
1700 g_free(subject); | |
1701 | |
1702 g_hash_table_destroy(table); | |
1703 } | |
1704 | |
1705 static void | |
1706 system_msg(MsnCmdProc *cmdproc, MsnMessage *msg) | |
1707 { | |
1708 GHashTable *table; | |
1709 const char *type_s; | |
1710 | |
1711 if (strcmp(msg->remote_user, "Hotmail")) | |
1712 /* This isn't an official message. */ | |
1713 return; | |
1714 | |
1715 table = msn_message_get_hashtable_from_body(msg); | |
1716 | |
1717 if ((type_s = g_hash_table_lookup(table, "Type")) != NULL) | |
1718 { | |
1719 int type = atoi(type_s); | |
1720 char buf[MSN_BUF_LEN]; | |
1721 int minutes; | |
1722 | |
1723 switch (type) | |
1724 { | |
1725 case 1: | |
1726 minutes = atoi(g_hash_table_lookup(table, "Arg1")); | |
1727 g_snprintf(buf, sizeof(buf), ngettext( | |
1728 "The MSN server will shut down for maintenance " | |
1729 "in %d minute. You will automatically be " | |
1730 "signed out at that time. Please finish any " | |
1731 "conversations in progress.\n\nAfter the " | |
1732 "maintenance has been completed, you will be " | |
1733 "able to successfully sign in.", | |
1734 "The MSN server will shut down for maintenance " | |
1735 "in %d minutes. You will automatically be " | |
1736 "signed out at that time. Please finish any " | |
1737 "conversations in progress.\n\nAfter the " | |
1738 "maintenance has been completed, you will be " | |
1739 "able to successfully sign in.", minutes), | |
1740 minutes); | |
1741 default: | |
1742 break; | |
1743 } | |
1744 | |
1745 if (*buf != '\0') | |
1746 gaim_notify_info(cmdproc->session->account->gc, NULL, buf, NULL); | |
1747 } | |
1748 | |
1749 g_hash_table_destroy(table); | |
1750 } | |
1751 | |
1752 void | |
1753 msn_notification_add_buddy(MsnNotification *notification, const char *list, | |
1754 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
|
1755 const char *group_id) |
14192 | 1756 { |
1757 MsnCmdProc *cmdproc; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1758 xmlnode *adl_node; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1759 char *payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1760 int payload_len; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1761 |
14192 | 1762 cmdproc = notification->servconn->cmdproc; |
1763 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1764 if (strcmp(list, "FL") != 0){ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1765 } |
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 adl_node = xmlnode_new("ml"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1768 adl_node->child = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1769 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1770 msn_add_contact_xml(adl_node,who,1,1); |
14192 | 1771 |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1772 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
|
1773 xmlnode_free(adl_node); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1774 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
|
1775 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
|
1776 }else{ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1777 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
|
1778 payload,payload_len); |
14192 | 1779 } |
1780 } | |
1781 | |
1782 void | |
1783 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
|
1784 const char *who, const char *group_id) |
14192 | 1785 { |
1786 MsnCmdProc *cmdproc; | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1787 MsnTransaction *trans; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1788 xmlnode *rml_node; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1789 char *payload; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1790 int payload_len; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1791 |
14192 | 1792 cmdproc = notification->servconn->cmdproc; |
1793 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1794 rml_node = xmlnode_new("ml"); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1795 rml_node->child = NULL; |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1796 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1797 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
|
1798 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1799 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
|
1800 xmlnode_free(rml_node); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1801 |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1802 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
|
1803 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
|
1804 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
|
1805 msn_cmdproc_send_trans(cmdproc, trans); |
14192 | 1806 } |
1807 | |
1808 /************************************************************************** | |
1809 * Init | |
1810 **************************************************************************/ | |
1811 void | |
1812 msn_notification_init(void) | |
1813 { | |
1814 /* TODO: check prp, blp */ | |
1815 | |
1816 cbs_table = msn_table_new(); | |
1817 | |
1818 /* Synchronous */ | |
1819 msn_table_add_cmd(cbs_table, "CHG", "CHG", NULL); | |
1820 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
|
1821 msn_table_add_cmd(cbs_table, "ADL", "ILN", iln_cmd); |
14192 | 1822 msn_table_add_cmd(cbs_table, "REM", "REM", rem_cmd); |
1823 msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd); | |
1824 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
|
1825 msn_table_add_cmd(cbs_table, "USR", "GCF", gcf_cmd); |
14192 | 1826 msn_table_add_cmd(cbs_table, "SYN", "SYN", syn_cmd); |
1827 msn_table_add_cmd(cbs_table, "CVR", "CVR", cvr_cmd); | |
1828 msn_table_add_cmd(cbs_table, "VER", "VER", ver_cmd); | |
1829 msn_table_add_cmd(cbs_table, "REA", "REA", rea_cmd); | |
1830 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
|
1831 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
|
1832 // msn_table_add_cmd(cbs_table, "BLP", "BLP", NULL); |
14192 | 1833 msn_table_add_cmd(cbs_table, "REG", "REG", reg_cmd); |
1834 msn_table_add_cmd(cbs_table, "ADG", "ADG", adg_cmd); | |
1835 msn_table_add_cmd(cbs_table, "RMG", "RMG", rmg_cmd); | |
1836 msn_table_add_cmd(cbs_table, "XFR", "XFR", xfr_cmd); | |
1837 | |
1838 /* Asynchronous */ | |
1839 msn_table_add_cmd(cbs_table, NULL, "IPG", ipg_cmd); | |
1840 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
|
1841 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
|
1842 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
|
1843 msn_table_add_cmd(cbs_table, NULL, "SBS", sbs_cmd); |
14192 | 1844 msn_table_add_cmd(cbs_table, NULL, "NOT", not_cmd); |
1845 | |
1846 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
|
1847 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
|
1848 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
|
1849 msn_table_add_cmd(cbs_table, NULL, "FQY", fqy_cmd); |
14192 | 1850 |
1851 msn_table_add_cmd(cbs_table, NULL, "QRY", NULL); | |
1852 msn_table_add_cmd(cbs_table, NULL, "QNG", NULL); | |
1853 msn_table_add_cmd(cbs_table, NULL, "FLN", fln_cmd); | |
1854 msn_table_add_cmd(cbs_table, NULL, "NLN", nln_cmd); | |
1855 msn_table_add_cmd(cbs_table, NULL, "ILN", iln_cmd); | |
1856 msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd); | |
1857 msn_table_add_cmd(cbs_table, NULL, "RNG", rng_cmd); | |
1858 | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1859 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
|
1860 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
|
1861 |
14192 | 1862 msn_table_add_cmd(cbs_table, NULL, "URL", url_cmd); |
1863 | |
1864 msn_table_add_cmd(cbs_table, "fallback", "XFR", xfr_cmd); | |
1865 | |
1866 msn_table_add_error(cbs_table, "ADD", add_error); | |
1867 msn_table_add_error(cbs_table, "REG", reg_error); | |
1868 msn_table_add_error(cbs_table, "RMG", rmg_error); | |
1869 /* msn_table_add_error(cbs_table, "REA", rea_error); */ | |
1870 msn_table_add_error(cbs_table, "USR", usr_error); | |
1871 | |
1872 msn_table_add_msg_type(cbs_table, | |
1873 "text/x-msmsgsprofile", | |
1874 profile_msg); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1875 /*initial OIM notification*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1876 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
|
1877 "text/x-msmsgsinitialmdatanotification", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1878 initial_mdata_msg); |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1879 /*OIM notification when user online*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1880 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
|
1881 "text/x-msmsgsoimnotification", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1882 initial_mdata_msg); |
14192 | 1883 msn_table_add_msg_type(cbs_table, |
1884 "text/x-msmsgsinitialemailnotification", | |
1885 initial_email_msg); | |
1886 msn_table_add_msg_type(cbs_table, | |
1887 "text/x-msmsgsemailnotification", | |
1888 email_msg); | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1889 /*delete an offline Message notification*/ |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1890 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
|
1891 "text/x-msmsgsactivemailnotification", |
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1892 delete_oim_msg); |
14192 | 1893 msn_table_add_msg_type(cbs_table, |
1894 "application/x-msmsgssystemmessage", | |
1895 system_msg); | |
1896 } | |
1897 | |
1898 void | |
1899 msn_notification_end(void) | |
1900 { | |
1901 msn_table_destroy(cbs_table); | |
1902 } | |
20389
e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
Richard Laager <rlaager@wiktel.com>
parents:
14602
diff
changeset
|
1903 |