Tue, 13 Apr 2004 04:08:22 +0000
[gaim-migrate @ 9398]
Added a patch by shx to clean up the message-handling code and split the
command stuff from it, among a few other things. Also, I fixed a crash in
message parsing, which I think may close a couple bug reports.
committer: Christian Hammond <chipx86@chipx86.com>
| 5309 | 1 | /** |
| 2 | * @file notification.c Notification server functions | |
| 3 | * | |
| 4 | * gaim | |
| 5 | * | |
|
8475
3b5687726055
[gaim-migrate @ 9208]
Christian Hammond <chipx86@chipx86.com>
parents:
8255
diff
changeset
|
6 | * Copyright (C) 2003-2004 Christian Hammond <chipx86@gnupdate.org> |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
7 | * |
| 5309 | 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
a964b856e97f
[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
1779a1bfbdb8
[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
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
39 | * Utility functions |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
40 | **************************************************************************/ |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
41 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
42 | add_buddy(MsnServConn *servconn, MsnUser *user) |
|
5457
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
43 | { |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
44 | MsnSession *session = servconn->session; |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
45 | GaimAccount *account = session->account; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
46 | GaimConnection *gc = gaim_account_get_connection(account); |
| 6695 | 47 | GaimBuddy *b; |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
48 | MsnGroup *group = NULL; |
| 6695 | 49 | GaimGroup *g = NULL; |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
50 | GList *l, *l2; |
|
6767
88a8313e2b16
[gaim-migrate @ 7304]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
51 | GSList *sl; |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
52 | GSList *buddies; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
53 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
54 | buddies = gaim_find_buddies(account, msn_user_get_passport(user)); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
55 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
56 | for (l = msn_user_get_group_ids(user); l != NULL; l = l->next) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
57 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
58 | int group_id = GPOINTER_TO_INT(l->data); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
59 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
60 | if (group_id > -1) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
61 | group = msn_groups_find_with_id(session->groups, group_id); |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
62 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
63 | if (group == NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
64 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
65 | gaim_debug(GAIM_DEBUG_WARNING, "msn", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
66 | "Group ID %d for user %s was not defined.\n", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
67 | group_id, msn_user_get_passport(user)); |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
68 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
69 | /* Find a group that we can stick this guy into. Lamer. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
70 | l2 = msn_groups_get_list(session->groups); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
71 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
72 | if (l2 != NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
73 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
74 | group = l2->data; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
75 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
76 | msn_user_add_group_id(user, msn_group_get_id(group)); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
77 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
78 | } |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
79 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
80 | if (group == NULL || |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
81 | (g = gaim_find_group(msn_group_get_name(group))) == NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
82 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
83 | gaim_debug(GAIM_DEBUG_ERROR, "msn", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
84 | "Group '%s' appears in server-side " |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
85 | "buddy list, but not here!", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
86 | msn_group_get_name(group)); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
87 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
88 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
89 | if (group != NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
90 | msn_group_add_user(group, user); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
91 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
92 | b = NULL; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
93 | |
|
6767
88a8313e2b16
[gaim-migrate @ 7304]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
94 | for (sl = buddies; sl != NULL; sl = sl->next) |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
95 | { |
|
6767
88a8313e2b16
[gaim-migrate @ 7304]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
96 | b = (GaimBuddy *)sl->data; |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
97 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
98 | if (gaim_find_buddys_group(b) == g) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
99 | break; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
100 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
101 | b = NULL; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
102 | } |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
103 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
104 | if (b == NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
105 | { |
|
6858
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
106 | const char *passport, *friendly; |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
107 | |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
108 | passport = msn_user_get_passport(user); |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
109 | |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
110 | b = gaim_buddy_new(account, passport, NULL); |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
111 | |
|
6773
5fe0dceadad4
[gaim-migrate @ 7310]
Christian Hammond <chipx86@chipx86.com>
parents:
6772
diff
changeset
|
112 | b->proto_data = user; |
|
5fe0dceadad4
[gaim-migrate @ 7310]
Christian Hammond <chipx86@chipx86.com>
parents:
6772
diff
changeset
|
113 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
114 | gaim_blist_add_buddy(b, NULL, g, NULL); |
|
6858
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
115 | |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
116 | if ((friendly = msn_user_get_name(user)) != NULL) |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
117 | serv_got_alias(gc, passport, friendly); |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
118 | } |
|
6773
5fe0dceadad4
[gaim-migrate @ 7310]
Christian Hammond <chipx86@chipx86.com>
parents:
6772
diff
changeset
|
119 | else |
|
5fe0dceadad4
[gaim-migrate @ 7310]
Christian Hammond <chipx86@chipx86.com>
parents:
6772
diff
changeset
|
120 | b->proto_data = user; |
|
6767
88a8313e2b16
[gaim-migrate @ 7304]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
121 | } |
|
88a8313e2b16
[gaim-migrate @ 7304]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
122 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
123 | g_slist_free(buddies); |
|
5457
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
124 | |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
125 | serv_got_alias(gc, (char *)msn_user_get_passport(user), |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
126 | (char *)msn_user_get_name(user)); |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
127 | |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
128 | return TRUE; |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
129 | } |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
130 | |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
131 | /************************************************************************** |
| 5309 | 132 | * Callbacks |
| 133 | **************************************************************************/ | |
| 134 | static void | |
| 135 | msn_accept_add_cb(MsnPermitAdd *pa) | |
| 136 | { | |
|
5567
248932da7121
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
137 | if (g_list_find(gaim_connections_get_all(), pa->gc) != NULL) { |
| 5309 | 138 | MsnSession *session = pa->gc->proto_data; |
| 139 | char outparams[MSN_BUF_LEN]; | |
| 140 | ||
| 141 | g_snprintf(outparams, sizeof(outparams), "AL %s %s", | |
| 142 | msn_user_get_passport(pa->user), | |
| 7134 | 143 | gaim_url_encode(msn_user_get_name(pa->user))); |
| 5309 | 144 | |
| 145 | if (msn_servconn_send_command(session->notification_conn, | |
| 146 | "ADD", outparams) <= 0) { | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
147 | gaim_connection_error(pa->gc, _("Write error")); |
| 5309 | 148 | return; |
| 149 | } | |
| 150 | ||
| 151 | gaim_privacy_permit_add(pa->gc->account, | |
|
6380
6f4accd442df
[gaim-migrate @ 6885]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
152 | msn_user_get_passport(pa->user), TRUE); |
|
7015
bea9111282b3
[gaim-migrate @ 7578]
Christian Hammond <chipx86@chipx86.com>
parents:
6980
diff
changeset
|
153 | gaim_account_notify_added(pa->gc->account, NULL, |
|
bea9111282b3
[gaim-migrate @ 7578]
Christian Hammond <chipx86@chipx86.com>
parents:
6980
diff
changeset
|
154 | msn_user_get_passport(pa->user), |
|
bea9111282b3
[gaim-migrate @ 7578]
Christian Hammond <chipx86@chipx86.com>
parents:
6980
diff
changeset
|
155 | msn_user_get_name(pa->user), NULL); |
| 5309 | 156 | } |
| 157 | ||
| 158 | msn_user_destroy(pa->user); | |
| 159 | g_free(pa); | |
| 160 | } | |
| 161 | ||
| 162 | static void | |
| 163 | msn_cancel_add_cb(MsnPermitAdd *pa) | |
| 164 | { | |
|
5567
248932da7121
[gaim-migrate @ 5969]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
165 | if (g_list_find(gaim_connections_get_all(), pa->gc) != NULL) { |
| 5309 | 166 | MsnSession *session = pa->gc->proto_data; |
| 167 | char outparams[MSN_BUF_LEN]; | |
| 168 | ||
| 169 | g_snprintf(outparams, sizeof(outparams), "BL %s %s", | |
| 170 | msn_user_get_passport(pa->user), | |
| 7134 | 171 | gaim_url_encode(msn_user_get_name(pa->user))); |
| 5309 | 172 | |
| 173 | if (msn_servconn_send_command(session->notification_conn, | |
| 174 | "ADD", outparams) <= 0) { | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
175 | gaim_connection_error(pa->gc, _("Write error")); |
| 5309 | 176 | return; |
| 177 | } | |
| 178 | ||
| 179 | gaim_privacy_deny_add(pa->gc->account, | |
|
6380
6f4accd442df
[gaim-migrate @ 6885]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
180 | msn_user_get_passport(pa->user), TRUE); |
| 5309 | 181 | } |
| 182 | ||
| 183 | msn_user_destroy(pa->user); | |
| 184 | g_free(pa); | |
| 185 | } | |
| 186 | ||
| 187 | /************************************************************************** | |
| 188 | * Catch-all commands | |
| 189 | **************************************************************************/ | |
| 190 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
191 | blank_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
192 | size_t param_count) |
| 5309 | 193 | { |
| 194 | return TRUE; | |
| 195 | } | |
| 196 | ||
| 197 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
198 | unknown_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
199 | size_t param_count) |
| 5309 | 200 | { |
| 8569 | 201 | int errnum = 0; |
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
202 | |
|
5334
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
203 | if (isdigit(*command)) { |
| 8569 | 204 | errnum = atoi(command); |
|
5334
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
205 | |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
206 | if (errnum == 225) { |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
207 | /* |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
208 | * Ignore this. It happens as a result of moving a buddy from |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
209 | * one group that isn't on the server to another that is. |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
210 | * The user doesn't care if the old group was there or not. |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
211 | */ |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
212 | return TRUE; |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
213 | } |
|
9db8b56afe98
[gaim-migrate @ 5709]
Christian Hammond <chipx86@chipx86.com>
parents:
5333
diff
changeset
|
214 | } |
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
215 | |
| 8569 | 216 | msn_error_handle(servconn->session, errnum); |
| 5309 | 217 | |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
218 | return TRUE; |
| 5309 | 219 | } |
| 220 | ||
| 221 | ||
| 222 | /************************************************************************** | |
| 223 | * Login | |
| 224 | **************************************************************************/ | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
225 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
226 | |
| 5309 | 227 | static gboolean |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
228 | cvr_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
229 | size_t param_count) |
| 5309 | 230 | { |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
231 | GaimAccount *account = servconn->session->account; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
232 | GaimConnection *gc = gaim_account_get_connection(account); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
233 | char outparams[MSN_BUF_LEN]; |
| 5309 | 234 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
235 | g_snprintf(outparams, sizeof(outparams), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
236 | "TWN I %s", gaim_account_get_username(account)); |
| 5309 | 237 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
238 | if (!msn_servconn_send_command(servconn, "USR", outparams)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
239 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
240 | gaim_connection_error(gc, _("Unable to request USR\n")); |
| 5309 | 241 | |
| 242 | return FALSE; | |
| 243 | } | |
| 244 | ||
| 245 | return TRUE; | |
| 246 | } | |
| 247 | ||
| 248 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
249 | inf_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
250 | size_t param_count) |
| 5309 | 251 | { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
252 | GaimAccount *account = servconn->session->account; |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
253 | GaimConnection *gc = gaim_account_get_connection(account); |
| 5309 | 254 | char outparams[MSN_BUF_LEN]; |
| 255 | ||
| 256 | if (strcmp(params[1], "MD5")) { | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
257 | gaim_connection_error(gc, _("Unable to login using MD5")); |
| 5309 | 258 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
259 | return FALSE; |
| 5309 | 260 | } |
| 261 | ||
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
262 | g_snprintf(outparams, sizeof(outparams), "MD5 I %s", |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
263 | gaim_account_get_username(account)); |
| 5309 | 264 | |
| 265 | if (!msn_servconn_send_command(servconn, "USR", outparams)) { | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
266 | gaim_connection_error(gc, _("Unable to send USR")); |
| 5309 | 267 | |
| 268 | return FALSE; | |
| 269 | } | |
| 270 | ||
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
271 | gaim_connection_update_progress(gc, _("Requesting to send password"), |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
272 | 5, MSN_CONNECT_STEPS); |
| 5309 | 273 | |
| 274 | return TRUE; | |
| 275 | } | |
| 276 | ||
| 277 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
278 | usr_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
279 | size_t param_count) |
| 5309 | 280 | { |
|
5326
44370f1132dc
[gaim-migrate @ 5699]
Christian Hammond <chipx86@chipx86.com>
parents:
5323
diff
changeset
|
281 | MsnSession *session = servconn->session; |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
282 | GaimAccount *account = session->account; |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
283 | GaimConnection *gc = gaim_account_get_connection(account); |
| 5309 | 284 | char outparams[MSN_BUF_LEN]; |
| 285 | ||
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
286 | /* |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
287 | * We're either getting the passport connect info (if we're on |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
288 | * MSNP8 or higher), or a challenge request (MSNP7 and lower). |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
289 | * |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
290 | * Let's find out. |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
291 | */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
292 | if (!g_ascii_strcasecmp(params[1], "OK")) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
293 | { |
| 7134 | 294 | const char *friendly = gaim_url_decode(params[3]); |
|
5508
d94c8a620384
[gaim-migrate @ 5907]
Christian Hammond <chipx86@chipx86.com>
parents:
5506
diff
changeset
|
295 | |
| 5309 | 296 | /* OK */ |
| 297 | ||
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
298 | gaim_connection_set_display_name(gc, friendly); |
|
5508
d94c8a620384
[gaim-migrate @ 5907]
Christian Hammond <chipx86@chipx86.com>
parents:
5506
diff
changeset
|
299 | |
|
5456
ff4eb9f08890
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
300 | session->syncing_lists = TRUE; |
|
ff4eb9f08890
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
301 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
302 | if (!msn_servconn_send_command(servconn, "SYN", "0")) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
303 | { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
304 | gaim_connection_error(gc, _("Unable to write")); |
| 5309 | 305 | |
| 306 | return FALSE; | |
| 307 | } | |
|
5326
44370f1132dc
[gaim-migrate @ 5699]
Christian Hammond <chipx86@chipx86.com>
parents:
5323
diff
changeset
|
308 | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
309 | gaim_connection_update_progress(gc, _("Retrieving buddy list"), |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
310 | 7, MSN_CONNECT_STEPS); |
| 5309 | 311 | } |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
312 | else if (!g_ascii_strcasecmp(params[1], "TWN")) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
313 | { |
|
8171
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
314 | char **elems, **cur, **tokens; |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
315 | |
|
8171
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
316 | /* Passport authentication */ |
|
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
317 | session->nexus = msn_nexus_new(session); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
318 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
319 | /* Parse the challenge data. */ |
|
8171
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
320 | elems = g_strsplit(params[3], ",", 0); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
321 | |
|
8171
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
322 | for (cur = elems; *cur != NULL; cur++) |
|
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
323 | { |
|
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
324 | tokens = g_strsplit(*cur, "=", 2); |
|
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
325 | g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]); |
|
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
326 | /* Don't free each of the tokens, only the array. */ |
|
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
327 | g_free(tokens); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
328 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
329 | |
|
8171
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
330 | g_strfreev(elems); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
331 | |
|
8171
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8029
diff
changeset
|
332 | msn_nexus_connect(session->nexus); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
333 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
334 | gaim_connection_update_progress(gc, _("Password sent"), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
335 | 6, MSN_CONNECT_STEPS); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
336 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
337 | else if (!g_ascii_strcasecmp(params[1], "MD5")) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
338 | { |
| 5309 | 339 | /* Challenge */ |
| 340 | const char *challenge = params[3]; | |
| 341 | char buf[MSN_BUF_LEN]; | |
| 342 | md5_state_t st; | |
| 343 | md5_byte_t di[16]; | |
| 344 | int i; | |
| 345 | ||
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
346 | g_snprintf(buf, sizeof(buf), "%s%s", challenge, |
|
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
347 | gaim_account_get_password(account)); |
| 5309 | 348 | |
| 349 | md5_init(&st); | |
| 350 | md5_append(&st, (const md5_byte_t *)buf, strlen(buf)); | |
| 351 | md5_finish(&st, di); | |
| 352 | ||
| 353 | g_snprintf(outparams, sizeof(outparams), "MD5 S "); | |
| 354 | ||
| 355 | for (i = 0; i < 16; i++) { | |
| 356 | g_snprintf(buf, sizeof(buf), "%02x", di[i]); | |
| 357 | strcat(outparams, buf); | |
| 358 | } | |
| 359 | ||
| 360 | if (!msn_servconn_send_command(servconn, "USR", outparams)) { | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
361 | gaim_connection_error(gc, _("Unable to send password")); |
| 5309 | 362 | |
| 363 | return FALSE; | |
| 364 | } | |
| 365 | ||
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
366 | gaim_connection_update_progress(gc, _("Password sent"), |
|
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
367 | 6, MSN_CONNECT_STEPS); |
| 5309 | 368 | } |
| 369 | ||
| 370 | return TRUE; | |
| 371 | } | |
| 372 | ||
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
373 | static gboolean |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
374 | ver_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
375 | size_t param_count) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
376 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
377 | MsnSession *session = servconn->session; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
378 | GaimAccount *account = session->account; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
379 | GaimConnection *gc = gaim_account_get_connection(account); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
380 | gboolean protocol_supported = FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
381 | char outparams[MSN_BUF_LEN]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
382 | char proto_str[8]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
383 | size_t i; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
384 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
385 | g_snprintf(proto_str, sizeof(proto_str), "MSNP%d", session->protocol_ver); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
386 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
387 | for (i = 1; i < param_count; i++) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
388 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
389 | if (!strcmp(params[i], proto_str)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
390 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
391 | protocol_supported = TRUE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
392 | break; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
393 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
394 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
395 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
396 | if (!protocol_supported) { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
397 | gaim_connection_error(gc, _("Protocol not supported")); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
398 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
399 | return FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
400 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
401 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
402 | if (session->protocol_ver >= 8) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
403 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
404 | g_snprintf(outparams, sizeof(outparams), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
405 | "0x0409 winnt 5.1 i386 MSNMSGR 6.0.0602 MSMSGS %s", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
406 | gaim_account_get_username(account)); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
407 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
408 | if (!msn_servconn_send_command(servconn, "CVR", outparams)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
409 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
410 | gaim_connection_error(gc, _("Unable to request CVR\n")); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
411 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
412 | return FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
413 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
414 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
415 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
416 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
417 | if (!msn_servconn_send_command(servconn, "INF", NULL)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
418 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
419 | gaim_connection_error(gc, _("Unable to request INF\n")); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
420 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
421 | return FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
422 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
423 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
424 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
425 | return TRUE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
426 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
427 | |
| 5309 | 428 | /************************************************************************** |
| 429 | * Log out | |
| 430 | **************************************************************************/ | |
| 431 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
432 | out_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
433 | size_t param_count) |
| 5309 | 434 | { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
435 | GaimConnection *gc = servconn->session->account->gc; |
| 5309 | 436 | |
| 437 | if (!g_ascii_strcasecmp(params[0], "OTH")) { | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
438 | gaim_connection_error(gc, |
| 5309 | 439 | _("You have been disconnected. You have " |
| 440 | "signed on from another location.")); | |
| 441 | } | |
| 442 | else if (!g_ascii_strcasecmp(params[0], "SSD")) { | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
443 | gaim_connection_error(gc, |
| 5309 | 444 | _("You have been disconnected. The MSN servers " |
| 445 | "are going down temporarily.")); | |
| 446 | } | |
| 447 | ||
| 448 | return FALSE; | |
| 449 | } | |
| 450 | ||
| 451 | /************************************************************************** | |
| 452 | * Messages | |
| 453 | **************************************************************************/ | |
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
454 | static void |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
455 | msg_cmd_post(MsnServConn *servconn, char *payload, size_t len) |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
456 | { |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
457 | MsnMessage *msg = msn_message_new(); |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
458 | |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
459 | msg->passport = servconn->msg_passport; |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
460 | |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
461 | msn_message_parse_payload(msg, payload, len); |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
462 | |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
463 | msn_servconn_process_message(servconn, msg); |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
464 | |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
465 | msn_message_destroy(msg); |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
466 | } |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
467 | |
| 5309 | 468 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
469 | msg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
470 | size_t param_count) |
| 5309 | 471 | { |
| 472 | gaim_debug(GAIM_DEBUG_INFO, "msn", "Found message. Parsing.\n"); | |
| 473 | ||
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
474 | servconn->payload_cb = msg_cmd_post; |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
475 | servconn->payload_len = atoi(params[2]); |
|
5962
d5413616b57b
[gaim-migrate @ 6409]
Christian Hammond <chipx86@chipx86.com>
parents:
5961
diff
changeset
|
476 | |
| 5309 | 477 | servconn->msg_passport = g_strdup(params[0]); |
| 478 | ||
| 479 | return TRUE; | |
| 480 | } | |
| 481 | ||
| 482 | /************************************************************************** | |
| 483 | * Challenges | |
| 484 | **************************************************************************/ | |
| 485 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
486 | chl_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
487 | size_t param_count) |
| 5309 | 488 | { |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
489 | MsnSession *session = servconn->session; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
490 | GaimConnection *gc = session->account->gc; |
| 5309 | 491 | char buf[MSN_BUF_LEN]; |
| 492 | char buf2[3]; | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
493 | const char *challenge_resp; |
| 5309 | 494 | md5_state_t st; |
| 495 | md5_byte_t di[16]; | |
| 496 | int i; | |
| 497 | ||
| 498 | md5_init(&st); | |
| 499 | md5_append(&st, (const md5_byte_t *)params[1], strlen(params[1])); | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
500 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
501 | if (session->protocol_ver >= 8) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
502 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
503 | challenge_resp = "VT6PX?UQTM4WM%YR"; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
504 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
505 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
506 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
507 | challenge_resp = "Q1P7W2E4J9R8U3S5"; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
508 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
509 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
510 | md5_append(&st, (const md5_byte_t *)challenge_resp, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
511 | strlen(challenge_resp)); |
| 5309 | 512 | md5_finish(&st, di); |
| 513 | ||
| 514 | g_snprintf(buf, sizeof(buf), | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
515 | "QRY %u %s 32\r\n", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
516 | servconn->session->trId++, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
517 | (session->protocol_ver >= 8 |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
518 | ? "PROD0038W!61ZTF9" |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
519 | : "msmsgs@msnmsgr.com")); |
| 5309 | 520 | |
| 521 | for (i = 0; i < 16; i++) { | |
| 522 | g_snprintf(buf2, sizeof(buf2), "%02x", di[i]); | |
| 523 | strcat(buf, buf2); | |
| 524 | } | |
| 525 | ||
| 526 | if (msn_servconn_write(servconn, buf, strlen(buf)) <= 0) { | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
527 | gaim_connection_error(gc, _("Unable to write to server")); |
| 5309 | 528 | } |
| 529 | ||
| 530 | return TRUE; | |
| 531 | } | |
| 532 | ||
| 533 | /************************************************************************** | |
| 534 | * Buddy Lists | |
| 535 | **************************************************************************/ | |
| 536 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
537 | add_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
538 | size_t param_count) |
| 5309 | 539 | { |
| 540 | MsnSession *session = servconn->session; | |
|
5457
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
541 | MsnUser *user; |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
542 | GaimAccount *account = session->account; |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
543 | GaimConnection *gc = gaim_account_get_connection(account); |
| 5309 | 544 | MsnPermitAdd *pa; |
| 545 | GSList *sl; | |
|
5890
a6e981fed680
[gaim-migrate @ 6322]
Christian Hammond <chipx86@chipx86.com>
parents:
5887
diff
changeset
|
546 | const char *list, *passport, *group_id = NULL; |
| 7162 | 547 | const char *friend; |
| 5309 | 548 | char msg[MSN_BUF_LEN]; |
| 549 | ||
|
5918
543c15f40f21
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
550 | list = params[1]; |
|
543c15f40f21
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
551 | passport = params[3]; |
| 7134 | 552 | friend = gaim_url_decode(params[4]); |
| 5309 | 553 | |
|
5918
543c15f40f21
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
554 | if (param_count >= 6) |
|
543c15f40f21
[gaim-migrate @ 6358]
Christian Hammond <chipx86@chipx86.com>
parents:
5890
diff
changeset
|
555 | group_id = params[5]; |
| 5309 | 556 | |
|
5457
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
557 | if (!g_ascii_strcasecmp(list, "FL")) { |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
558 | user = msn_user_new(session, passport, NULL); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
559 | |
|
5933
715fe6a25988
[gaim-migrate @ 6373]
Christian Hammond <chipx86@chipx86.com>
parents:
5918
diff
changeset
|
560 | if (group_id != NULL) |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
561 | msn_user_add_group_id(user, atoi(group_id)); |
|
5457
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
562 | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
563 | add_buddy(servconn, user); |
|
5457
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
564 | |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
565 | return TRUE; |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
566 | } |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
567 | else if (g_ascii_strcasecmp(list, "RL")) |
| 5309 | 568 | return TRUE; |
| 569 | ||
| 570 | for (sl = gc->account->permit; sl != NULL; sl = sl->next) { | |
| 571 | if (!gaim_utf8_strcasecmp(sl->data, passport)) | |
| 572 | return TRUE; | |
| 573 | } | |
| 574 | ||
|
5457
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
575 | user = msn_user_new(session, passport, friend); |
|
7941
c79a234d537e
[gaim-migrate @ 8612]
Christian Hammond <chipx86@chipx86.com>
parents:
7934
diff
changeset
|
576 | msn_user_set_name(user, friend); |
|
5457
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
577 | |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
578 | pa = g_new0(MsnPermitAdd, 1); |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
579 | pa->user = user; |
|
586285a6ff22
[gaim-migrate @ 5845]
Christian Hammond <chipx86@chipx86.com>
parents:
5456
diff
changeset
|
580 | pa->gc = gc; |
| 5309 | 581 | |
| 582 | g_snprintf(msg, sizeof(msg), | |
| 583 | _("The user %s (%s) wants to add %s to his or her buddy list."), | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
584 | passport, friend, gaim_account_get_username(account)); |
| 5309 | 585 | |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
586 | gaim_request_action(gc, NULL, msg, NULL, 0, pa, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
587 | _("Authorize"), G_CALLBACK(msn_accept_add_cb), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
588 | _("Deny"), G_CALLBACK(msn_cancel_add_cb)); |
| 5309 | 589 | |
| 590 | return TRUE; | |
| 591 | } | |
| 592 | ||
| 593 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
594 | adg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
595 | size_t param_count) |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
596 | { |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
597 | MsnGroup *group; |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
598 | MsnSession *session = servconn->session; |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
599 | gint group_id; |
| 7162 | 600 | const char *group_name; |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
601 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
602 | group_id = atoi(params[3]); |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
603 | |
| 7134 | 604 | group_name = gaim_url_decode(params[2]); |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
605 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
606 | group = msn_group_new(session, group_id, group_name); |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
607 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
608 | msn_groups_add(session->groups, group); |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
609 | |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
610 | return TRUE; |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
611 | } |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
612 | |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
613 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
614 | blp_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
615 | size_t param_count) |
| 5309 | 616 | { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
617 | GaimConnection *gc = servconn->session->account->gc; |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
618 | const char *list_name; |
| 5309 | 619 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
620 | if (servconn->session->protocol_ver >= 8) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
621 | list_name = params[0]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
622 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
623 | list_name = params[2]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
624 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
625 | if (!g_ascii_strcasecmp(list_name, "AL")) { |
| 5309 | 626 | /* |
| 627 | * If the current setting is AL, messages from users who | |
| 628 | * are not in BL will be delivered. | |
| 629 | * | |
| 630 | * In other words, deny some. | |
| 631 | */ | |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8171
diff
changeset
|
632 | gc->account->perm_deny = GAIM_PRIVACY_DENY_USERS; |
| 5309 | 633 | } |
| 634 | else { | |
| 635 | /* If the current setting is BL, only messages from people | |
| 636 | * who are in the AL will be delivered. | |
| 637 | * | |
| 638 | * In other words, permit some. | |
| 639 | */ | |
|
8175
4e79974d452c
[gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents:
8171
diff
changeset
|
640 | gc->account->perm_deny = GAIM_PRIVACY_ALLOW_USERS; |
| 5309 | 641 | } |
| 642 | ||
| 643 | return TRUE; | |
| 644 | } | |
| 645 | ||
| 646 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
647 | bpr_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
648 | size_t param_count) |
|
5361
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
649 | { |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
650 | MsnSession *session = servconn->session; |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
651 | GaimConnection *gc = session->account->gc; |
|
5361
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
652 | const char *passport, *type, *value; |
| 6695 | 653 | GaimBuddy *b; |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
654 | MsnUser *user; |
|
5361
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
655 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
656 | if (param_count == 4) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
657 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
658 | passport = params[1]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
659 | type = params[2]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
660 | value = params[3]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
661 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
662 | else if (param_count == 2) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
663 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
664 | passport = msn_user_get_passport(session->last_user_added); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
665 | type = params[0]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
666 | value = params[1]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
667 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
668 | else |
|
5963
ecf9c1cc885b
[gaim-migrate @ 6410]
Christian Hammond <chipx86@chipx86.com>
parents:
5962
diff
changeset
|
669 | return TRUE; |
|
ecf9c1cc885b
[gaim-migrate @ 6410]
Christian Hammond <chipx86@chipx86.com>
parents:
5962
diff
changeset
|
670 | |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
671 | user = msn_users_find_with_passport(session->users, passport); |
|
5361
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
672 | |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
673 | if (value != NULL) { |
|
5375
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
674 | if (!strcmp(type, "MOB")) { |
| 8255 | 675 | if (!strcmp(value, "Y") || !strcmp(value, "N")) { |
| 676 | user->mobile = (!strcmp(value, "Y") ? TRUE : FALSE); | |
|
5375
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
677 | |
|
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
678 | if ((b = gaim_find_buddy(gc->account, passport)) != NULL) { |
|
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
679 | if (GAIM_BUDDY_IS_ONLINE(b)) { |
|
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
680 | serv_got_update(gc, (char *)passport, |
|
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
681 | 1, 0, 0, 0, b->uc); |
|
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
682 | } |
|
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
683 | } |
|
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
684 | } |
|
2a3bb79c1178
[gaim-migrate @ 5751]
Christian Hammond <chipx86@chipx86.com>
parents:
5373
diff
changeset
|
685 | } |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
686 | else if (!strcmp(type, "PHH")) |
| 7134 | 687 | msn_user_set_home_phone(user, gaim_url_decode(value)); |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
688 | else if (!strcmp(type, "PHW")) |
| 7134 | 689 | msn_user_set_work_phone(user, gaim_url_decode(value)); |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
690 | else if (!strcmp(type, "PHM")) |
| 7134 | 691 | msn_user_set_mobile_phone(user, gaim_url_decode(value)); |
|
5361
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
692 | } |
|
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
693 | |
|
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
694 | return TRUE; |
|
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
695 | } |
|
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
696 | |
|
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
697 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
698 | fln_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
699 | size_t param_count) |
| 5309 | 700 | { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
701 | GaimConnection *gc = servconn->session->account->gc; |
| 5309 | 702 | |
| 703 | serv_got_update(gc, (char *)params[0], 0, 0, 0, 0, 0); | |
| 704 | ||
| 705 | return TRUE; | |
| 706 | } | |
| 707 | ||
| 708 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
709 | iln_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
710 | size_t param_count) |
| 5309 | 711 | { |
|
6800
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
712 | MsnSession *session = servconn->session; |
|
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
713 | GaimConnection *gc = session->account->gc; |
|
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
714 | MsnUser *user; |
|
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
715 | MsnObject *msnobj; |
| 5309 | 716 | int status = 0; |
| 717 | const char *state, *passport, *friend; | |
| 6695 | 718 | GaimBuddy *b; |
| 5309 | 719 | |
| 720 | state = params[1]; | |
| 721 | passport = params[2]; | |
| 7134 | 722 | friend = gaim_url_decode(params[3]); |
| 5309 | 723 | |
|
6858
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
724 | user = msn_users_find_with_passport(session->users, passport); |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
725 | |
|
6833
57515f938da3
[gaim-migrate @ 7378]
Christian Hammond <chipx86@chipx86.com>
parents:
6830
diff
changeset
|
726 | serv_got_alias(gc, (char *)passport, (char *)friend); |
|
57515f938da3
[gaim-migrate @ 7378]
Christian Hammond <chipx86@chipx86.com>
parents:
6830
diff
changeset
|
727 | |
|
6858
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
728 | msn_user_set_name(user, friend); |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
729 | |
|
6800
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
730 | if (session->protocol_ver >= 9 && param_count == 6) |
|
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
731 | { |
| 7134 | 732 | msnobj = msn_object_new_from_string(gaim_url_decode(params[5])); |
|
6800
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
733 | msn_user_set_object(user, msnobj); |
|
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
734 | } |
|
8f99c220b503
[gaim-migrate @ 7340]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
735 | |
|
5361
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
736 | if ((b = gaim_find_buddy(gc->account, passport)) != NULL) |
|
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
737 | status |= ((((b->uc) >> 1) & 0xF0) << 1); |
|
a964b856e97f
[gaim-migrate @ 5737]
Christian Hammond <chipx86@chipx86.com>
parents:
5358
diff
changeset
|
738 | |
| 5309 | 739 | if (!g_ascii_strcasecmp(state, "BSY")) |
| 740 | status |= UC_UNAVAILABLE | (MSN_BUSY << 1); | |
| 741 | else if (!g_ascii_strcasecmp(state, "IDL")) | |
| 742 | status |= UC_UNAVAILABLE | (MSN_IDLE << 1); | |
| 743 | else if (!g_ascii_strcasecmp(state, "BRB")) | |
| 744 | status |= UC_UNAVAILABLE | (MSN_BRB << 1); | |
| 745 | else if (!g_ascii_strcasecmp(state, "AWY")) | |
| 746 | status |= UC_UNAVAILABLE | (MSN_AWAY << 1); | |
| 747 | else if (!g_ascii_strcasecmp(state, "PHN")) | |
| 748 | status |= UC_UNAVAILABLE | (MSN_PHONE << 1); | |
| 749 | else if (!g_ascii_strcasecmp(state, "LUN")) | |
| 750 | status |= UC_UNAVAILABLE | (MSN_LUNCH << 1); | |
| 751 | ||
| 752 | serv_got_update(gc, (char *)passport, 1, 0, 0, 0, status); | |
| 753 | ||
| 754 | return TRUE; | |
| 755 | } | |
| 756 | ||
| 757 | static gboolean | |
|
5960
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
758 | ipg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
759 | size_t param_count) |
|
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
760 | { |
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
761 | servconn->payload_cb = NULL; |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
762 | servconn->payload_len = atoi(params[2]); |
|
5960
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
763 | |
|
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
764 | return TRUE; |
|
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
765 | } |
|
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
766 | |
|
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
767 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
768 | lsg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
769 | size_t param_count) |
| 5309 | 770 | { |
| 771 | MsnSession *session = servconn->session; | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
772 | MsnGroup *group; |
| 6695 | 773 | GaimGroup *g; |
| 5309 | 774 | const char *name; |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
775 | int num_groups, group_id; |
| 5309 | 776 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
777 | if (session->protocol_ver >= 8) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
778 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
779 | group_id = atoi(params[0]); |
| 7134 | 780 | name = gaim_url_decode(params[1]); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
781 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
782 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
783 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
784 | num_groups = atoi(params[3]); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
785 | group_id = atoi(params[4]); |
| 7134 | 786 | name = gaim_url_decode(params[5]); |
| 5309 | 787 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
788 | if (num_groups == 0) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
789 | return TRUE; |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
790 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
791 | if (!strcmp(name, "~")) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
792 | name = _("Buddies"); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
793 | } |
|
5323
4a38b2ddde35
[gaim-migrate @ 5695]
Christian Hammond <chipx86@chipx86.com>
parents:
5322
diff
changeset
|
794 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
795 | group = msn_group_new(session, group_id, name); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
796 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
797 | msn_groups_add(session->groups, group); |
| 5309 | 798 | |
| 799 | if ((g = gaim_find_group(name)) == NULL) { | |
| 800 | g = gaim_group_new(name); | |
| 801 | gaim_blist_add_group(g, NULL); | |
| 802 | } | |
| 803 | ||
| 804 | return TRUE; | |
| 805 | } | |
| 806 | ||
| 807 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
808 | lst_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
809 | size_t param_count) |
| 5309 | 810 | { |
| 811 | MsnSession *session = servconn->session; | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
812 | GaimAccount *account = session->account; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
813 | GaimConnection *gc = gaim_account_get_connection(account); |
| 5768 | 814 | const char *passport = NULL; |
| 815 | const char *friend = NULL; | |
| 5309 | 816 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
817 | if (session->protocol_ver >= 8) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
818 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
819 | const char *group_nums; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
820 | int list_op; |
| 5309 | 821 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
822 | passport = params[0]; |
| 7134 | 823 | friend = gaim_url_decode(params[1]); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
824 | list_op = atoi(params[2]); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
825 | group_nums = params[3]; |
| 5309 | 826 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
827 | if (list_op & MSN_LIST_FL_OP) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
828 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
829 | MsnUser *user; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
830 | char **c; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
831 | char **tokens; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
832 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
833 | user = msn_user_new(session, passport, friend); |
|
5406
001d8ddda70b
[gaim-migrate @ 5782]
Christian Hammond <chipx86@chipx86.com>
parents:
5385
diff
changeset
|
834 | |
|
7934
651bf920e54c
[gaim-migrate @ 8605]
Christian Hammond <chipx86@chipx86.com>
parents:
7820
diff
changeset
|
835 | /* Ensure we have a friendly name set. */ |
|
651bf920e54c
[gaim-migrate @ 8605]
Christian Hammond <chipx86@chipx86.com>
parents:
7820
diff
changeset
|
836 | msn_user_set_name(user, friend); |
|
651bf920e54c
[gaim-migrate @ 8605]
Christian Hammond <chipx86@chipx86.com>
parents:
7820
diff
changeset
|
837 | |
| 8029 | 838 | tokens = g_strsplit((group_nums ? group_nums : ""), ",", -1); |
| 5309 | 839 | |
|
6767
88a8313e2b16
[gaim-migrate @ 7304]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
840 | gaim_debug_misc("msn", "Fetching group IDs from '%s'\n", |
|
88a8313e2b16
[gaim-migrate @ 7304]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
841 | group_nums); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
842 | for (c = tokens; *c != NULL; c++) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
843 | { |
|
6767
88a8313e2b16
[gaim-migrate @ 7304]
Christian Hammond <chipx86@chipx86.com>
parents:
6701
diff
changeset
|
844 | gaim_debug_misc("msn", "Appending group ID %d\n", atoi(*c)); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
845 | msn_user_add_group_id(user, atoi(*c)); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
846 | } |
| 5309 | 847 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
848 | g_strfreev(tokens); |
| 5309 | 849 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
850 | session->lists.forward = |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
851 | g_slist_append(session->lists.forward, user); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
852 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
853 | session->last_user_added = user; |
| 5309 | 854 | } |
| 855 | ||
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
856 | if (list_op & MSN_LIST_AL_OP) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
857 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
858 | /* These are users who are allowed to see our status. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
859 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
860 | if (g_slist_find_custom(account->deny, passport, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
861 | (GCompareFunc)strcmp)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
862 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
863 | gaim_privacy_deny_remove(gc->account, passport, TRUE); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
864 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
865 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
866 | gaim_privacy_permit_add(account, passport, TRUE); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
867 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
868 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
869 | if (list_op & MSN_LIST_BL_OP) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
870 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
871 | /* These are users who are not allowed to see our status. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
872 | gaim_privacy_deny_add(account, passport, TRUE); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
873 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
874 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
875 | if (list_op & MSN_LIST_RL_OP) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
876 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
877 | /* These are users who have us on their contact list. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
878 | |
| 5309 | 879 | gboolean new_entry = TRUE; |
| 880 | ||
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
881 | if (g_slist_find_custom(account->permit, passport, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
882 | (GCompareFunc)g_ascii_strcasecmp) || |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
883 | g_slist_find_custom(account->deny, passport, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
884 | (GCompareFunc)g_ascii_strcasecmp)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
885 | { |
| 5309 | 886 | new_entry = FALSE; |
| 887 | } | |
| 888 | ||
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
889 | if (new_entry) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
890 | { |
| 5309 | 891 | MsnPermitAdd *pa; |
| 892 | char msg[MSN_BUF_LEN]; | |
| 893 | ||
| 894 | pa = g_new0(MsnPermitAdd, 1); | |
| 895 | pa->user = msn_user_new(session, passport, friend); | |
| 896 | pa->gc = gc; | |
| 897 | ||
|
7934
651bf920e54c
[gaim-migrate @ 8605]
Christian Hammond <chipx86@chipx86.com>
parents:
7820
diff
changeset
|
898 | /* Ensure we have a friendly name set. */ |
|
651bf920e54c
[gaim-migrate @ 8605]
Christian Hammond <chipx86@chipx86.com>
parents:
7820
diff
changeset
|
899 | msn_user_set_name(pa->user, friend); |
|
651bf920e54c
[gaim-migrate @ 8605]
Christian Hammond <chipx86@chipx86.com>
parents:
7820
diff
changeset
|
900 | |
| 5309 | 901 | g_snprintf(msg, sizeof(msg), |
| 902 | _("The user %s (%s) wants to add you to their " | |
| 903 | "buddy list."), | |
| 904 | msn_user_get_passport(pa->user), | |
| 905 | msn_user_get_name(pa->user)); | |
| 906 | ||
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
907 | gaim_request_action(gc, NULL, msg, NULL, 0, pa, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
908 | _("Authorize"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
909 | G_CALLBACK(msn_accept_add_cb), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
910 | _("Deny"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5479
diff
changeset
|
911 | G_CALLBACK(msn_cancel_add_cb)); |
| 5309 | 912 | } |
| 913 | } | |
| 914 | ||
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
915 | session->num_users++; |
| 5309 | 916 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
917 | if (session->num_users == session->total_users) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
918 | { |
|
7590
54b26062c7e0
[gaim-migrate @ 8208]
Christian Hammond <chipx86@chipx86.com>
parents:
7566
diff
changeset
|
919 | msn_user_set_buddy_icon(session->user, |
|
54b26062c7e0
[gaim-migrate @ 8208]
Christian Hammond <chipx86@chipx86.com>
parents:
7566
diff
changeset
|
920 | gaim_account_get_buddy_icon(session->account)); |
|
54b26062c7e0
[gaim-migrate @ 8208]
Christian Hammond <chipx86@chipx86.com>
parents:
7566
diff
changeset
|
921 | |
|
54b26062c7e0
[gaim-migrate @ 8208]
Christian Hammond <chipx86@chipx86.com>
parents:
7566
diff
changeset
|
922 | if (!msn_session_change_status(session, "NLN")) |
|
5456
ff4eb9f08890
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
923 | return FALSE; |
|
ff4eb9f08890
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
924 | |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
925 | gaim_connection_set_state(gc, GAIM_CONNECTED); |
|
5456
ff4eb9f08890
[gaim-migrate @ 5844]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
926 | serv_finish_login(gc); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
927 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
928 | if (session->lists.allow == NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
929 | session->lists.allow = g_slist_copy(account->permit); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
930 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
931 | session->lists.allow = g_slist_concat(session->lists.allow, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
932 | account->permit); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
933 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
934 | if (session->lists.block == NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
935 | session->lists.block = g_slist_copy(account->permit); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
936 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
937 | session->lists.block = g_slist_concat(session->lists.block, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
938 | account->deny); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
939 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
940 | while (session->lists.forward != NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
941 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
942 | MsnUser *user = session->lists.forward->data; |
| 6777 | 943 | GSList *buddies; |
| 944 | GSList *sl; | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
945 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
946 | session->lists.forward = |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
947 | g_slist_remove(session->lists.forward, user); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
948 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
949 | add_buddy(servconn, user); |
| 6777 | 950 | |
| 951 | buddies = gaim_find_buddies(account, | |
| 952 | msn_user_get_passport(user)); | |
| 953 | ||
| 954 | /* Find all occurrences of this buddy in the wrong place. */ | |
| 955 | for (sl = buddies; sl != NULL; sl = sl->next) | |
| 956 | { | |
| 957 | GaimBuddy *b = sl->data; | |
| 958 | ||
| 959 | if (b->proto_data == NULL) | |
| 960 | { | |
| 961 | gaim_debug_warning("msn", | |
| 962 | "Deleting misplaced user %s (%s) during sync " | |
| 963 | "with server.\n", | |
| 964 | b->name, gaim_find_buddys_group(b)->name); | |
| 965 | ||
| 966 | gaim_blist_remove_buddy(b); | |
| 967 | } | |
| 968 | } | |
| 969 | ||
| 970 | g_slist_free(buddies); | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
971 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
972 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
973 | session->syncing_lists = FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
974 | session->lists_synced = TRUE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
975 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
976 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
977 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
978 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
979 | const char *list_name; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
980 | int user_num; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
981 | int num_users; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
982 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
983 | list_name = params[1]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
984 | user_num = atoi(params[3]); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
985 | num_users = atoi(params[4]); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
986 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
987 | if (g_ascii_strcasecmp(list_name, "RL") && |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
988 | user_num == 0 && num_users == 0) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
989 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
990 | return TRUE; /* There are no users on this list. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
991 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
992 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
993 | if (num_users > 0) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
994 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
995 | passport = params[5]; |
| 7134 | 996 | friend = gaim_url_decode(params[6]); |
| 5309 | 997 | } |
| 998 | ||
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
999 | if (session->syncing_lists && session->lists_synced) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1000 | return TRUE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1001 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1002 | if (!g_ascii_strcasecmp(list_name, "FL") && user_num != 0) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1003 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1004 | /* These are users on our contact list. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1005 | MsnUser *user; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1006 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1007 | user = msn_user_new(session, passport, friend); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1008 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1009 | if (param_count == 8) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1010 | msn_user_add_group_id(user, atoi(params[7])); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1011 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1012 | session->lists.forward = |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1013 | g_slist_append(session->lists.forward, user); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1014 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1015 | else if (!g_ascii_strcasecmp(list_name, "AL") && user_num != 0) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1016 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1017 | /* These are users who are allowed to see our status. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1018 | if (g_slist_find_custom(gc->account->deny, passport, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1019 | (GCompareFunc)strcmp)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1020 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1021 | gaim_debug(GAIM_DEBUG_INFO, "msn", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1022 | "Moving user from deny list to permit: %s (%s)\n", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1023 | passport, friend); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1024 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1025 | gaim_privacy_deny_remove(gc->account, passport, TRUE); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1026 | } |
| 5309 | 1027 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1028 | gaim_privacy_permit_add(gc->account, passport, TRUE); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1029 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1030 | else if (!g_ascii_strcasecmp(list_name, "BL") && user_num != 0) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1031 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1032 | /* These are users who are not allowed to see our status. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1033 | gaim_privacy_deny_add(gc->account, passport, TRUE); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1034 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1035 | else if (!g_ascii_strcasecmp(list_name, "RL")) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1036 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1037 | /* These are users who have us on their contact list. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1038 | if (user_num > 0) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1039 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1040 | gboolean new_entry = TRUE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1041 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1042 | if (g_slist_find_custom(gc->account->permit, passport, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1043 | (GCompareFunc)g_ascii_strcasecmp)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1044 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1045 | new_entry = FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1046 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1047 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1048 | if (g_slist_find_custom(gc->account->deny, passport, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1049 | (GCompareFunc)g_ascii_strcasecmp)) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1050 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1051 | new_entry = FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1052 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1053 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1054 | if (new_entry) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1055 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1056 | MsnPermitAdd *pa; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1057 | char msg[MSN_BUF_LEN]; |
| 5309 | 1058 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1059 | gaim_debug(GAIM_DEBUG_WARNING, "msn", |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1060 | "Unresolved MSN RL entry: %s\n", passport); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1061 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1062 | pa = g_new0(MsnPermitAdd, 1); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1063 | pa->user = msn_user_new(session, passport, friend); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1064 | pa->gc = gc; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1065 | |
|
7941
c79a234d537e
[gaim-migrate @ 8612]
Christian Hammond <chipx86@chipx86.com>
parents:
7934
diff
changeset
|
1066 | msn_user_set_name(pa->user, friend); |
|
c79a234d537e
[gaim-migrate @ 8612]
Christian Hammond <chipx86@chipx86.com>
parents:
7934
diff
changeset
|
1067 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1068 | g_snprintf(msg, sizeof(msg), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1069 | _("The user %s (%s) wants to add you to their " |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1070 | "buddy list."), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1071 | msn_user_get_passport(pa->user), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1072 | msn_user_get_name(pa->user)); |
| 5309 | 1073 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1074 | gaim_request_action(gc, NULL, msg, NULL, 0, pa, 2, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1075 | _("Authorize"), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1076 | G_CALLBACK(msn_accept_add_cb), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1077 | _("Deny"), |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1078 | G_CALLBACK(msn_cancel_add_cb)); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1079 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1080 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1081 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1082 | if (user_num != num_users) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1083 | return TRUE; /* This isn't the last one in the RL. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1084 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1085 | /* Now we're at the last one, so we can do final work. */ |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1086 | if (!session->lists_synced) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1087 | { |
|
7590
54b26062c7e0
[gaim-migrate @ 8208]
Christian Hammond <chipx86@chipx86.com>
parents:
7566
diff
changeset
|
1088 | if (!msn_session_change_status(session, "NLN")) |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1089 | return FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1090 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1091 | gaim_connection_set_state(gc, GAIM_CONNECTED); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1092 | serv_finish_login(gc); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1093 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1094 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1095 | if (session->lists.allow == NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1096 | session->lists.allow = g_slist_copy(gc->account->permit); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1097 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1098 | session->lists.allow = g_slist_concat(session->lists.allow, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1099 | gc->account->permit); |
|
5406
001d8ddda70b
[gaim-migrate @ 5782]
Christian Hammond <chipx86@chipx86.com>
parents:
5385
diff
changeset
|
1100 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1101 | if (session->lists.block == NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1102 | session->lists.block = g_slist_copy(gc->account->deny); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1103 | else |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1104 | session->lists.block = g_slist_concat(session->lists.block, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1105 | gc->account->deny); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1106 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1107 | while (session->lists.forward != NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1108 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1109 | MsnUser *user = session->lists.forward->data; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1110 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1111 | session->lists.forward = |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1112 | g_slist_remove(session->lists.forward, user); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1113 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1114 | add_buddy(servconn, user); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1115 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1116 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1117 | session->syncing_lists = FALSE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1118 | session->lists_synced = TRUE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1119 | } |
| 5309 | 1120 | } |
| 1121 | ||
| 1122 | return TRUE; | |
| 1123 | } | |
| 1124 | ||
| 1125 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1126 | nln_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1127 | size_t param_count) |
| 5309 | 1128 | { |
| 1129 | MsnSession *session = servconn->session; | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1130 | GaimConnection *gc = session->account->gc; |
|
6829
233441b74cf9
[gaim-migrate @ 7374]
Christian Hammond <chipx86@chipx86.com>
parents:
6828
diff
changeset
|
1131 | MsnUser *user; |
|
233441b74cf9
[gaim-migrate @ 7374]
Christian Hammond <chipx86@chipx86.com>
parents:
6828
diff
changeset
|
1132 | MsnObject *msnobj; |
| 5309 | 1133 | const char *state; |
| 1134 | const char *passport; | |
| 1135 | const char *friend; | |
| 1136 | int status = 0; | |
| 1137 | ||
| 1138 | state = params[0]; | |
| 1139 | passport = params[1]; | |
| 7134 | 1140 | friend = gaim_url_decode(params[2]); |
| 5309 | 1141 | |
|
6858
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
1142 | user = msn_users_find_with_passport(session->users, passport); |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
1143 | |
|
6833
57515f938da3
[gaim-migrate @ 7378]
Christian Hammond <chipx86@chipx86.com>
parents:
6830
diff
changeset
|
1144 | serv_got_alias(gc, (char *)passport, (char *)friend); |
|
57515f938da3
[gaim-migrate @ 7378]
Christian Hammond <chipx86@chipx86.com>
parents:
6830
diff
changeset
|
1145 | |
|
6858
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
1146 | msn_user_set_name(user, friend); |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
1147 | |
|
6829
233441b74cf9
[gaim-migrate @ 7374]
Christian Hammond <chipx86@chipx86.com>
parents:
6828
diff
changeset
|
1148 | if (session->protocol_ver >= 9 && param_count == 5) |
|
233441b74cf9
[gaim-migrate @ 7374]
Christian Hammond <chipx86@chipx86.com>
parents:
6828
diff
changeset
|
1149 | { |
| 7134 | 1150 | msnobj = msn_object_new_from_string(gaim_url_decode(params[4])); |
|
6829
233441b74cf9
[gaim-migrate @ 7374]
Christian Hammond <chipx86@chipx86.com>
parents:
6828
diff
changeset
|
1151 | msn_user_set_object(user, msnobj); |
|
233441b74cf9
[gaim-migrate @ 7374]
Christian Hammond <chipx86@chipx86.com>
parents:
6828
diff
changeset
|
1152 | } |
|
233441b74cf9
[gaim-migrate @ 7374]
Christian Hammond <chipx86@chipx86.com>
parents:
6828
diff
changeset
|
1153 | |
| 5309 | 1154 | if (!g_ascii_strcasecmp(state, "BSY")) |
| 1155 | status |= UC_UNAVAILABLE | (MSN_BUSY << 1); | |
| 1156 | else if (!g_ascii_strcasecmp(state, "IDL")) | |
| 1157 | status |= UC_UNAVAILABLE | (MSN_IDLE << 1); | |
| 1158 | else if (!g_ascii_strcasecmp(state, "BRB")) | |
| 1159 | status |= UC_UNAVAILABLE | (MSN_BRB << 1); | |
| 1160 | else if (!g_ascii_strcasecmp(state, "AWY")) | |
| 1161 | status |= UC_UNAVAILABLE | (MSN_AWAY << 1); | |
| 1162 | else if (!g_ascii_strcasecmp(state, "PHN")) | |
| 1163 | status |= UC_UNAVAILABLE | (MSN_PHONE << 1); | |
| 1164 | else if (!g_ascii_strcasecmp(state, "LUN")) | |
| 1165 | status |= UC_UNAVAILABLE | (MSN_LUNCH << 1); | |
| 1166 | ||
| 1167 | serv_got_update(gc, (char *)passport, 1, 0, 0, 0, status); | |
| 1168 | ||
| 1169 | return TRUE; | |
| 1170 | } | |
| 1171 | ||
| 1172 | static gboolean | |
|
5961
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1173 | not_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1174 | size_t param_count) |
|
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1175 | { |
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1176 | servconn->payload_cb = NULL; |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1177 | servconn->payload_len = atoi(params[2]); |
|
5961
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1178 | |
|
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1179 | return TRUE; |
|
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1180 | } |
|
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1181 | |
|
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1182 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1183 | prp_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1184 | size_t param_count) |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1185 | { |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1186 | MsnSession *session = servconn->session; |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1187 | const char *type, *value; |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1188 | |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1189 | type = params[2]; |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1190 | value = params[3]; |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1191 | |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1192 | if (param_count == 4) { |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1193 | if (!strcmp(type, "PHH")) |
| 7134 | 1194 | msn_user_set_home_phone(session->user, gaim_url_decode(value)); |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1195 | else if (!strcmp(type, "PHW")) |
| 7134 | 1196 | msn_user_set_work_phone(session->user, gaim_url_decode(value)); |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1197 | else if (!strcmp(type, "PHM")) |
| 7134 | 1198 | msn_user_set_mobile_phone(session->user, gaim_url_decode(value)); |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1199 | } |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1200 | |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1201 | return TRUE; |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1202 | } |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1203 | |
|
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1204 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1205 | rea_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1206 | size_t param_count) |
| 5309 | 1207 | { |
| 1208 | MsnSession *session = servconn->session; | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1209 | GaimConnection *gc = session->account->gc; |
| 7162 | 1210 | const char *friend; |
| 5309 | 1211 | |
| 7134 | 1212 | friend = gaim_url_decode(params[3]); |
| 5309 | 1213 | |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1214 | gaim_connection_set_display_name(gc, friend); |
| 5309 | 1215 | |
| 1216 | return TRUE; | |
| 1217 | } | |
| 1218 | ||
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1219 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1220 | reg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1221 | size_t param_count) |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1222 | { |
|
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1223 | MsnSession *session = servconn->session; |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1224 | MsnGroup *group; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1225 | int group_id; |
| 7162 | 1226 | const char *group_name; |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1227 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1228 | group_id = atoi(params[2]); |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1229 | |
| 7134 | 1230 | group_name = gaim_url_decode(params[3]); |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1231 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1232 | group = msn_groups_find_with_id(session->groups, group_id); |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1233 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1234 | gaim_debug(GAIM_DEBUG_INFO, "msn", "Renamed group %s to %s\n", |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1235 | msn_group_get_name(group), group_name); |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1236 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1237 | if (group != NULL) |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1238 | msn_group_set_name(group, group_name); |
|
5318
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1239 | |
|
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1240 | return TRUE; |
|
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1241 | } |
|
2073a19f4217
[gaim-migrate @ 5690]
Christian Hammond <chipx86@chipx86.com>
parents:
5312
diff
changeset
|
1242 | |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1243 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1244 | rem_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1245 | size_t param_count) |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1246 | { |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1247 | MsnSession *session = servconn->session; |
|
6772
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1248 | const char *passport = params[3]; |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1249 | |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1250 | if (param_count == 5) |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1251 | { |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1252 | MsnUser *user; |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1253 | int group_id = atoi(params[4]); |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1254 | |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1255 | user = msn_users_find_with_passport(session->users, passport); |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1256 | |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1257 | msn_user_remove_group_id(user, group_id); |
|
748eb5453507
[gaim-migrate @ 7309]
Christian Hammond <chipx86@chipx86.com>
parents:
6767
diff
changeset
|
1258 | } |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1259 | |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1260 | /* I hate this. */ |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1261 | if (session->moving_buddy) { |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1262 | MsnGroup *group, *old_group; |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1263 | GaimConnection *gc = session->account->gc; |
|
6858
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
1264 | const char *friendly; |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1265 | char outparams[MSN_BUF_LEN]; |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1266 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1267 | group = msn_groups_find_with_name(session->groups, |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1268 | session->dest_group_name); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1269 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1270 | old_group = session->old_group; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1271 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1272 | session->moving_buddy = FALSE; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1273 | session->old_group = NULL; |
|
5327
c12297f29f8d
[gaim-migrate @ 5700]
Christian Hammond <chipx86@chipx86.com>
parents:
5326
diff
changeset
|
1274 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1275 | if (group == NULL) { |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1276 | gaim_debug(GAIM_DEBUG_ERROR, "msn", |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1277 | "Still don't have a group ID for %s while moving %s!\n", |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1278 | session->dest_group_name, passport); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1279 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1280 | g_free(session->dest_group_name); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1281 | session->dest_group_name = NULL; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1282 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1283 | return TRUE; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1284 | } |
|
5327
c12297f29f8d
[gaim-migrate @ 5700]
Christian Hammond <chipx86@chipx86.com>
parents:
5326
diff
changeset
|
1285 | |
|
c12297f29f8d
[gaim-migrate @ 5700]
Christian Hammond <chipx86@chipx86.com>
parents:
5326
diff
changeset
|
1286 | g_free(session->dest_group_name); |
|
c12297f29f8d
[gaim-migrate @ 5700]
Christian Hammond <chipx86@chipx86.com>
parents:
5326
diff
changeset
|
1287 | session->dest_group_name = NULL; |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1288 | |
|
6858
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
1289 | if ((friendly = msn_user_get_name(session->moving_user)) == NULL) |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
1290 | friendly = passport; |
|
a367cfd3e75f
[gaim-migrate @ 7403]
Christian Hammond <chipx86@chipx86.com>
parents:
6833
diff
changeset
|
1291 | |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1292 | g_snprintf(outparams, sizeof(outparams), "FL %s %s %d", |
| 7134 | 1293 | passport, gaim_url_encode(friendly), |
|
6980
367ff8e1715c
[gaim-migrate @ 7536]
Christian Hammond <chipx86@chipx86.com>
parents:
6858
diff
changeset
|
1294 | msn_group_get_id(group)); |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1295 | |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1296 | if (!msn_servconn_send_command(session->notification_conn, |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1297 | "ADD", outparams)) { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1298 | gaim_connection_error(gc, _("Write error")); |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1299 | return FALSE; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1300 | } |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1301 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1302 | if (old_group != NULL) |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1303 | msn_group_remove_user(old_group, session->moving_user); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1304 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1305 | msn_user_unref(session->moving_user); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1306 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1307 | session->moving_user = NULL; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1308 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1309 | if (old_group != NULL && |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1310 | msn_users_get_count(msn_group_get_users(old_group)) <= 0) { |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1311 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1312 | g_snprintf(outparams, sizeof(outparams), "%d", |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1313 | msn_group_get_id(old_group)); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1314 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1315 | if (!msn_servconn_send_command(session->notification_conn, |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1316 | "RMG", outparams)) { |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1317 | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1318 | gaim_connection_error(gc, _("Write error")); |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1319 | return FALSE; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1320 | } |
|
5322
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1321 | } |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1322 | } |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1323 | |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1324 | return TRUE; |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1325 | } |
|
782746a9bfdd
[gaim-migrate @ 5694]
Christian Hammond <chipx86@chipx86.com>
parents:
5318
diff
changeset
|
1326 | |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1327 | static gboolean |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1328 | rmg_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1329 | size_t param_count) |
|
5518
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1330 | { |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1331 | MsnSession *session = servconn->session; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1332 | MsnGroup *group; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1333 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1334 | group = msn_groups_find_with_id(session->groups, atoi(params[2])); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1335 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1336 | if (group != NULL) |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1337 | msn_groups_remove(session->groups, group); |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1338 | |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1339 | return TRUE; |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1340 | } |
|
436fb9490b62
[gaim-migrate @ 5918]
Christian Hammond <chipx86@chipx86.com>
parents:
5509
diff
changeset
|
1341 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1342 | static gboolean |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1343 | syn_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1344 | size_t param_count) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1345 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1346 | MsnSession *session = servconn->session; |
|
7289
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1347 | GaimConnection *gc = gaim_account_get_connection(session->account); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1348 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1349 | if (session->protocol_ver >= 8) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1350 | { |
|
8613
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1351 | if (param_count == 2) |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1352 | { |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1353 | char buf[256]; |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1354 | |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1355 | /* |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1356 | * This can happen if we sent a SYN with an up-to-date |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1357 | * buddy list revision, but we send 0 to get a full list. |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1358 | * So, error out. |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1359 | */ |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1360 | snprintf(buf, sizeof(buf), |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1361 | _("Your MSN buddy list for %s is temporarily unavailable. " |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1362 | "Please wait and try again."), |
| 8614 | 1363 | gaim_account_get_username(session->account)); |
|
8613
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1364 | gaim_connection_error(gc, buf); |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1365 | |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1366 | return FALSE; |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1367 | } |
|
60a7c28a27c2
[gaim-migrate @ 9364]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
1368 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1369 | session->total_users = atoi(params[2]); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1370 | session->total_groups = atoi(params[3]); |
|
7289
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1371 | |
|
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1372 | if (session->total_users == 0) |
|
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1373 | { |
|
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1374 | gaim_connection_set_state(gc, GAIM_CONNECTED); |
|
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1375 | serv_finish_login(gc); |
|
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1376 | |
|
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1377 | session->syncing_lists = FALSE; |
|
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1378 | session->lists_synced = TRUE; |
|
67672b89ef44
[gaim-migrate @ 7870]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
1379 | } |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1380 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1381 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1382 | return TRUE; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1383 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1384 | |
| 5309 | 1385 | /************************************************************************** |
| 1386 | * Misc commands | |
| 1387 | **************************************************************************/ | |
| 1388 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1389 | url_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1390 | size_t param_count) |
| 5309 | 1391 | { |
| 1392 | MsnSession *session = servconn->session; | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1393 | GaimAccount *account = session->account; |
| 5309 | 1394 | const char *rru; |
| 1395 | const char *url; | |
| 1396 | md5_state_t st; | |
| 1397 | md5_byte_t di[16]; | |
| 1398 | FILE *fd; | |
| 1399 | char buf[2048]; | |
| 1400 | char buf2[3]; | |
| 1401 | char sendbuf[64]; | |
| 1402 | int i; | |
| 1403 | ||
| 1404 | rru = params[1]; | |
| 1405 | url = params[2]; | |
| 1406 | ||
| 1407 | g_snprintf(buf, sizeof(buf), "%s%lu%s", | |
| 1408 | session->passport_info.mspauth, | |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1409 | time(NULL) - session->passport_info.sl, |
|
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1410 | gaim_account_get_password(account)); |
| 5309 | 1411 | |
| 1412 | md5_init(&st); | |
| 1413 | md5_append(&st, (const md5_byte_t *)buf, strlen(buf)); | |
| 1414 | md5_finish(&st, di); | |
| 1415 | ||
| 1416 | memset(sendbuf, 0, sizeof(sendbuf)); | |
| 1417 | ||
| 1418 | for (i = 0; i < 16; i++) { | |
| 1419 | g_snprintf(buf2, sizeof(buf2), "%02x", di[i]); | |
| 1420 | strcat(sendbuf, buf2); | |
| 1421 | } | |
| 1422 | ||
| 1423 | if (session->passport_info.file != NULL) { | |
| 1424 | unlink(session->passport_info.file); | |
| 1425 | g_free(session->passport_info.file); | |
| 1426 | } | |
| 1427 | ||
| 1428 | if ((fd = gaim_mkstemp(&session->passport_info.file)) == NULL) { | |
| 1429 | gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
| 1430 | "Error opening temp passport file: %s\n", | |
| 1431 | strerror(errno)); | |
| 1432 | } | |
| 1433 | else { | |
| 1434 | fputs("<html>\n" | |
| 1435 | "<head>\n" | |
| 1436 | "<noscript>\n" | |
| 1437 | "<meta http-equiv=\"Refresh\" content=\"0; " | |
| 1438 | "url=http://www.hotmail.com\">\n" | |
| 1439 | "</noscript>\n" | |
| 1440 | "</head>\n\n", | |
| 1441 | fd); | |
| 1442 | ||
| 1443 | fprintf(fd, "<body onload=\"document.pform.submit(); \">\n"); | |
| 1444 | fprintf(fd, "<form name=\"pform\" action=\"%s\" method=\"POST\">\n\n", | |
| 1445 | url); | |
| 1446 | fprintf(fd, "<input type=\"hidden\" name=\"mode\" value=\"ttl\">\n"); | |
| 1447 | fprintf(fd, "<input type=\"hidden\" name=\"login\" value=\"%s\">\n", | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1448 | gaim_account_get_username(account)); |
| 5309 | 1449 | fprintf(fd, "<input type=\"hidden\" name=\"username\" value=\"%s\">\n", |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1450 | gaim_account_get_username(account)); |
| 5309 | 1451 | fprintf(fd, "<input type=\"hidden\" name=\"sid\" value=\"%s\">\n", |
| 1452 | session->passport_info.sid); | |
| 1453 | fprintf(fd, "<input type=\"hidden\" name=\"kv\" value=\"%s\">\n", | |
| 1454 | session->passport_info.kv); | |
| 1455 | fprintf(fd, "<input type=\"hidden\" name=\"id\" value=\"2\">\n"); | |
| 1456 | fprintf(fd, "<input type=\"hidden\" name=\"sl\" value=\"%ld\">\n", | |
| 1457 | time(NULL) - session->passport_info.sl); | |
| 1458 | fprintf(fd, "<input type=\"hidden\" name=\"rru\" value=\"%s\">\n", | |
| 1459 | rru); | |
| 1460 | fprintf(fd, "<input type=\"hidden\" name=\"auth\" value=\"%s\">\n", | |
| 1461 | session->passport_info.mspauth); | |
| 1462 | fprintf(fd, "<input type=\"hidden\" name=\"creds\" value=\"%s\">\n", | |
| 1463 | sendbuf); /* TODO Digest me (huh? -- ChipX86) */ | |
| 1464 | fprintf(fd, "<input type=\"hidden\" name=\"svc\" value=\"mail\">\n"); | |
| 7699 | 1465 | fprintf(fd, "<input type=\"hidden\" name=\"js\" value=\"yes\">\n"); |
| 5309 | 1466 | fprintf(fd, "</form></body>\n"); |
| 1467 | fprintf(fd, "</html>\n"); | |
| 1468 | ||
| 1469 | if (fclose(fd)) { | |
| 1470 | gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
| 1471 | "Error closing temp passport file: %s\n", | |
| 1472 | strerror(errno)); | |
| 1473 | ||
| 1474 | unlink(session->passport_info.file); | |
| 1475 | g_free(session->passport_info.file); | |
| 1476 | } | |
| 1477 | else { | |
| 1478 | /* | |
| 1479 | * Renaming file with .html extension, so that the | |
| 1480 | * win32 open_url will work. | |
| 1481 | */ | |
| 1482 | char *tmp; | |
| 1483 | ||
| 1484 | if ((tmp = g_strdup_printf("%s.html", | |
| 1485 | session->passport_info.file)) != NULL) { | |
| 1486 | ||
| 1487 | if (rename(session->passport_info.file, tmp) == 0) { | |
| 1488 | g_free(session->passport_info.file); | |
| 1489 | session->passport_info.file = tmp; | |
| 1490 | } | |
| 1491 | else | |
| 1492 | g_free(tmp); | |
| 1493 | } | |
| 1494 | } | |
| 1495 | } | |
| 1496 | ||
| 1497 | return TRUE; | |
| 1498 | } | |
| 1499 | /************************************************************************** | |
| 1500 | * Switchboards | |
| 1501 | **************************************************************************/ | |
| 1502 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1503 | rng_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1504 | size_t param_count) |
| 5309 | 1505 | { |
| 1506 | MsnSession *session = servconn->session; | |
| 1507 | MsnSwitchBoard *swboard; | |
| 1508 | MsnUser *user; | |
| 1509 | const char *session_id; | |
| 1510 | char *host, *c; | |
| 1511 | int port; | |
| 1512 | ||
| 1513 | session_id = params[0]; | |
| 1514 | ||
| 1515 | host = g_strdup(params[1]); | |
| 1516 | ||
| 1517 | if ((c = strchr(host, ':')) != NULL) { | |
| 1518 | *c = '\0'; | |
| 1519 | port = atoi(c + 1); | |
| 1520 | } | |
| 1521 | else | |
| 1522 | port = 1863; | |
| 1523 | ||
|
7288
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1524 | if (session->http_method) |
|
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1525 | port = 80; |
|
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1526 | |
| 5309 | 1527 | swboard = msn_switchboard_new(session); |
| 1528 | ||
| 1529 | user = msn_user_new(session, params[4], NULL); | |
| 1530 | ||
| 1531 | msn_switchboard_set_invited(swboard, TRUE); | |
| 1532 | msn_switchboard_set_session_id(swboard, params[0]); | |
| 1533 | msn_switchboard_set_auth_key(swboard, params[3]); | |
| 1534 | msn_switchboard_set_user(swboard, user); | |
| 1535 | ||
| 1536 | if (!msn_switchboard_connect(swboard, host, port)) { | |
| 1537 | gaim_debug(GAIM_DEBUG_ERROR, "msn", | |
| 1538 | "Unable to connect to switchboard on %s, port %d\n", | |
| 1539 | host, port); | |
| 1540 | ||
| 1541 | g_free(host); | |
| 1542 | ||
| 1543 | return FALSE; | |
| 1544 | } | |
| 1545 | ||
| 1546 | g_free(host); | |
| 1547 | ||
| 1548 | return TRUE; | |
| 1549 | } | |
| 1550 | ||
| 1551 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1552 | xfr_cmd(MsnServConn *servconn, const char *command, const char **params, |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1553 | size_t param_count) |
| 5309 | 1554 | { |
| 1555 | MsnSession *session = servconn->session; | |
| 1556 | MsnSwitchBoard *swboard; | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1557 | GaimConnection *gc = session->account->gc; |
| 5309 | 1558 | char *host; |
| 1559 | char *c; | |
| 1560 | int port; | |
| 1561 | ||
|
5385
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1562 | if (strcmp(params[1], "SB") && strcmp(params[1], "NS")) { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1563 | gaim_connection_error(gc, _("Got invalid XFR")); |
|
7188
727e70128ff5
[gaim-migrate @ 7757]
Christian Hammond <chipx86@chipx86.com>
parents:
7162
diff
changeset
|
1564 | |
| 5309 | 1565 | return FALSE; |
| 1566 | } | |
| 1567 | ||
| 1568 | host = g_strdup(params[2]); | |
| 1569 | ||
| 1570 | if ((c = strchr(host, ':')) != NULL) { | |
| 1571 | *c = '\0'; | |
| 1572 | port = atoi(c + 1); | |
| 1573 | } | |
| 1574 | else | |
| 1575 | port = 1863; | |
| 1576 | ||
|
5385
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1577 | if (!strcmp(params[1], "SB")) { |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1578 | swboard = msn_session_find_unused_switch(session); |
| 5309 | 1579 | |
|
5385
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1580 | if (swboard == NULL) { |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1581 | gaim_debug(GAIM_DEBUG_ERROR, "msn", |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1582 | "Received an XFR SB request when there's no unused " |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1583 | "switchboards!\n"); |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1584 | return FALSE; |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1585 | } |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1586 | |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1587 | msn_switchboard_set_auth_key(swboard, params[4]); |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1588 | |
|
7288
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1589 | if (session->http_method) |
|
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1590 | port = 80; |
|
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1591 | |
|
5385
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1592 | if (!msn_switchboard_connect(swboard, host, port)) { |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1593 | gaim_debug(GAIM_DEBUG_ERROR, "msn", |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1594 | "Unable to connect to switchboard on %s, port %d\n", |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1595 | host, port); |
| 5309 | 1596 | |
|
5385
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1597 | g_free(host); |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1598 | |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1599 | return FALSE; |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1600 | } |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1601 | } |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1602 | else if (!strcmp(params[1], "NS")) { |
|
8583
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1603 | if (!msn_notification_connect(session->notification_conn, host, |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1604 | port)) |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1605 | { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1606 | gaim_connection_error(gc, _("Unable to transfer to " |
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1607 | "notification server")); |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1608 | |
|
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1609 | g_free(host); |
| 5309 | 1610 | |
|
5385
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1611 | return FALSE; |
|
12f55f3be43e
[gaim-migrate @ 5761]
Christian Hammond <chipx86@chipx86.com>
parents:
5375
diff
changeset
|
1612 | } |
| 5309 | 1613 | } |
| 1614 | ||
| 1615 | g_free(host); | |
| 1616 | ||
| 1617 | return TRUE; | |
| 1618 | } | |
| 1619 | ||
| 1620 | /************************************************************************** | |
| 1621 | * Message Types | |
| 1622 | **************************************************************************/ | |
| 1623 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1624 | profile_msg(MsnServConn *servconn, MsnMessage *msg) |
| 5309 | 1625 | { |
| 1626 | MsnSession *session = servconn->session; | |
| 1627 | const char *value; | |
| 1628 | ||
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1629 | if (strcmp(msg->passport, "Hotmail")) { |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1630 | /* This isn't an official message. */ |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1631 | return TRUE; |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1632 | } |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1633 | |
| 5309 | 1634 | if ((value = msn_message_get_attr(msg, "kv")) != NULL) |
| 1635 | session->passport_info.kv = g_strdup(value); | |
| 1636 | ||
| 1637 | if ((value = msn_message_get_attr(msg, "sid")) != NULL) | |
| 1638 | session->passport_info.sid = g_strdup(value); | |
| 1639 | ||
| 1640 | if ((value = msn_message_get_attr(msg, "MSPAuth")) != NULL) | |
| 1641 | session->passport_info.mspauth = g_strdup(value); | |
| 1642 | ||
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1643 | if ((value = msn_message_get_attr(msg, "ClientIP")) != NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1644 | session->passport_info.client_ip = g_strdup(value); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1645 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1646 | if ((value = msn_message_get_attr(msg, "ClientPort")) != NULL) |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1647 | session->passport_info.client_port = ntohs(atoi(value)); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1648 | |
| 5309 | 1649 | return TRUE; |
| 1650 | } | |
| 1651 | ||
| 1652 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1653 | initial_email_msg(MsnServConn *servconn, MsnMessage *msg) |
| 5309 | 1654 | { |
| 1655 | MsnSession *session = servconn->session; | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1656 | GaimConnection *gc = session->account->gc; |
| 5309 | 1657 | GHashTable *table; |
| 1658 | const char *unread; | |
| 1659 | ||
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1660 | if (strcmp(msg->passport, "Hotmail")) { |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1661 | /* This isn't an official message. */ |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1662 | return TRUE; |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1663 | } |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1664 | |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1665 | if (!gaim_account_get_check_mail(session->account)) |
|
5520
d49ba63410e3
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1666 | return TRUE; |
|
d49ba63410e3
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1667 | |
|
5358
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1668 | if (session->passport_info.file == NULL) { |
|
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1669 | msn_servconn_send_command(servconn, "URL", "INBOX"); |
|
5506
b53a1acacefe
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1670 | |
|
b53a1acacefe
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1671 | msn_servconn_queue_message(servconn, "URL", msg); |
|
b53a1acacefe
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1672 | |
|
5358
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1673 | return TRUE; |
|
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1674 | } |
|
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1675 | |
| 5309 | 1676 | table = msn_message_get_hashtable_from_body(msg); |
| 1677 | ||
| 1678 | unread = g_hash_table_lookup(table, "Inbox-Unread"); | |
| 1679 | ||
|
5520
d49ba63410e3
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1680 | if (unread != NULL) { |
|
7190
53b81e545762
[gaim-migrate @ 7759]
Christian Hammond <chipx86@chipx86.com>
parents:
7188
diff
changeset
|
1681 | int count = atoi(unread); |
|
53b81e545762
[gaim-migrate @ 7759]
Christian Hammond <chipx86@chipx86.com>
parents:
7188
diff
changeset
|
1682 | |
|
53b81e545762
[gaim-migrate @ 7759]
Christian Hammond <chipx86@chipx86.com>
parents:
7188
diff
changeset
|
1683 | if (count != 0) |
|
53b81e545762
[gaim-migrate @ 7759]
Christian Hammond <chipx86@chipx86.com>
parents:
7188
diff
changeset
|
1684 | { |
| 7699 | 1685 | const char *passport = msn_user_get_passport(session->user); |
| 1686 | const char *file = session->passport_info.file; | |
| 1687 | gchar *url; | |
| 1688 | while (*file && *file == '/') | |
| 1689 | ++file; | |
| 1690 | url = g_strconcat ("file:///", file, 0); | |
|
7820
06fc9f66d2cb
[gaim-migrate @ 8472]
Mark Doliner <markdoliner@pidgin.im>
parents:
7817
diff
changeset
|
1691 | gaim_notify_emails(gc, count, FALSE, NULL, NULL, |
|
06fc9f66d2cb
[gaim-migrate @ 8472]
Mark Doliner <markdoliner@pidgin.im>
parents:
7817
diff
changeset
|
1692 | &passport, (const char **)&url, NULL, NULL); |
| 7699 | 1693 | g_free (url); |
|
7190
53b81e545762
[gaim-migrate @ 7759]
Christian Hammond <chipx86@chipx86.com>
parents:
7188
diff
changeset
|
1694 | } |
|
5520
d49ba63410e3
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1695 | } |
| 5309 | 1696 | |
| 1697 | g_hash_table_destroy(table); | |
| 1698 | ||
| 1699 | return TRUE; | |
| 1700 | } | |
| 1701 | ||
| 1702 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1703 | email_msg(MsnServConn *servconn, MsnMessage *msg) |
| 5309 | 1704 | { |
| 1705 | MsnSession *session = servconn->session; | |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1706 | GaimConnection *gc = session->account->gc; |
| 5309 | 1707 | GHashTable *table; |
|
7817
2155f763ab5d
[gaim-migrate @ 8464]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7699
diff
changeset
|
1708 | char *from, *subject; |
| 5309 | 1709 | |
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1710 | if (strcmp(msg->passport, "Hotmail")) { |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1711 | /* This isn't an official message. */ |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1712 | return TRUE; |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1713 | } |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1714 | |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1715 | if (!gaim_account_get_check_mail(session->account)) |
|
5520
d49ba63410e3
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1716 | return TRUE; |
|
d49ba63410e3
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1717 | |
|
5358
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1718 | if (session->passport_info.file == NULL) { |
|
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1719 | msn_servconn_send_command(servconn, "URL", "INBOX"); |
|
5506
b53a1acacefe
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1720 | |
|
b53a1acacefe
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1721 | msn_servconn_queue_message(servconn, "URL", msg); |
|
b53a1acacefe
[gaim-migrate @ 5905]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
1722 | |
|
5358
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1723 | return TRUE; |
|
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1724 | } |
|
efa9128e93fe
[gaim-migrate @ 5734]
Christian Hammond <chipx86@chipx86.com>
parents:
5353
diff
changeset
|
1725 | |
| 5309 | 1726 | table = msn_message_get_hashtable_from_body(msg); |
| 1727 | ||
|
7817
2155f763ab5d
[gaim-migrate @ 8464]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7699
diff
changeset
|
1728 | from = gaim_mime_decode_field(g_hash_table_lookup(table, "From")); |
|
2155f763ab5d
[gaim-migrate @ 8464]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7699
diff
changeset
|
1729 | subject = gaim_mime_decode_field(g_hash_table_lookup(table, "Subject")); |
| 5309 | 1730 | |
|
5520
d49ba63410e3
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1731 | gaim_notify_email(gc, subject, from, msn_user_get_passport(session->user), |
|
d49ba63410e3
[gaim-migrate @ 5920]
Christian Hammond <chipx86@chipx86.com>
parents:
5518
diff
changeset
|
1732 | session->passport_info.file, NULL, NULL); |
| 5309 | 1733 | |
|
7817
2155f763ab5d
[gaim-migrate @ 8464]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7699
diff
changeset
|
1734 | g_free(from); |
|
2155f763ab5d
[gaim-migrate @ 8464]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7699
diff
changeset
|
1735 | g_free(subject); |
|
2155f763ab5d
[gaim-migrate @ 8464]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7699
diff
changeset
|
1736 | |
| 5309 | 1737 | g_hash_table_destroy(table); |
| 1738 | ||
| 1739 | return TRUE; | |
| 1740 | } | |
| 1741 | ||
| 1742 | static gboolean | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1743 | system_msg(MsnServConn *servconn, MsnMessage *msg) |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1744 | { |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1745 | GHashTable *table; |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1746 | const char *type_s; |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1747 | |
|
8646
74d0e7406e3b
[gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8614
diff
changeset
|
1748 | if (strcmp(msg->passport, "Hotmail")) { |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1749 | /* This isn't an official message. */ |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1750 | return TRUE; |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1751 | } |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1752 | |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1753 | table = msn_message_get_hashtable_from_body(msg); |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1754 | |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1755 | if ((type_s = g_hash_table_lookup(table, "Type")) != NULL) { |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1756 | int type = atoi(type_s); |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1757 | char buf[MSN_BUF_LEN]; |
|
6308
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1758 | int minutes; |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1759 | |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1760 | switch (type) { |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1761 | case 1: |
|
6308
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1762 | minutes = atoi(g_hash_table_lookup(table, "Arg1")); |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1763 | g_snprintf(buf, sizeof(buf), ngettext( |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1764 | "The MSN server will shut down for maintenance " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1765 | "in %d minute. You will automatically be " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1766 | "signed out at that time. Please finish any " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1767 | "conversations in progress.\n\nAfter the " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1768 | "maintenance has been completed, you will be " |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1769 | "able to successfully sign in.", |
|
6308
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1770 | "The MSN server will shut down for maintenance " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1771 | "in %d minutes. You will automatically be " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1772 | "signed out at that time. Please finish any " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1773 | "conversations in progress.\n\nAfter the " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1774 | "maintenance has been completed, you will be " |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1775 | "able to successfully sign in.", minutes), |
|
12d48b4e80db
[gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents:
5963
diff
changeset
|
1776 | minutes); |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1777 | default: |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1778 | break; |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1779 | } |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1780 | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5406
diff
changeset
|
1781 | if (*buf != '\0') |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5406
diff
changeset
|
1782 | gaim_notify_info(servconn->session->account->gc, NULL, buf, NULL); |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1783 | } |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1784 | |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1785 | g_hash_table_destroy(table); |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1786 | |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1787 | return TRUE; |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1788 | } |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1789 | |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1790 | static gboolean |
|
8583
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1791 | connect_cb(MsnServConn *servconn) |
| 5309 | 1792 | { |
|
8583
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1793 | MsnSession *session = servconn->session; |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1794 | GaimAccount *account = session->account; |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1795 | GaimConnection *gc = gaim_account_get_connection(account); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1796 | char proto_vers[256]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1797 | size_t i; |
| 5309 | 1798 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1799 | proto_vers[0] = '\0'; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1800 | |
|
6828
f4190a22af19
[gaim-migrate @ 7373]
Christian Hammond <chipx86@chipx86.com>
parents:
6827
diff
changeset
|
1801 | for (i = 7; i <= session->protocol_ver; i++) |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1802 | { |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1803 | char old_buf[256]; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1804 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1805 | strcpy(old_buf, proto_vers); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1806 | |
| 7386 | 1807 | g_snprintf(proto_vers, sizeof(proto_vers), "MSNP%d %s", (int)i, old_buf); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1808 | } |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1809 | |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1810 | strncat(proto_vers, "CVR0", sizeof(proto_vers)); |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1811 | |
|
8583
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1812 | if (!msn_servconn_send_command(servconn, "VER", proto_vers)) |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1813 | { |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1814 | gaim_connection_error(gc, _("Unable to write to server")); |
| 5309 | 1815 | return FALSE; |
| 1816 | } | |
| 1817 | ||
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5520
diff
changeset
|
1818 | session->user = msn_user_new(session, |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1819 | gaim_account_get_username(account), NULL); |
|
5363
b6e28be0c9bd
[gaim-migrate @ 5739]
Christian Hammond <chipx86@chipx86.com>
parents:
5361
diff
changeset
|
1820 | |
|
5566
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1821 | gaim_connection_update_progress(gc, _("Syncing with server"), |
|
7ebd31a6f5da
[gaim-migrate @ 5968]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
1822 | 4, MSN_CONNECT_STEPS); |
| 5309 | 1823 | |
| 1824 | return TRUE; | |
| 1825 | } | |
| 1826 | ||
| 1827 | MsnServConn * | |
|
8583
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1828 | msn_notification_new(MsnSession *session) |
| 5309 | 1829 | { |
| 1830 | MsnServConn *notification; | |
| 1831 | ||
| 1832 | notification = msn_servconn_new(session); | |
| 1833 | ||
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1834 | msn_servconn_set_connect_cb(notification, connect_cb); |
| 5309 | 1835 | |
|
7288
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1836 | if (session->http_method) |
|
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1837 | notification->http_data->server_type = "NS"; |
|
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
7274
diff
changeset
|
1838 | |
| 5309 | 1839 | if (notification_commands == NULL) { |
| 1840 | /* Register the command callbacks. */ | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1841 | msn_servconn_register_command(notification, "ADD", add_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1842 | msn_servconn_register_command(notification, "ADG", adg_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1843 | msn_servconn_register_command(notification, "BLP", blp_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1844 | msn_servconn_register_command(notification, "BPR", bpr_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1845 | msn_servconn_register_command(notification, "CHG", blank_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1846 | msn_servconn_register_command(notification, "CHL", chl_cmd); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1847 | msn_servconn_register_command(notification, "CVR", cvr_cmd); |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1848 | msn_servconn_register_command(notification, "FLN", fln_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1849 | msn_servconn_register_command(notification, "GTC", blank_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1850 | msn_servconn_register_command(notification, "ILN", iln_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1851 | msn_servconn_register_command(notification, "INF", inf_cmd); |
|
5960
cd797d042726
[gaim-migrate @ 6407]
Christian Hammond <chipx86@chipx86.com>
parents:
5933
diff
changeset
|
1852 | msn_servconn_register_command(notification, "IPG", ipg_cmd); |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1853 | msn_servconn_register_command(notification, "LSG", lsg_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1854 | msn_servconn_register_command(notification, "LST", lst_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1855 | msn_servconn_register_command(notification, "MSG", msg_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1856 | msn_servconn_register_command(notification, "NLN", nln_cmd); |
|
5961
1b164b7e21c5
[gaim-migrate @ 6408]
Christian Hammond <chipx86@chipx86.com>
parents:
5960
diff
changeset
|
1857 | msn_servconn_register_command(notification, "NOT", not_cmd); |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1858 | msn_servconn_register_command(notification, "OUT", out_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1859 | msn_servconn_register_command(notification, "PRP", prp_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1860 | msn_servconn_register_command(notification, "QNG", blank_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1861 | msn_servconn_register_command(notification, "QRY", blank_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1862 | msn_servconn_register_command(notification, "REA", rea_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1863 | msn_servconn_register_command(notification, "REG", reg_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1864 | msn_servconn_register_command(notification, "REM", rem_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1865 | msn_servconn_register_command(notification, "RMG", rmg_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1866 | msn_servconn_register_command(notification, "RNG", rng_cmd); |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
1867 | msn_servconn_register_command(notification, "SYN", syn_cmd); |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1868 | msn_servconn_register_command(notification, "URL", url_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1869 | msn_servconn_register_command(notification, "USR", usr_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1870 | msn_servconn_register_command(notification, "VER", ver_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1871 | msn_servconn_register_command(notification, "XFR", xfr_cmd); |
|
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1872 | msn_servconn_register_command(notification, "_unknown_", unknown_cmd); |
| 5309 | 1873 | |
| 1874 | /* Register the message type callbacks. */ | |
| 1875 | msn_servconn_register_msg_type(notification, "text/x-msmsgsprofile", | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1876 | profile_msg); |
| 5309 | 1877 | msn_servconn_register_msg_type(notification, |
| 1878 | "text/x-msmsgsinitialemailnotification", | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1879 | initial_email_msg); |
| 5309 | 1880 | msn_servconn_register_msg_type(notification, |
| 1881 | "text/x-msmsgsemailnotification", | |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1882 | email_msg); |
|
5333
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1883 | msn_servconn_register_msg_type(notification, |
|
e1ae88905e28
[gaim-migrate @ 5708]
Christian Hammond <chipx86@chipx86.com>
parents:
5327
diff
changeset
|
1884 | "application/x-msmsgssystemmessage", |
|
5793
28d84d5e5663
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5768
diff
changeset
|
1885 | system_msg); |
| 5309 | 1886 | |
| 1887 | /* Save these for future use. */ | |
| 1888 | notification_commands = notification->commands; | |
| 1889 | notification_msg_types = notification->msg_types; | |
| 1890 | } | |
| 1891 | else { | |
| 1892 | g_hash_table_destroy(notification->commands); | |
| 1893 | g_hash_table_destroy(notification->msg_types); | |
| 1894 | ||
| 1895 | notification->commands = notification_commands; | |
| 1896 | notification->msg_types = notification_msg_types; | |
| 1897 | } | |
| 1898 | ||
| 1899 | return notification; | |
| 1900 | } | |
|
8583
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1901 | |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1902 | gboolean |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1903 | msn_notification_connect(MsnServConn *notification, const char *host, int port) |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1904 | { |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1905 | g_return_val_if_fail(notification != NULL, FALSE); |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1906 | |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1907 | return msn_servconn_connect(notification, host, port); |
|
56f69df8f12f
[gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8569
diff
changeset
|
1908 | } |