Mercurial > pidgin
annotate src/protocols/msn/notification.c @ 6016:1e4a574bb46d
[gaim-migrate @ 6466]
Removed move of the #if 0'ed code from gtkprefs.c. I think Chip or
Nathan or whoever left this here so that they could go back later and
make sure all the old #if 0'ed stuff works correctly with the new prefs,
so to reassure whoever did that, I've been verifying that all these prefs
work as they should.
Made the "use server alias" checkbox instantly affect conversation titles.
Fixed a crash caused by trying to enable buddy icon animation for static
images which happened after toggling the "enable buddy icon animation"
preference to the O-N positiO-N.
All you people need to hop on the bug fix bandwagon. It's happy hour.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Fri, 04 Jul 2003 19:12:06 +0000 |
| parents | eb336b2c451f |
| children | a21cf07cd8e1 |
| rev | line source |
|---|---|
| 5309 | 1 /** |
| 2 * @file notification.c Notification server functions | |
| 3 * | |
| 4 * gaim | |
| 5 * | |
| 6 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
| 7 * | |
| 8 * This program is free software; you can redistribute it and/or modify | |
| 9 * it under the terms of the GNU General Public License as published by | |
| 10 * the Free Software Foundation; either version 2 of the License, or | |
| 11 * (at your option) any later version. | |
| 12 * | |
| 13 * This program is distributed in the hope that it will be useful, | |
| 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 * GNU General Public License for more details. | |
| 17 * | |
| 18 * You should have received a copy of the GNU General Public License | |
| 19 * along with this program; if not, write to the Free Software | |
| 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 21 */ | |
| 22 #include "msn.h" | |
| 23 #include "notification.h" | |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
24 #include "state.h" |
| 5309 | 25 #include "error.h" |
| 26 #include "utils.h" | |
| 27 | |
| 28 typedef struct | |
| 29 { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
30 GaimConnection *gc; |
| 5309 | 31 MsnUser *user; |
| 32 | |
| 33 } MsnPermitAdd; | |
| 34 | |
| 35 static GHashTable *notification_commands = NULL; | |
| 36 static GHashTable *notification_msg_types = NULL; | |
| 37 | |
| 38 /************************************************************************** | |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
39 * Utility functions |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
40 **************************************************************************/ |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
41 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
42 add_buddy(MsnServConn *servconn, MsnUser *user) |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
43 { |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
44 MsnSession *session = servconn->session; |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
45 GaimConnection *gc = session->account->gc; |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
46 struct buddy *b; |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
47 MsnGroup *group = NULL; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
48 struct group *g = NULL; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
49 int group_id; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
50 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
51 group_id = msn_user_get_group_id(user); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
52 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
53 if (group_id > -1) |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
54 group = msn_groups_find_with_id(session->groups, group_id); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
55 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
56 if (group == NULL) { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
57 GList *l; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
58 gaim_debug(GAIM_DEBUG_WARNING, "msn", |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
59 "Group ID %d for user %s was not defined.\n", |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
60 group_id, msn_user_get_passport(user)); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
61 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
62 /* Find a group that we can stick this guy into. Lamer. */ |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
63 l = msn_groups_get_list(session->groups); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
64 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
65 if (l != NULL) { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
66 group = l->data; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
67 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
68 msn_user_set_group_id(user, msn_group_get_id(group)); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
69 } |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
70 } |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
71 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
72 if (group == NULL || |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
73 (g = gaim_find_group(msn_group_get_name(group))) == NULL) { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
74 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
75 gaim_debug(GAIM_DEBUG_ERROR, "msn", |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
76 "Group '%s' appears in server-side " |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
77 "buddy list, but not here!", |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
78 msn_group_get_name(group)); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
79 } |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
80 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
81 if (group != NULL) |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
82 msn_group_add_user(group, user); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
83 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
84 if (g == NULL) { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
85 /* Should never happen. */ |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
86 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
87 if ((g = gaim_find_group(_("Buddies"))) == NULL) { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
88 g = gaim_group_new(_("Buddies")); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
89 gaim_blist_add_group(g, NULL); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
90 } |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
91 } |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
92 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
93 b = gaim_find_buddy(gc->account, msn_user_get_passport(user)); |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
94 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
95 if (b == NULL) { |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
96 b = gaim_buddy_new(gc->account, |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
97 msn_user_get_passport(user), NULL); |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
98 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
99 gaim_blist_add_buddy(b, g, NULL); |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
100 } |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
101 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
102 b->proto_data = user; |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
103 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
104 serv_got_alias(gc, (char *)msn_user_get_passport(user), |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
105 (char *)msn_user_get_name(user)); |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
106 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
107 return TRUE; |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
108 } |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
109 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
110 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
111 /************************************************************************** |
| 5309 | 112 * Callbacks |
| 113 **************************************************************************/ | |
| 114 static void | |
| 115 msn_accept_add_cb(MsnPermitAdd *pa) | |
| 116 { | |
|
5567
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
117 if (g_list_find(gaim_connections_get_all(), pa->gc) != NULL) { |
| 5309 | 118 MsnSession *session = pa->gc->proto_data; |
| 119 char outparams[MSN_BUF_LEN]; | |
| 120 | |
| 121 g_snprintf(outparams, sizeof(outparams), "AL %s %s", | |
| 122 msn_user_get_passport(pa->user), | |
| 123 msn_url_encode(msn_user_get_name(pa->user))); | |
| 124 | |
| 125 if (msn_servconn_send_command(session->notification_conn, | |
| 126 "ADD", outparams) <= 0) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
127 gaim_connection_error(pa->gc, _("Write error")); |
| 5309 | 128 return; |
| 129 } | |
| 130 | |
| 131 gaim_privacy_permit_add(pa->gc->account, | |
| 132 msn_user_get_passport(pa->user)); | |
| 133 build_allow_list(); | |
| 134 | |
| 135 show_got_added(pa->gc, NULL, msn_user_get_passport(pa->user), | |
| 136 msn_user_get_name(pa->user), NULL); | |
| 137 } | |
| 138 | |
| 139 msn_user_destroy(pa->user); | |
| 140 g_free(pa); | |
| 141 } | |
| 142 | |
| 143 static void | |
| 144 msn_cancel_add_cb(MsnPermitAdd *pa) | |
| 145 { | |
|
5567
cc9ddec20010
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
146 if (g_list_find(gaim_connections_get_all(), pa->gc) != NULL) { |
| 5309 | 147 MsnSession *session = pa->gc->proto_data; |
| 148 char outparams[MSN_BUF_LEN]; | |
| 149 | |
| 150 g_snprintf(outparams, sizeof(outparams), "BL %s %s", | |
| 151 msn_user_get_passport(pa->user), | |
| 152 msn_url_encode(msn_user_get_name(pa->user))); | |
| 153 | |
| 154 if (msn_servconn_send_command(session->notification_conn, | |
| 155 "ADD", outparams) <= 0) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
156 gaim_connection_error(pa->gc, _("Write error")); |
| 5309 | 157 return; |
| 158 } | |
| 159 | |
| 160 gaim_privacy_deny_add(pa->gc->account, | |
| 161 msn_user_get_passport(pa->user)); | |
| 162 build_block_list(); | |
| 163 } | |
| 164 | |
| 165 msn_user_destroy(pa->user); | |
| 166 g_free(pa); | |
| 167 } | |
| 168 | |
| 169 /************************************************************************** | |
| 170 * Catch-all commands | |
| 171 **************************************************************************/ | |
| 172 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
173 blank_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
174 size_t param_count) |
| 5309 | 175 { |
| 176 return TRUE; | |
| 177 } | |
| 178 | |
| 179 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
180 unknown_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
181 size_t param_count) |
| 5309 | 182 { |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
183 char buf[MSN_BUF_LEN]; |
| 5309 | 184 |
|
5334
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
185 if (isdigit(*command)) { |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
186 int errnum = atoi(command); |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
187 |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
188 if (errnum == 225) { |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
189 /* |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
190 * Ignore this. It happens as a result of moving a buddy from |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
191 * one group that isn't on the server to another that is. |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
192 * The user doesn't care if the old group was there or not. |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
193 */ |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
194 return TRUE; |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
195 } |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
196 |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
197 g_snprintf(buf, sizeof(buf), "MSN Error: %s\n", |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
198 msn_error_get_text(errnum)); |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
199 } |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
200 else { |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
201 g_snprintf(buf, sizeof(buf), "MSN Error: Unable to parse message\n"); |
|
bbf2141d30d0
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
202 } |
| 5309 | 203 |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5406
diff
changeset
|
204 gaim_notify_error(servconn->session->account->gc, NULL, buf, NULL); |
| 5309 | 205 |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
206 return TRUE; |
| 5309 | 207 } |
| 208 | |
| 209 | |
| 210 /************************************************************************** | |
| 211 * Login | |
| 212 **************************************************************************/ | |
| 213 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
214 ver_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
215 size_t param_count) |
| 5309 | 216 { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
217 GaimConnection *gc = servconn->session->account->gc; |
| 5309 | 218 size_t i; |
| 219 gboolean msnp5_found = FALSE; | |
| 220 | |
| 221 for (i = 1; i < param_count; i++) { | |
| 222 if (!strcmp(params[i], "MSNP5")) { | |
| 223 msnp5_found = TRUE; | |
| 224 break; | |
| 225 } | |
| 226 } | |
| 227 | |
| 228 if (!msnp5_found) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
229 gaim_connection_error(gc, _("Protocol not supported")); |
| 5309 | 230 |
| 231 return FALSE; | |
| 232 } | |
| 233 | |
| 234 if (!msn_servconn_send_command(servconn, "INF", NULL)) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
235 gaim_connection_error(gc, _("Unable to request INF")); |
| 5309 | 236 |
| 237 return FALSE; | |
| 238 } | |
| 239 | |
| 240 return TRUE; | |
| 241 } | |
| 242 | |
| 243 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
244 inf_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
245 size_t param_count) |
| 5309 | 246 { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
247 GaimAccount *account = servconn->session->account; |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
248 GaimConnection *gc = gaim_account_get_connection(account); |
| 5309 | 249 char outparams[MSN_BUF_LEN]; |
| 250 | |
| 251 if (strcmp(params[1], "MD5")) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
252 gaim_connection_error(gc, _("Unable to login using MD5")); |
| 5309 | 253 |
| 254 return FALSE; | |
| 255 } | |
| 256 | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
257 g_snprintf(outparams, sizeof(outparams), "MD5 I %s", |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
258 gaim_account_get_username(account)); |
| 5309 | 259 |
| 260 if (!msn_servconn_send_command(servconn, "USR", outparams)) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
261 gaim_connection_error(gc, _("Unable to send USR")); |
| 5309 | 262 |
| 263 return FALSE; | |
| 264 } | |
| 265 | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
266 gaim_connection_update_progress(gc, _("Requesting to send password"), |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
267 5, MSN_CONNECT_STEPS); |
| 5309 | 268 |
| 269 return TRUE; | |
| 270 } | |
| 271 | |
| 272 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
273 usr_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
274 size_t param_count) |
| 5309 | 275 { |
|
5326
9737d5ce9dcd
[gaim-migrate @ 5699]
Christian Hammond <chipx86@chipx86.com>
parents:
5323
diff
changeset
|
276 MsnSession *session = servconn->session; |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
277 GaimAccount *account = session->account; |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
278 GaimConnection *gc = gaim_account_get_connection(account); |
| 5309 | 279 char outparams[MSN_BUF_LEN]; |
| 280 | |
| 281 /* We're either getting the challenge or the OK. Let's find out. */ | |
| 282 if (!g_ascii_strcasecmp(params[1], "OK")) { | |
|
5652
4fa26acb4cd3
[gaim-migrate @ 6066]
Christian Hammond <chipx86@chipx86.com>
parents:
5567
diff
changeset
|
283 const char *friendly = msn_url_decode(params[3]); |
|
5508
2a57266df5f6
[gaim-migrate @ 5907]
Christian Hammond <chipx86@chipx86.com>
parents:
5506
diff
changeset
|
284 |
| 5309 | 285 /* OK */ |
| 286 | |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
287 gaim_connection_set_display_name(gc, friendly); |
|
5508
2a57266df5f6
[gaim-migrate @ 5907]
Christian Hammond <chipx86@chipx86.com>
parents:
5506
diff
changeset
|
288 |
|
5456
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
289 session->syncing_lists = TRUE; |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
290 |
| 5309 | 291 if (!msn_servconn_send_command(servconn, "SYN", "0")) { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
292 gaim_connection_error(gc, _("Unable to write")); |
| 5309 | 293 |
| 294 return FALSE; | |
| 295 } | |
|
5326
9737d5ce9dcd
[gaim-migrate @ 5699]
Christian Hammond <chipx86@chipx86.com>
parents:
5323
diff
changeset
|
296 |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
297 gaim_connection_update_progress(gc, _("Retrieving buddy list"), |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
298 7, MSN_CONNECT_STEPS); |
| 5309 | 299 } |
| 300 else { | |
| 301 /* Challenge */ | |
| 302 const char *challenge = params[3]; | |
| 303 char buf[MSN_BUF_LEN]; | |
| 304 md5_state_t st; | |
| 305 md5_byte_t di[16]; | |
| 306 int i; | |
| 307 | |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
308 g_snprintf(buf, sizeof(buf), "%s%s", challenge, |
|
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
309 gaim_account_get_password(account)); |
| 5309 | 310 |
| 311 md5_init(&st); | |
| 312 md5_append(&st, (const md5_byte_t *)buf, strlen(buf)); | |
| 313 md5_finish(&st, di); | |
| 314 | |
| 315 g_snprintf(outparams, sizeof(outparams), "MD5 S "); | |
| 316 | |
| 317 for (i = 0; i < 16; i++) { | |
| 318 g_snprintf(buf, sizeof(buf), "%02x", di[i]); | |
| 319 strcat(outparams, buf); | |
| 320 } | |
| 321 | |
| 322 if (!msn_servconn_send_command(servconn, "USR", outparams)) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
323 gaim_connection_error(gc, _("Unable to send password")); |
| 5309 | 324 |
| 325 return FALSE; | |
| 326 } | |
| 327 | |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
328 gaim_connection_update_progress(gc, _("Password sent"), |
|
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
329 6, MSN_CONNECT_STEPS); |
| 5309 | 330 } |
| 331 | |
| 332 return TRUE; | |
| 333 } | |
| 334 | |
| 335 /************************************************************************** | |
| 336 * Log out | |
| 337 **************************************************************************/ | |
| 338 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
339 out_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
340 size_t param_count) |
| 5309 | 341 { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
342 GaimConnection *gc = servconn->session->account->gc; |
| 5309 | 343 |
| 344 if (!g_ascii_strcasecmp(params[0], "OTH")) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
345 gaim_connection_error(gc, |
| 5309 | 346 _("You have been disconnected. You have " |
| 347 "signed on from another location.")); | |
| 348 } | |
| 349 else if (!g_ascii_strcasecmp(params[0], "SSD")) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
350 gaim_connection_error(gc, |
| 5309 | 351 _("You have been disconnected. The MSN servers " |
| 352 "are going down temporarily.")); | |
| 353 } | |
| 354 | |
| 355 return FALSE; | |
| 356 } | |
| 357 | |
| 358 /************************************************************************** | |
| 359 * Messages | |
| 360 **************************************************************************/ | |
| 361 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
362 msg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
363 size_t param_count) |
| 5309 | 364 { |
| 365 gaim_debug(GAIM_DEBUG_INFO, "msn", "Found message. Parsing.\n"); | |
| 366 | |
|
5962
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
367 servconn->parsing_multiline = TRUE; |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
368 servconn->multiline_type = MSN_MULTILINE_MSG; |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
369 servconn->multiline_len = atoi(params[2]); |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
370 |
| 5309 | 371 servconn->msg_passport = g_strdup(params[0]); |
| 372 servconn->msg_friendly = g_strdup(params[1]); | |
| 373 | |
| 374 return TRUE; | |
| 375 } | |
| 376 | |
| 377 /************************************************************************** | |
| 378 * Challenges | |
| 379 **************************************************************************/ | |
| 380 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
381 chl_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
382 size_t param_count) |
| 5309 | 383 { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
384 GaimConnection *gc = servconn->session->account->gc; |
| 5309 | 385 char buf[MSN_BUF_LEN]; |
| 386 char buf2[3]; | |
| 387 md5_state_t st; | |
| 388 md5_byte_t di[16]; | |
| 389 int i; | |
| 390 | |
| 391 md5_init(&st); | |
| 392 md5_append(&st, (const md5_byte_t *)params[1], strlen(params[1])); | |
| 393 md5_append(&st, (const md5_byte_t *)"Q1P7W2E4J9R8U3S5", | |
| 394 strlen("Q1P7W2E4J9R8U3S5")); | |
| 395 md5_finish(&st, di); | |
| 396 | |
| 397 g_snprintf(buf, sizeof(buf), | |
| 398 "QRY %u msmsgs@msnmsgr.com 32\r\n", | |
| 399 servconn->session->trId++); | |
| 400 | |
| 401 for (i = 0; i < 16; i++) { | |
| 402 g_snprintf(buf2, sizeof(buf2), "%02x", di[i]); | |
| 403 strcat(buf, buf2); | |
| 404 } | |
| 405 | |
| 406 if (msn_servconn_write(servconn, buf, strlen(buf)) <= 0) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
407 gaim_connection_error(gc, _("Unable to write to server")); |
| 5309 | 408 } |
| 409 | |
| 410 return TRUE; | |
| 411 } | |
| 412 | |
| 413 /************************************************************************** | |
| 414 * Buddy Lists | |
| 415 **************************************************************************/ | |
| 416 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
417 add_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
418 size_t param_count) |
| 5309 | 419 { |
| 420 MsnSession *session = servconn->session; | |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
421 MsnUser *user; |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
422 GaimAccount *account = session->account; |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
423 GaimConnection *gc = gaim_account_get_connection(account); |
| 5309 | 424 MsnPermitAdd *pa; |
| 425 GSList *sl; | |
|
5890
1a2fcda8a5e7
[gaim-migrate @ 6322]
Christian Hammond <chipx86@chipx86.com>
parents:
5887
diff
changeset
|
426 const char *list, *passport, *group_id = NULL; |
| 5309 | 427 char *friend; |
| 428 char msg[MSN_BUF_LEN]; | |
| 429 | |
|
5918
7134be4a319f
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
430 list = params[1]; |
|
7134be4a319f
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
431 passport = params[3]; |
|
7134be4a319f
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
432 friend = msn_url_decode(params[4]); |
| 5309 | 433 |
|
5918
7134be4a319f
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
434 if (param_count >= 6) |
|
7134be4a319f
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
435 group_id = params[5]; |
| 5309 | 436 |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
437 if (!g_ascii_strcasecmp(list, "FL")) { |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
438 user = msn_user_new(session, passport, NULL); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
439 |
|
5933
44eb6d75a5c6
[gaim-migrate @ 6373]
Christian Hammond <chipx86@chipx86.com>
parents:
5918
diff
changeset
|
440 if (group_id != NULL) |
|
44eb6d75a5c6
[gaim-migrate @ 6373]
Christian Hammond <chipx86@chipx86.com>
parents:
5918
diff
changeset
|
441 msn_user_set_group_id(user, atoi(group_id)); |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
442 |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
443 add_buddy(servconn, user); |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
444 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
445 return TRUE; |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
446 } |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
447 else if (g_ascii_strcasecmp(list, "RL")) |
| 5309 | 448 return TRUE; |
| 449 | |
| 450 for (sl = gc->account->permit; sl != NULL; sl = sl->next) { | |
| 451 if (!gaim_utf8_strcasecmp(sl->data, passport)) | |
| 452 return TRUE; | |
| 453 } | |
| 454 | |
|
5457
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
455 user = msn_user_new(session, passport, friend); |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
456 |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
457 pa = g_new0(MsnPermitAdd, 1); |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
458 pa->user = user; |
|
c8c290021b7b
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
459 pa->gc = gc; |
| 5309 | 460 |
| 461 g_snprintf(msg, sizeof(msg), | |
| 462 _("The user %s (%s) wants to add %s to his or her buddy list."), | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
463 passport, friend, gaim_account_get_username(account)); |
| 5309 | 464 |
|
5498
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
465 gaim_request_action(gc, NULL, msg, NULL, 0, pa, 2, |
|
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
466 _("Authorize"), G_CALLBACK(msn_accept_add_cb), |
|
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
467 _("Deny"), G_CALLBACK(msn_cancel_add_cb)); |
| 5309 | 468 |
| 469 return TRUE; | |
| 470 } | |
| 471 | |
| 472 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
473 adg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
474 size_t param_count) |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
475 { |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
476 MsnGroup *group; |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
477 MsnSession *session = servconn->session; |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
478 gint group_id; |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
479 char *group_name; |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
480 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
481 group_id = atoi(params[3]); |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
482 |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
483 group_name = msn_url_decode(params[2]); |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
484 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
485 group = msn_group_new(session, group_id, group_name); |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
486 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
487 msn_groups_add(session->groups, group); |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
488 |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
489 return TRUE; |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
490 } |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
491 |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
492 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
493 blp_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
494 size_t param_count) |
| 5309 | 495 { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
496 GaimConnection *gc = servconn->session->account->gc; |
| 5309 | 497 |
| 498 if (!g_ascii_strcasecmp(params[2], "AL")) { | |
| 499 /* | |
| 500 * If the current setting is AL, messages from users who | |
| 501 * are not in BL will be delivered. | |
| 502 * | |
| 503 * In other words, deny some. | |
| 504 */ | |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
505 gc->account->perm_deny = DENY_SOME; |
| 5309 | 506 } |
| 507 else { | |
| 508 /* If the current setting is BL, only messages from people | |
| 509 * who are in the AL will be delivered. | |
| 510 * | |
| 511 * In other words, permit some. | |
| 512 */ | |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
513 gc->account->perm_deny = PERMIT_SOME; |
| 5309 | 514 } |
| 515 | |
| 516 return TRUE; | |
| 517 } | |
| 518 | |
| 519 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
520 bpr_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
521 size_t param_count) |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
522 { |
|
5363
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
523 MsnSession *session = servconn->session; |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
524 GaimConnection *gc = session->account->gc; |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
525 const char *passport, *type, *value; |
|
5375
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
526 struct buddy *b; |
|
5363
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
527 MsnUser *user; |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
528 |
|
5963
eb336b2c451f
[gaim-migrate @ 6410]
Christian Hammond <chipx86@chipx86.com>
parents:
5962
diff
changeset
|
529 if (param_count < 4) |
|
eb336b2c451f
[gaim-migrate @ 6410]
Christian Hammond <chipx86@chipx86.com>
parents:
5962
diff
changeset
|
530 return TRUE; |
|
eb336b2c451f
[gaim-migrate @ 6410]
Christian Hammond <chipx86@chipx86.com>
parents:
5962
diff
changeset
|
531 |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
532 passport = params[1]; |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
533 type = params[2]; |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
534 value = params[3]; |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
535 |
|
5363
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
536 user = msn_users_find_with_passport(session->users, passport); |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
537 |
|
5363
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
538 if (value != NULL) { |
|
5375
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
539 if (!strcmp(type, "MOB")) { |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
540 if (!strcmp(value, "Y")) { |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
541 user->mobile = TRUE; |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
542 |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
543 if ((b = gaim_find_buddy(gc->account, passport)) != NULL) { |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
544 if (GAIM_BUDDY_IS_ONLINE(b)) { |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
545 serv_got_update(gc, (char *)passport, |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
546 1, 0, 0, 0, b->uc); |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
547 } |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
548 } |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
549 } |
|
d8ebee2f749c
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
550 } |
|
5363
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
551 else if (!strcmp(type, "PHH")) |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
552 msn_user_set_home_phone(user, msn_url_decode(value)); |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
553 else if (!strcmp(type, "PHW")) |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
554 msn_user_set_work_phone(user, msn_url_decode(value)); |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
555 else if (!strcmp(type, "PHM")) |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
556 msn_user_set_mobile_phone(user, msn_url_decode(value)); |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
557 } |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
558 |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
559 return TRUE; |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
560 } |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
561 |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
562 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
563 fln_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
564 size_t param_count) |
| 5309 | 565 { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
566 GaimConnection *gc = servconn->session->account->gc; |
| 5309 | 567 |
| 568 serv_got_update(gc, (char *)params[0], 0, 0, 0, 0, 0); | |
| 569 | |
| 570 return TRUE; | |
| 571 } | |
| 572 | |
| 573 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
574 iln_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
575 size_t param_count) |
| 5309 | 576 { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
577 GaimConnection *gc = servconn->session->account->gc; |
| 5309 | 578 int status = 0; |
| 579 const char *state, *passport, *friend; | |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
580 struct buddy *b; |
| 5309 | 581 |
| 582 state = params[1]; | |
| 583 passport = params[2]; | |
| 584 friend = msn_url_decode(params[3]); | |
| 585 | |
| 586 serv_got_alias(gc, (char *)passport, (char *)friend); | |
| 587 | |
|
5361
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
588 if ((b = gaim_find_buddy(gc->account, passport)) != NULL) |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
589 status |= ((((b->uc) >> 1) & 0xF0) << 1); |
|
953aa05279f4
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
590 |
| 5309 | 591 if (!g_ascii_strcasecmp(state, "BSY")) |
| 592 status |= UC_UNAVAILABLE | (MSN_BUSY << 1); | |
| 593 else if (!g_ascii_strcasecmp(state, "IDL")) | |
| 594 status |= UC_UNAVAILABLE | (MSN_IDLE << 1); | |
| 595 else if (!g_ascii_strcasecmp(state, "BRB")) | |
| 596 status |= UC_UNAVAILABLE | (MSN_BRB << 1); | |
| 597 else if (!g_ascii_strcasecmp(state, "AWY")) | |
| 598 status |= UC_UNAVAILABLE | (MSN_AWAY << 1); | |
| 599 else if (!g_ascii_strcasecmp(state, "PHN")) | |
| 600 status |= UC_UNAVAILABLE | (MSN_PHONE << 1); | |
| 601 else if (!g_ascii_strcasecmp(state, "LUN")) | |
| 602 status |= UC_UNAVAILABLE | (MSN_LUNCH << 1); | |
| 603 | |
| 604 serv_got_update(gc, (char *)passport, 1, 0, 0, 0, status); | |
| 605 | |
| 606 return TRUE; | |
| 607 } | |
| 608 | |
| 609 static gboolean | |
|
5960
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
610 ipg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
611 size_t param_count) |
|
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
612 { |
|
5963
eb336b2c451f
[gaim-migrate @ 6410]
Christian Hammond <chipx86@chipx86.com>
parents:
5962
diff
changeset
|
613 /* GaimConnection *gc = servconn->session->account->gc; */ |
|
5960
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
614 |
|
5962
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
615 servconn->parsing_multiline = TRUE; |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
616 servconn->multiline_type = MSN_MULTILINE_IPG; |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
617 servconn->multiline_len = atoi(params[0]); |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
618 |
|
5960
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
619 servconn->msg_passport = NULL; |
|
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
620 servconn->msg_friendly = NULL; |
|
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
621 |
|
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
622 return TRUE; |
|
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
623 } |
|
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
624 |
|
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
625 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
626 lsg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
627 size_t param_count) |
| 5309 | 628 { |
| 629 MsnSession *session = servconn->session; | |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
630 MsnGroup *group; |
| 5309 | 631 struct group *g; |
| 632 const char *name; | |
| 633 int group_num, num_groups, group_id; | |
| 634 | |
| 635 group_num = atoi(params[2]); | |
| 636 num_groups = atoi(params[3]); | |
| 637 group_id = atoi(params[4]); | |
| 638 name = msn_url_decode(params[5]); | |
| 639 | |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
640 if (num_groups == 0) |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
641 return TRUE; |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
642 |
|
5323
29754a7d94e5
[gaim-migrate @ 5695]
Christian Hammond <chipx86@chipx86.com>
parents:
5322
diff
changeset
|
643 if (!strcmp(name, "~")) |
|
29754a7d94e5
[gaim-migrate @ 5695]
Christian Hammond <chipx86@chipx86.com>
parents:
5322
diff
changeset
|
644 name = _("Buddies"); |
|
29754a7d94e5
[gaim-migrate @ 5695]
Christian Hammond <chipx86@chipx86.com>
parents:
5322
diff
changeset
|
645 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
646 group = msn_group_new(session, group_id, name); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
647 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
648 msn_groups_add(session->groups, group); |
| 5309 | 649 |
| 650 if ((g = gaim_find_group(name)) == NULL) { | |
| 651 g = gaim_group_new(name); | |
| 652 gaim_blist_add_group(g, NULL); | |
| 653 } | |
| 654 | |
| 655 return TRUE; | |
| 656 } | |
| 657 | |
| 658 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
659 lst_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
660 size_t param_count) |
| 5309 | 661 { |
| 662 MsnSession *session = servconn->session; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
663 GaimConnection *gc = session->account->gc; |
| 5309 | 664 int user_num; |
| 665 int num_users; | |
| 666 const char *type; | |
| 5768 | 667 const char *passport = NULL; |
| 668 const char *friend = NULL; | |
| 5309 | 669 |
|
5509
f6ef1871cfcc
[gaim-migrate @ 5908]
Christian Hammond <chipx86@chipx86.com>
parents:
5508
diff
changeset
|
670 type = params[1]; |
| 5309 | 671 user_num = atoi(params[3]); |
| 672 num_users = atoi(params[4]); | |
| 673 | |
|
5509
f6ef1871cfcc
[gaim-migrate @ 5908]
Christian Hammond <chipx86@chipx86.com>
parents:
5508
diff
changeset
|
674 if (g_ascii_strcasecmp(type, "RL") && user_num == 0 && num_users == 0) |
| 5309 | 675 return TRUE; /* There are no users on this list. */ |
| 676 | |
|
5762
331295fb349e
[gaim-migrate @ 6187]
Christian Hammond <chipx86@chipx86.com>
parents:
5652
diff
changeset
|
677 if (num_users > 0) { |
|
331295fb349e
[gaim-migrate @ 6187]
Christian Hammond <chipx86@chipx86.com>
parents:
5652
diff
changeset
|
678 passport = params[5]; |
|
331295fb349e
[gaim-migrate @ 6187]
Christian Hammond <chipx86@chipx86.com>
parents:
5652
diff
changeset
|
679 friend = msn_url_decode(params[6]); |
|
331295fb349e
[gaim-migrate @ 6187]
Christian Hammond <chipx86@chipx86.com>
parents:
5652
diff
changeset
|
680 } |
| 5309 | 681 |
|
5456
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
682 if (session->syncing_lists && session->lists_synced) |
|
5406
9acf4832c0dc
[gaim-migrate @ 5782]
Christian Hammond <chipx86@chipx86.com>
parents:
5385
diff
changeset
|
683 return TRUE; |
|
9acf4832c0dc
[gaim-migrate @ 5782]
Christian Hammond <chipx86@chipx86.com>
parents:
5385
diff
changeset
|
684 |
| 5309 | 685 if (!g_ascii_strcasecmp(type, "FL") && user_num != 0) { |
| 686 /* These are users on our contact list. */ | |
| 687 MsnUser *user; | |
| 688 | |
| 689 user = msn_user_new(session, passport, friend); | |
| 690 | |
| 691 if (param_count == 8) | |
| 692 msn_user_set_group_id(user, atoi(params[7])); | |
| 693 | |
| 694 session->lists.forward = g_slist_append(session->lists.forward, user); | |
| 695 } | |
| 696 else if (!g_ascii_strcasecmp(type, "AL") && user_num != 0) { | |
| 697 /* These are users who are allowed to see our status. */ | |
| 698 if (g_slist_find_custom(gc->account->deny, passport, | |
| 699 (GCompareFunc)strcmp)) { | |
| 700 | |
| 701 gaim_debug(GAIM_DEBUG_INFO, "msn", | |
| 702 "Moving user from deny list to permit: %s (%s)\n", | |
| 703 passport, friend); | |
| 704 | |
| 705 gaim_privacy_deny_remove(gc->account, passport); | |
| 706 } | |
| 707 | |
| 708 gaim_privacy_permit_add(gc->account, passport); | |
| 709 } | |
| 710 else if (!g_ascii_strcasecmp(type, "BL") && user_num != 0) { | |
| 711 /* These are users who are not allowed to see our status. */ | |
| 712 gaim_privacy_deny_add(gc->account, passport); | |
| 713 } | |
| 714 else if (!g_ascii_strcasecmp(type, "RL")) { | |
| 715 /* These are users who have us on their contact list. */ | |
| 716 if (user_num > 0) { | |
| 717 gboolean new_entry = TRUE; | |
| 718 | |
| 719 if (g_slist_find_custom(gc->account->permit, passport, | |
| 720 (GCompareFunc)g_ascii_strcasecmp)) { | |
| 721 new_entry = FALSE; | |
| 722 } | |
| 723 | |
| 724 if (g_slist_find_custom(gc->account->deny, passport, | |
| 725 (GCompareFunc)g_ascii_strcasecmp)) { | |
| 726 new_entry = FALSE; | |
| 727 } | |
| 728 | |
| 729 if (new_entry) { | |
| 730 MsnPermitAdd *pa; | |
| 731 char msg[MSN_BUF_LEN]; | |
| 732 | |
| 733 gaim_debug(GAIM_DEBUG_WARNING, "msn", | |
| 734 "Unresolved MSN RL entry: %s\n", passport); | |
| 735 | |
| 736 pa = g_new0(MsnPermitAdd, 1); | |
| 737 pa->user = msn_user_new(session, passport, friend); | |
| 738 pa->gc = gc; | |
| 739 | |
| 740 g_snprintf(msg, sizeof(msg), | |
| 741 _("The user %s (%s) wants to add you to their " | |
| 742 "buddy list."), | |
| 743 msn_user_get_passport(pa->user), | |
| 744 msn_user_get_name(pa->user)); | |
| 745 | |
|
5498
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
746 gaim_request_action(gc, NULL, msg, NULL, 0, pa, 2, |
|
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
747 _("Authorize"), |
|
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
748 G_CALLBACK(msn_accept_add_cb), |
|
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
749 _("Deny"), |
|
cce2d7868c78
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
750 G_CALLBACK(msn_cancel_add_cb)); |
| 5309 | 751 } |
| 752 } | |
| 753 | |
| 754 if (user_num != num_users) | |
| 755 return TRUE; /* This isn't the last one in the RL. */ | |
| 756 | |
|
5456
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
757 /* Now we're at the last one, so we can do final work. */ |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
758 if (!session->lists_synced) { |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
759 if (!msn_servconn_send_command(servconn, "CHG", "NLN")) { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
760 gaim_connection_error(gc, _("Unable to write")); |
| 5309 | 761 |
|
5456
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
762 return FALSE; |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
763 } |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
764 |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
765 gaim_connection_set_state(gc, GAIM_CONNECTED); |
|
5456
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
766 serv_finish_login(gc); |
| 5309 | 767 } |
| 768 | |
|
5456
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
769 if (session->lists.allow == NULL) |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
770 session->lists.allow = g_slist_copy(gc->account->permit); |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
771 else |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
772 session->lists.allow = g_slist_concat(session->lists.allow, |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
773 gc->account->permit); |
| 5309 | 774 |
|
5456
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
775 if (session->lists.block == NULL) |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
776 session->lists.block = g_slist_copy(gc->account->deny); |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
777 else |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
778 session->lists.block = g_slist_concat(session->lists.block, |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
779 gc->account->deny); |
| 5309 | 780 |
| 781 while (session->lists.forward != NULL) { | |
| 782 MsnUser *user = session->lists.forward->data; | |
| 783 | |
| 784 session->lists.forward = g_slist_remove(session->lists.forward, | |
| 785 user); | |
| 786 | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
787 add_buddy(servconn, user); |
| 5309 | 788 } |
|
5406
9acf4832c0dc
[gaim-migrate @ 5782]
Christian Hammond <chipx86@chipx86.com>
parents:
5385
diff
changeset
|
789 |
|
5456
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
790 session->syncing_lists = FALSE; |
|
40e976d42028
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
791 session->lists_synced = TRUE; |
| 5309 | 792 } |
| 793 | |
| 794 return TRUE; | |
| 795 } | |
| 796 | |
| 797 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
798 nln_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
799 size_t param_count) |
| 5309 | 800 { |
| 801 MsnSession *session = servconn->session; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
802 GaimConnection *gc = session->account->gc; |
| 5309 | 803 const char *state; |
| 804 const char *passport; | |
| 805 const char *friend; | |
| 806 int status = 0; | |
| 807 | |
| 808 state = params[0]; | |
| 809 passport = params[1]; | |
| 810 friend = msn_url_decode(params[2]); | |
| 811 | |
| 812 serv_got_alias(gc, (char *)passport, (char *)friend); | |
| 813 | |
| 814 if (!g_ascii_strcasecmp(state, "BSY")) | |
| 815 status |= UC_UNAVAILABLE | (MSN_BUSY << 1); | |
| 816 else if (!g_ascii_strcasecmp(state, "IDL")) | |
| 817 status |= UC_UNAVAILABLE | (MSN_IDLE << 1); | |
| 818 else if (!g_ascii_strcasecmp(state, "BRB")) | |
| 819 status |= UC_UNAVAILABLE | (MSN_BRB << 1); | |
| 820 else if (!g_ascii_strcasecmp(state, "AWY")) | |
| 821 status |= UC_UNAVAILABLE | (MSN_AWAY << 1); | |
| 822 else if (!g_ascii_strcasecmp(state, "PHN")) | |
| 823 status |= UC_UNAVAILABLE | (MSN_PHONE << 1); | |
| 824 else if (!g_ascii_strcasecmp(state, "LUN")) | |
| 825 status |= UC_UNAVAILABLE | (MSN_LUNCH << 1); | |
| 826 | |
| 827 serv_got_update(gc, (char *)passport, 1, 0, 0, 0, status); | |
| 828 | |
| 829 return TRUE; | |
| 830 } | |
| 831 | |
| 832 static gboolean | |
|
5961
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
833 not_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
834 size_t param_count) |
|
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
835 { |
|
5963
eb336b2c451f
[gaim-migrate @ 6410]
Christian Hammond <chipx86@chipx86.com>
parents:
5962
diff
changeset
|
836 /* GaimConnection *gc = servconn->session->account->gc; */ |
|
5961
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
837 |
|
5962
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
838 servconn->parsing_multiline = TRUE; |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
839 servconn->multiline_type = MSN_MULTILINE_NOT; |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
840 servconn->multiline_len = atoi(params[0]); |
|
115769a4c6fc
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
841 |
|
5961
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
842 servconn->msg_passport = NULL; |
|
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
843 servconn->msg_friendly = NULL; |
|
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
844 |
|
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
845 return TRUE; |
|
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
846 } |
|
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
847 |
|
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
848 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
849 prp_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
850 size_t param_count) |
|
5363
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
851 { |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
852 MsnSession *session = servconn->session; |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
853 const char *type, *value; |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
854 |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
855 type = params[2]; |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
856 value = params[3]; |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
857 |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
858 if (param_count == 4) { |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
859 if (!strcmp(type, "PHH")) |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
860 msn_user_set_home_phone(session->user, msn_url_decode(value)); |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
861 else if (!strcmp(type, "PHW")) |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
862 msn_user_set_work_phone(session->user, msn_url_decode(value)); |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
863 else if (!strcmp(type, "PHM")) |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
864 msn_user_set_mobile_phone(session->user, msn_url_decode(value)); |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
865 } |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
866 |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
867 return TRUE; |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
868 } |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
869 |
|
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
870 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
871 rea_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
872 size_t param_count) |
| 5309 | 873 { |
| 874 MsnSession *session = servconn->session; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
875 GaimConnection *gc = session->account->gc; |
| 5309 | 876 char *friend; |
| 877 | |
|
5479
175de59cd1c5
[gaim-migrate @ 5875]
Christian Hammond <chipx86@chipx86.com>
parents:
5457
diff
changeset
|
878 friend = msn_url_decode(params[3]); |
| 5309 | 879 |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
880 gaim_connection_set_display_name(gc, friend); |
| 5309 | 881 |
| 882 return TRUE; | |
| 883 } | |
| 884 | |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
885 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
886 reg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
887 size_t param_count) |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
888 { |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
889 MsnSession *session = servconn->session; |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
890 MsnGroup *group; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
891 int group_id; |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
892 char *group_name; |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
893 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
894 group_id = atoi(params[2]); |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
895 |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
896 group_name = msn_url_decode(params[3]); |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
897 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
898 group = msn_groups_find_with_id(session->groups, group_id); |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
899 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
900 gaim_debug(GAIM_DEBUG_INFO, "msn", "Renamed group %s to %s\n", |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
901 msn_group_get_name(group), group_name); |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
902 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
903 if (group != NULL) |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
904 msn_group_set_name(group, group_name); |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
905 |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
906 return TRUE; |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
907 } |
|
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
908 |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
909 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
910 rem_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
911 size_t param_count) |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
912 { |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
913 MsnSession *session = servconn->session; |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
914 |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
915 /* I hate this. */ |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
916 if (session->moving_buddy) { |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
917 MsnGroup *group, *old_group; |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
918 GaimConnection *gc = session->account->gc; |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
919 const char *passport = params[3]; |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
920 char outparams[MSN_BUF_LEN]; |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
921 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
922 group = msn_groups_find_with_name(session->groups, |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
923 session->dest_group_name); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
924 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
925 old_group = session->old_group; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
926 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
927 session->moving_buddy = FALSE; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
928 session->old_group = NULL; |
|
5327
b716ffc25d2d
[gaim-migrate @ 5700]
Christian Hammond <chipx86@chipx86.com>
parents:
5326
diff
changeset
|
929 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
930 if (group == NULL) { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
931 gaim_debug(GAIM_DEBUG_ERROR, "msn", |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
932 "Still don't have a group ID for %s while moving %s!\n", |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
933 session->dest_group_name, passport); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
934 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
935 g_free(session->dest_group_name); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
936 session->dest_group_name = NULL; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
937 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
938 return TRUE; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
939 } |
|
5327
b716ffc25d2d
[gaim-migrate @ 5700]
Christian Hammond <chipx86@chipx86.com>
parents:
5326
diff
changeset
|
940 |
|
b716ffc25d2d
[gaim-migrate @ 5700]
Christian Hammond <chipx86@chipx86.com>
parents:
5326
diff
changeset
|
941 g_free(session->dest_group_name); |
|
b716ffc25d2d
[gaim-migrate @ 5700]
Christian Hammond <chipx86@chipx86.com>
parents:
5326
diff
changeset
|
942 session->dest_group_name = NULL; |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
943 |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
944 g_snprintf(outparams, sizeof(outparams), "FL %s %s %d", |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
945 passport, passport, msn_group_get_id(group)); |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
946 |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
947 if (!msn_servconn_send_command(session->notification_conn, |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
948 "ADD", outparams)) { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
949 gaim_connection_error(gc, _("Write error")); |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
950 return FALSE; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
951 } |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
952 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
953 if (old_group != NULL) |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
954 msn_group_remove_user(old_group, session->moving_user); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
955 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
956 msn_user_unref(session->moving_user); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
957 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
958 session->moving_user = NULL; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
959 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
960 if (old_group != NULL && |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
961 msn_users_get_count(msn_group_get_users(old_group)) <= 0) { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
962 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
963 g_snprintf(outparams, sizeof(outparams), "%d", |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
964 msn_group_get_id(old_group)); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
965 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
966 if (!msn_servconn_send_command(session->notification_conn, |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
967 "RMG", outparams)) { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
968 |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
969 gaim_connection_error(gc, _("Write error")); |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
970 return FALSE; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
971 } |
|
5322
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
972 } |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
973 } |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
974 |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
975 return TRUE; |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
976 } |
|
a4d017bee1de
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
977 |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
978 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
979 rmg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
980 size_t param_count) |
|
5518
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
981 { |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
982 MsnSession *session = servconn->session; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
983 MsnGroup *group; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
984 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
985 group = msn_groups_find_with_id(session->groups, atoi(params[2])); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
986 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
987 if (group != NULL) |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
988 msn_groups_remove(session->groups, group); |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
989 |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
990 return TRUE; |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
991 } |
|
bf2a7a7b739d
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
992 |
| 5309 | 993 /************************************************************************** |
| 994 * Misc commands | |
| 995 **************************************************************************/ | |
| 996 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
997 url_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
998 size_t param_count) |
| 5309 | 999 { |
| 1000 MsnSession *session = servconn->session; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1001 GaimAccount *account = session->account; |
| 5309 | 1002 const char *rru; |
| 1003 const char *url; | |
| 1004 md5_state_t st; | |
| 1005 md5_byte_t di[16]; | |
| 1006 FILE *fd; | |
| 1007 char buf[2048]; | |
| 1008 char buf2[3]; | |
| 1009 char sendbuf[64]; | |
| 1010 int i; | |
| 1011 | |
| 1012 rru = params[1]; | |
| 1013 url = params[2]; | |
| 1014 | |
| 1015 g_snprintf(buf, sizeof(buf), "%s%lu%s", | |
| 1016 session->passport_info.mspauth, | |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1017 time(NULL) - session->passport_info.sl, |
|
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1018 gaim_account_get_password(account)); |
| 5309 | 1019 |
| 1020 md5_init(&st); | |
| 1021 md5_append(&st, (const md5_byte_t *)buf, strlen(buf)); | |
| 1022 md5_finish(&st, di); | |
| 1023 | |
| 1024 memset(sendbuf, 0, sizeof(sendbuf)); | |
| 1025 | |
| 1026 for (i = 0; i < 16; i++) { | |
| 1027 g_snprintf(buf2, sizeof(buf2), "%02x", di[i]); | |
| 1028 strcat(sendbuf, buf2); | |
| 1029 } | |
| 1030 | |
| 1031 if (session->passport_info.file != NULL) { | |
| 1032 unlink(session->passport_info.file); | |
| 1033 g_free(session->passport_info.file); | |
| 1034 } | |
| 1035 | |
| 1036 if ((fd = gaim_mkstemp(&session->passport_info.file)) == NULL) { | |
| 1037 gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
| 1038 "Error opening temp passport file: %s\n", | |
| 1039 strerror(errno)); | |
| 1040 } | |
| 1041 else { | |
| 1042 fputs("<html>\n" | |
| 1043 "<head>\n" | |
| 1044 "<noscript>\n" | |
| 1045 "<meta http-equiv=\"Refresh\" content=\"0; " | |
| 1046 "url=http://www.hotmail.com\">\n" | |
| 1047 "</noscript>\n" | |
| 1048 "</head>\n\n", | |
| 1049 fd); | |
| 1050 | |
| 1051 fprintf(fd, "<body onload=\"document.pform.submit(); \">\n"); | |
| 1052 fprintf(fd, "<form name=\"pform\" action=\"%s\" method=\"POST\">\n\n", | |
| 1053 url); | |
| 1054 fprintf(fd, "<input type=\"hidden\" name=\"mode\" value=\"ttl\">\n"); | |
| 1055 fprintf(fd, "<input type=\"hidden\" name=\"login\" value=\"%s\">\n", | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1056 gaim_account_get_username(account)); |
| 5309 | 1057 fprintf(fd, "<input type=\"hidden\" name=\"username\" value=\"%s\">\n", |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1058 gaim_account_get_username(account)); |
| 5309 | 1059 fprintf(fd, "<input type=\"hidden\" name=\"sid\" value=\"%s\">\n", |
| 1060 session->passport_info.sid); | |
| 1061 fprintf(fd, "<input type=\"hidden\" name=\"kv\" value=\"%s\">\n", | |
| 1062 session->passport_info.kv); | |
| 1063 fprintf(fd, "<input type=\"hidden\" name=\"id\" value=\"2\">\n"); | |
| 1064 fprintf(fd, "<input type=\"hidden\" name=\"sl\" value=\"%ld\">\n", | |
| 1065 time(NULL) - session->passport_info.sl); | |
| 1066 fprintf(fd, "<input type=\"hidden\" name=\"rru\" value=\"%s\">\n", | |
| 1067 rru); | |
| 1068 fprintf(fd, "<input type=\"hidden\" name=\"auth\" value=\"%s\">\n", | |
| 1069 session->passport_info.mspauth); | |
| 1070 fprintf(fd, "<input type=\"hidden\" name=\"creds\" value=\"%s\">\n", | |
| 1071 sendbuf); /* TODO Digest me (huh? -- ChipX86) */ | |
| 1072 fprintf(fd, "<input type=\"hidden\" name=\"svc\" value=\"mail\">\n"); | |
| 1073 fprintf(fd, "<input type=\"hiden\" name=\"js\" value=\"yes\">\n"); | |
| 1074 fprintf(fd, "</form></body>\n"); | |
| 1075 fprintf(fd, "</html>\n"); | |
| 1076 | |
| 1077 if (fclose(fd)) { | |
| 1078 gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
| 1079 "Error closing temp passport file: %s\n", | |
| 1080 strerror(errno)); | |
| 1081 | |
| 1082 unlink(session->passport_info.file); | |
| 1083 g_free(session->passport_info.file); | |
| 1084 } | |
| 1085 else { | |
| 1086 /* | |
| 1087 * Renaming file with .html extension, so that the | |
| 1088 * win32 open_url will work. | |
| 1089 */ | |
| 1090 char *tmp; | |
| 1091 | |
| 1092 if ((tmp = g_strdup_printf("%s.html", | |
| 1093 session->passport_info.file)) != NULL) { | |
| 1094 | |
| 1095 if (rename(session->passport_info.file, tmp) == 0) { | |
| 1096 g_free(session->passport_info.file); | |
| 1097 session->passport_info.file = tmp; | |
| 1098 } | |
| 1099 else | |
| 1100 g_free(tmp); | |
| 1101 } | |
| 1102 } | |
| 1103 } | |
| 1104 | |
| 1105 return TRUE; | |
| 1106 } | |
| 1107 /************************************************************************** | |
| 1108 * Switchboards | |
| 1109 **************************************************************************/ | |
| 1110 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1111 rng_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1112 size_t param_count) |
| 5309 | 1113 { |
| 1114 MsnSession *session = servconn->session; | |
| 1115 MsnSwitchBoard *swboard; | |
| 1116 MsnUser *user; | |
| 1117 const char *session_id; | |
| 1118 char *host, *c; | |
| 1119 int port; | |
| 1120 | |
| 1121 session_id = params[0]; | |
| 1122 | |
| 1123 host = g_strdup(params[1]); | |
| 1124 | |
| 1125 if ((c = strchr(host, ':')) != NULL) { | |
| 1126 *c = '\0'; | |
| 1127 port = atoi(c + 1); | |
| 1128 } | |
| 1129 else | |
| 1130 port = 1863; | |
| 1131 | |
| 1132 swboard = msn_switchboard_new(session); | |
| 1133 | |
| 1134 user = msn_user_new(session, params[4], NULL); | |
| 1135 | |
| 1136 msn_switchboard_set_invited(swboard, TRUE); | |
| 1137 msn_switchboard_set_session_id(swboard, params[0]); | |
| 1138 msn_switchboard_set_auth_key(swboard, params[3]); | |
| 1139 msn_switchboard_set_user(swboard, user); | |
| 1140 | |
| 1141 if (!msn_switchboard_connect(swboard, host, port)) { | |
| 1142 gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
| 1143 "Unable to connect to switchboard on %s, port %d\n", | |
| 1144 host, port); | |
| 1145 | |
| 1146 g_free(host); | |
| 1147 | |
| 1148 return FALSE; | |
| 1149 } | |
| 1150 | |
| 1151 g_free(host); | |
| 1152 | |
| 1153 return TRUE; | |
| 1154 } | |
| 1155 | |
| 1156 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1157 xfr_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1158 size_t param_count) |
| 5309 | 1159 { |
| 1160 MsnSession *session = servconn->session; | |
| 1161 MsnSwitchBoard *swboard; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1162 GaimConnection *gc = session->account->gc; |
| 5309 | 1163 char *host; |
| 1164 char *c; | |
| 1165 int port; | |
| 1166 | |
|
5385
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1167 if (strcmp(params[1], "SB") && strcmp(params[1], "NS")) { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1168 gaim_connection_error(gc, _("Got invalid XFR")); |
| 5309 | 1169 |
| 1170 return FALSE; | |
| 1171 } | |
| 1172 | |
| 1173 host = g_strdup(params[2]); | |
| 1174 | |
| 1175 if ((c = strchr(host, ':')) != NULL) { | |
| 1176 *c = '\0'; | |
| 1177 port = atoi(c + 1); | |
| 1178 } | |
| 1179 else | |
| 1180 port = 1863; | |
| 1181 | |
|
5385
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1182 if (!strcmp(params[1], "SB")) { |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1183 swboard = msn_session_find_unused_switch(session); |
| 5309 | 1184 |
|
5385
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1185 if (swboard == NULL) { |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1186 gaim_debug(GAIM_DEBUG_ERROR, "msn", |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1187 "Received an XFR SB request when there's no unused " |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1188 "switchboards!\n"); |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1189 return FALSE; |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1190 } |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1191 |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1192 msn_switchboard_set_auth_key(swboard, params[4]); |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1193 |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1194 if (!msn_switchboard_connect(swboard, host, port)) { |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1195 gaim_debug(GAIM_DEBUG_ERROR, "msn", |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1196 "Unable to connect to switchboard on %s, port %d\n", |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1197 host, port); |
| 5309 | 1198 |
|
5385
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1199 g_free(host); |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1200 |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1201 return FALSE; |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1202 } |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1203 } |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1204 else if (!strcmp(params[1], "NS")) { |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1205 msn_servconn_destroy(session->notification_conn); |
| 5309 | 1206 |
|
5385
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1207 session->notification_conn = msn_notification_new(session, host, port); |
| 5309 | 1208 |
|
5385
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1209 if (!msn_servconn_connect(session->notification_conn)) { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1210 gaim_connection_error(gc, _("Unable to transfer to " |
|
5385
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1211 "notification server")); |
| 5309 | 1212 |
|
5385
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1213 return FALSE; |
|
150cf1615098
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1214 } |
| 5309 | 1215 } |
| 1216 | |
| 1217 g_free(host); | |
| 1218 | |
| 1219 return TRUE; | |
| 1220 } | |
| 1221 | |
| 1222 /************************************************************************** | |
| 1223 * Message Types | |
| 1224 **************************************************************************/ | |
| 1225 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1226 profile_msg(MsnServConn *servconn, MsnMessage *msg) |
| 5309 | 1227 { |
| 1228 MsnSession *session = servconn->session; | |
| 1229 const char *value; | |
| 1230 | |
|
5333
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1231 if (strcmp(servconn->msg_passport, "Hotmail")) { |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1232 /* This isn't an official message. */ |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1233 return TRUE; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1234 } |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1235 |
| 5309 | 1236 if ((value = msn_message_get_attr(msg, "kv")) != NULL) |
| 1237 session->passport_info.kv = g_strdup(value); | |
| 1238 | |
| 1239 if ((value = msn_message_get_attr(msg, "sid")) != NULL) | |
| 1240 session->passport_info.sid = g_strdup(value); | |
| 1241 | |
| 1242 if ((value = msn_message_get_attr(msg, "MSPAuth")) != NULL) | |
| 1243 session->passport_info.mspauth = g_strdup(value); | |
| 1244 | |
| 1245 return TRUE; | |
| 1246 } | |
| 1247 | |
| 1248 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1249 initial_email_msg(MsnServConn *servconn, MsnMessage *msg) |
| 5309 | 1250 { |
| 1251 MsnSession *session = servconn->session; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1252 GaimConnection *gc = session->account->gc; |
| 5309 | 1253 GHashTable *table; |
| 1254 const char *unread; | |
| 1255 | |
|
5333
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1256 if (strcmp(servconn->msg_passport, "Hotmail")) { |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1257 /* This isn't an official message. */ |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1258 return TRUE; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1259 } |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1260 |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1261 if (!gaim_account_get_check_mail(session->account)) |
|
5520
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1262 return TRUE; |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1263 |
|
5358
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1264 if (session->passport_info.file == NULL) { |
|
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1265 msn_servconn_send_command(servconn, "URL", "INBOX"); |
|
5506
4f72b611f0ee
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1266 |
|
4f72b611f0ee
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1267 msn_servconn_queue_message(servconn, "URL", msg); |
|
4f72b611f0ee
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1268 |
|
5358
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1269 return TRUE; |
|
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1270 } |
|
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1271 |
| 5309 | 1272 table = msn_message_get_hashtable_from_body(msg); |
| 1273 | |
| 1274 unread = g_hash_table_lookup(table, "Inbox-Unread"); | |
| 1275 | |
|
5520
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1276 if (unread != NULL) { |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1277 const char *passport = msn_user_get_passport(session->user); |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1278 const char *url = session->passport_info.file; |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1279 |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1280 gaim_notify_emails(gc, atoi(unread), FALSE, NULL, NULL, |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1281 &passport, &url, NULL, NULL); |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1282 } |
| 5309 | 1283 |
| 1284 g_hash_table_destroy(table); | |
| 1285 | |
| 1286 return TRUE; | |
| 1287 } | |
| 1288 | |
| 1289 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1290 email_msg(MsnServConn *servconn, MsnMessage *msg) |
| 5309 | 1291 { |
| 1292 MsnSession *session = servconn->session; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1293 GaimConnection *gc = session->account->gc; |
| 5309 | 1294 GHashTable *table; |
| 1295 const char *from, *subject; | |
| 1296 | |
|
5333
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1297 if (strcmp(servconn->msg_passport, "Hotmail")) { |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1298 /* This isn't an official message. */ |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1299 return TRUE; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1300 } |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1301 |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1302 if (!gaim_account_get_check_mail(session->account)) |
|
5520
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1303 return TRUE; |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1304 |
|
5358
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1305 if (session->passport_info.file == NULL) { |
|
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1306 msn_servconn_send_command(servconn, "URL", "INBOX"); |
|
5506
4f72b611f0ee
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1307 |
|
4f72b611f0ee
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1308 msn_servconn_queue_message(servconn, "URL", msg); |
|
4f72b611f0ee
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1309 |
|
5358
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1310 return TRUE; |
|
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1311 } |
|
91db34a45cbe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1312 |
| 5309 | 1313 table = msn_message_get_hashtable_from_body(msg); |
| 1314 | |
| 1315 from = g_hash_table_lookup(table, "From"); | |
| 1316 subject = g_hash_table_lookup(table, "Subject"); | |
| 1317 | |
|
5520
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1318 gaim_notify_email(gc, subject, from, msn_user_get_passport(session->user), |
|
11be8ae32937
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1319 session->passport_info.file, NULL, NULL); |
| 5309 | 1320 |
| 1321 g_hash_table_destroy(table); | |
| 1322 | |
| 1323 return TRUE; | |
| 1324 } | |
| 1325 | |
| 1326 static gboolean | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1327 system_msg(MsnServConn *servconn, MsnMessage *msg) |
|
5333
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1328 { |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1329 GHashTable *table; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1330 const char *type_s; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1331 |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1332 if (strcmp(servconn->msg_passport, "Hotmail")) { |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1333 /* This isn't an official message. */ |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1334 return TRUE; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1335 } |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1336 |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1337 table = msn_message_get_hashtable_from_body(msg); |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1338 |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1339 if ((type_s = g_hash_table_lookup(table, "Type")) != NULL) { |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1340 int type = atoi(type_s); |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1341 char buf[MSN_BUF_LEN]; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1342 |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1343 switch (type) { |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1344 case 1: |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1345 g_snprintf(buf, sizeof(buf), |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1346 _("The MSN server will shut down for maintenance " |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1347 "in %d minute(s). You will automatically be " |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1348 "signed out at that time. Please finish any " |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1349 "conversations in progress.\n\n" |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1350 "After the maintenance has been completed, you " |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1351 "will be able to successfully sign in."), |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1352 atoi(g_hash_table_lookup(table, "Arg1"))); |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1353 |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1354 default: |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1355 break; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1356 } |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1357 |
|
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5406
diff
changeset
|
1358 if (*buf != '\0') |
|
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5406
diff
changeset
|
1359 gaim_notify_info(servconn->session->account->gc, NULL, buf, NULL); |
|
5333
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1360 } |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1361 |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1362 g_hash_table_destroy(table); |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1363 |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1364 return TRUE; |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1365 } |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1366 |
|
5333
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1367 static gboolean |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1368 connect_cb(gpointer data, gint source, GaimInputCondition cond) |
| 5309 | 1369 { |
| 1370 MsnServConn *notification = data; | |
| 1371 MsnSession *session = notification->session; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1372 GaimAccount *account = session->account; |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1373 GaimConnection *gc = gaim_account_get_connection(account); |
| 5309 | 1374 |
| 1375 if (source == -1) { | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1376 gaim_connection_error(session->account->gc, _("Unable to connect")); |
| 5309 | 1377 return FALSE; |
| 1378 } | |
| 1379 | |
| 1380 if (notification->fd != source) | |
| 1381 notification->fd = source; | |
| 1382 | |
| 1383 if (!msn_servconn_send_command(notification, "VER", | |
|
5318
bd98232872a3
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1384 "MSNP7 MSNP6 MSNP5 MSNP4 CVR0")) { |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1385 gaim_connection_error(gc, _("Unable to write to server")); |
| 5309 | 1386 return FALSE; |
| 1387 } | |
| 1388 | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1389 session->user = msn_user_new(session, |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1390 gaim_account_get_username(account), NULL); |
|
5363
ebebc833cf77
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1391 |
|
5566
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1392 gaim_connection_update_progress(gc, _("Syncing with server"), |
|
9896e9068bc4
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1393 4, MSN_CONNECT_STEPS); |
| 5309 | 1394 |
| 1395 return TRUE; | |
| 1396 } | |
| 1397 | |
| 1398 static void | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1399 failed_read_cb(gpointer data, gint source, GaimInputCondition cond) |
| 5309 | 1400 { |
| 1401 MsnServConn *notification = data; | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1402 GaimConnection *gc; |
| 5309 | 1403 |
| 1404 gc = notification->session->account->gc; | |
| 1405 | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1406 gaim_connection_error(gc, _("Error reading from server")); |
| 5309 | 1407 } |
| 1408 | |
| 1409 MsnServConn * | |
| 1410 msn_notification_new(MsnSession *session, const char *server, int port) | |
| 1411 { | |
| 1412 MsnServConn *notification; | |
| 1413 | |
| 1414 notification = msn_servconn_new(session); | |
| 1415 | |
| 1416 msn_servconn_set_server(notification, server, port); | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1417 msn_servconn_set_connect_cb(notification, connect_cb); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1418 msn_servconn_set_failed_read_cb(notification, failed_read_cb); |
| 5309 | 1419 |
| 1420 if (notification_commands == NULL) { | |
| 1421 /* Register the command callbacks. */ | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1422 msn_servconn_register_command(notification, "ADD", add_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1423 msn_servconn_register_command(notification, "ADG", adg_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1424 msn_servconn_register_command(notification, "BLP", blp_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1425 msn_servconn_register_command(notification, "BPR", bpr_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1426 msn_servconn_register_command(notification, "CHG", blank_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1427 msn_servconn_register_command(notification, "CHL", chl_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1428 msn_servconn_register_command(notification, "FLN", fln_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1429 msn_servconn_register_command(notification, "GTC", blank_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1430 msn_servconn_register_command(notification, "ILN", iln_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1431 msn_servconn_register_command(notification, "INF", inf_cmd); |
|
5960
03bf7c905782
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
1432 msn_servconn_register_command(notification, "IPG", ipg_cmd); |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1433 msn_servconn_register_command(notification, "LSG", lsg_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1434 msn_servconn_register_command(notification, "LST", lst_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1435 msn_servconn_register_command(notification, "MSG", msg_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1436 msn_servconn_register_command(notification, "NLN", nln_cmd); |
|
5961
fc8ba872a43f
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1437 msn_servconn_register_command(notification, "NOT", not_cmd); |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1438 msn_servconn_register_command(notification, "OUT", out_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1439 msn_servconn_register_command(notification, "PRP", prp_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1440 msn_servconn_register_command(notification, "QNG", blank_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1441 msn_servconn_register_command(notification, "QRY", blank_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1442 msn_servconn_register_command(notification, "REA", rea_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1443 msn_servconn_register_command(notification, "REG", reg_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1444 msn_servconn_register_command(notification, "REM", rem_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1445 msn_servconn_register_command(notification, "RMG", rmg_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1446 msn_servconn_register_command(notification, "RNG", rng_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1447 msn_servconn_register_command(notification, "SYN", blank_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1448 msn_servconn_register_command(notification, "URL", url_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1449 msn_servconn_register_command(notification, "USR", usr_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1450 msn_servconn_register_command(notification, "VER", ver_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1451 msn_servconn_register_command(notification, "XFR", xfr_cmd); |
|
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1452 msn_servconn_register_command(notification, "_unknown_", unknown_cmd); |
| 5309 | 1453 |
| 1454 /* Register the message type callbacks. */ | |
| 1455 msn_servconn_register_msg_type(notification, "text/x-msmsgsprofile", | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1456 profile_msg); |
| 5309 | 1457 msn_servconn_register_msg_type(notification, |
| 1458 "text/x-msmsgsinitialemailnotification", | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1459 initial_email_msg); |
| 5309 | 1460 msn_servconn_register_msg_type(notification, |
| 1461 "text/x-msmsgsemailnotification", | |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1462 email_msg); |
|
5333
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1463 msn_servconn_register_msg_type(notification, |
|
bbbf616bd924
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1464 "application/x-msmsgssystemmessage", |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1465 system_msg); |
| 5309 | 1466 |
| 1467 /* Save these for future use. */ | |
| 1468 notification_commands = notification->commands; | |
| 1469 notification_msg_types = notification->msg_types; | |
| 1470 } | |
| 1471 else { | |
| 1472 g_hash_table_destroy(notification->commands); | |
| 1473 g_hash_table_destroy(notification->msg_types); | |
| 1474 | |
| 1475 notification->commands = notification_commands; | |
| 1476 notification->msg_types = notification_msg_types; | |
| 1477 } | |
| 1478 | |
| 1479 return notification; | |
| 1480 } |
