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