Mon, 10 Mar 2003 05:30:31 +0000
[gaim-migrate @ 4998]
This is a new buddy list.
Lots of things about it just Don't Work. I probably already know about those
things, and you'd just be wasting my time in submitting a bug report about it.
I decided that instead of getting it to all work perfectly before committing,
that I'd get it in cvs, and slowly fix it with regular commits. That way, it's
easier to keep track of things, and other developers can help. Plus, I'm getting
pissed off at the buddy list and want it to die. It's kinda boring, and doing nothing
but the buddy list for such a long time has just gotten me very bitter.
After 0.60 is released later this week, Gaim will resume being fun. This week is
going to be very stressful, though, I'm sure.
Things you ought to know about this buddy list:
- It crashes
- It leaks
- There's no way to edit the buddy list, or access offline buddies
- Most of the menus and buttons and whatnot just plain ol' don't work.
- Status icons are only implemented for AIM.
That's mostly just because I'm lazy. As such, you may want to be wary of updating this.
If you do decide to update this, you may want to learn "cvs update -D yesterday" as well :)
All the art there is just placeholder art.
You probably won't really have as many problems as it sounds like you will from reading this.
This message is extra-negative to stress that I don't want to be bothered with complaints about
something not working about it :). I'll repeat: If something doesn't work, I probably already
know about it.
If you want to actually help with something, I'd be delighted to have it. IM me.
-s.
|
4542
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
1 | /** |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
2 | * @file msn.c The MSN protocol plugin |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
3 | * |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
4 | * gaim |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
5 | * |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
6 | * Parts Copyright (C) 2003, Christian Hammond <chipx86@gnupdate.org> |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
7 | * |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
8 | * This program is free software; you can redistribute it and/or modify |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
9 | * it under the terms of the GNU General Public License as published by |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
10 | * the Free Software Foundation; either version 2 of the License, or |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
11 | * (at your option) any later version. |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
12 | * |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
13 | * This program is distributed in the hope that it will be useful, |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
16 | * GNU General Public License for more details. |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
17 | * |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
18 | * You should have received a copy of the GNU General Public License |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
19 | * along with this program; if not, write to the Free Software |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
21 | * |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
22 | */ |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
23 | #include "msn.h" |
| 3630 | 24 | |
|
4546
d14ad00fe294
[gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents:
4542
diff
changeset
|
25 | #ifdef _WIN32 |
|
d14ad00fe294
[gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents:
4542
diff
changeset
|
26 | #include "win32dep.h" |
|
d14ad00fe294
[gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents:
4542
diff
changeset
|
27 | #endif |
|
d14ad00fe294
[gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents:
4542
diff
changeset
|
28 | |
| 3592 | 29 | #include "pixmaps/protocols/msn/msn_online.xpm" |
| 30 | #include "pixmaps/protocols/msn/msn_away.xpm" | |
| 31 | #include "pixmaps/protocols/msn/msn_occ.xpm" | |
| 2086 | 32 | |
| 4687 | 33 | #define BUDDY_ALIAS_MAXLEN 388 |
|
4542
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
34 | |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
35 | static struct prpl *my_protocol = NULL; |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
36 | |
| 3630 | 37 | /* for win32 compatability */ |
| 38 | G_MODULE_IMPORT GSList *connections; | |
| 39 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
40 | static void msn_login_callback(gpointer, gint, GaimInputCondition); |
|
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
41 | static void msn_login_xfr_connect(gpointer, gint, GaimInputCondition); |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
42 | |
|
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
43 | #if 0 |
|
4546
d14ad00fe294
[gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents:
4542
diff
changeset
|
44 | static struct msn_file_transfer *find_mft_by_cookie(struct gaim_connection *gc, unsigned long cookie); |
|
d14ad00fe294
[gaim-migrate @ 4825]
Herman Bloggs <herman@bluedigits.com>
parents:
4542
diff
changeset
|
45 | static struct msn_file_transfer *find_mft_by_xfer(struct gaim_connection *gc, struct file_transfer *xfer); |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
46 | #endif |
| 2086 | 47 | |
| 48 | static char *msn_normalize(const char *s) | |
| 49 | { | |
| 50 | static char buf[BUF_LEN]; | |
| 51 | ||
| 52 | g_return_val_if_fail(s != NULL, NULL); | |
| 53 | ||
| 3504 | 54 | g_snprintf(buf, sizeof(buf), "%s%s", s, strchr(s, '@') ? "" : "@hotmail.com"); |
| 2086 | 55 | |
| 56 | return buf; | |
| 57 | } | |
| 58 | ||
|
4542
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
59 | char * |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
60 | handle_errcode(char *buf, gboolean show) |
| 2086 | 61 | { |
| 62 | int errcode; | |
| 63 | static char msg[MSN_BUF_LEN]; | |
| 64 | ||
| 65 | buf[4] = 0; | |
| 66 | errcode = atoi(buf); | |
| 67 | ||
| 68 | switch (errcode) { | |
| 69 | case 200: | |
| 3263 | 70 | g_snprintf(msg, sizeof(msg), _("Syntax Error (probably a Gaim bug)")); |
| 2086 | 71 | break; |
| 72 | case 201: | |
| 3263 | 73 | g_snprintf(msg, sizeof(msg), _("Invalid Parameter (probably a Gaim bug)")); |
| 2086 | 74 | break; |
| 75 | case 205: | |
| 3263 | 76 | g_snprintf(msg, sizeof(msg), _("Invalid User")); |
| 2086 | 77 | break; |
| 78 | case 206: | |
| 3263 | 79 | g_snprintf(msg, sizeof(msg), _("Fully Qualified Domain Name missing")); |
| 2086 | 80 | break; |
| 81 | case 207: | |
| 3263 | 82 | g_snprintf(msg, sizeof(msg), _("Already Login")); |
| 2086 | 83 | break; |
| 84 | case 208: | |
| 3263 | 85 | g_snprintf(msg, sizeof(msg), _("Invalid Username")); |
| 2086 | 86 | break; |
| 87 | case 209: | |
| 3263 | 88 | g_snprintf(msg, sizeof(msg), _("Invalid Friendly Name")); |
| 2086 | 89 | break; |
| 90 | case 210: | |
| 3263 | 91 | g_snprintf(msg, sizeof(msg), _("List Full")); |
| 2086 | 92 | break; |
| 93 | case 215: | |
| 3263 | 94 | g_snprintf(msg, sizeof(msg), _("Already there")); |
| 2086 | 95 | break; |
| 96 | case 216: | |
| 3263 | 97 | g_snprintf(msg, sizeof(msg), _("Not on list")); |
| 2086 | 98 | break; |
|
2842
2b2eff92a48b
[gaim-migrate @ 2855]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
99 | case 217: |
| 3263 | 100 | g_snprintf(msg, sizeof(msg), _("User is offline")); |
|
2842
2b2eff92a48b
[gaim-migrate @ 2855]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
101 | break; |
| 2086 | 102 | case 218: |
| 3263 | 103 | g_snprintf(msg, sizeof(msg), _("Already in the mode")); |
| 2086 | 104 | break; |
| 105 | case 219: | |
| 3263 | 106 | g_snprintf(msg, sizeof(msg), _("Already in opposite list")); |
| 2086 | 107 | break; |
| 108 | case 280: | |
| 3263 | 109 | g_snprintf(msg, sizeof(msg), _("Switchboard failed")); |
| 2086 | 110 | break; |
| 111 | case 281: | |
| 3263 | 112 | g_snprintf(msg, sizeof(msg), _("Notify Transfer failed")); |
| 2086 | 113 | break; |
| 114 | ||
| 115 | case 300: | |
| 3263 | 116 | g_snprintf(msg, sizeof(msg), _("Required fields missing")); |
| 2086 | 117 | break; |
| 118 | case 302: | |
| 3263 | 119 | g_snprintf(msg, sizeof(msg), _("Not logged in")); |
| 2086 | 120 | break; |
| 121 | ||
| 122 | case 500: | |
| 3263 | 123 | g_snprintf(msg, sizeof(msg), _("Internal server error")); |
| 2086 | 124 | break; |
| 125 | case 501: | |
| 3263 | 126 | g_snprintf(msg, sizeof(msg), _("Database server error")); |
| 2086 | 127 | break; |
| 128 | case 510: | |
| 3263 | 129 | g_snprintf(msg, sizeof(msg), _("File operation error")); |
| 2086 | 130 | break; |
| 131 | case 520: | |
| 3263 | 132 | g_snprintf(msg, sizeof(msg), _("Memory allocation error")); |
| 2086 | 133 | break; |
| 134 | ||
| 135 | case 600: | |
| 3263 | 136 | g_snprintf(msg, sizeof(msg), _("Server busy")); |
| 2086 | 137 | break; |
| 138 | case 601: | |
| 3263 | 139 | g_snprintf(msg, sizeof(msg), _("Server unavailable")); |
| 2086 | 140 | break; |
| 141 | case 602: | |
| 3263 | 142 | g_snprintf(msg, sizeof(msg), _("Peer Notification server down")); |
| 2086 | 143 | break; |
| 144 | case 603: | |
| 3263 | 145 | g_snprintf(msg, sizeof(msg), _("Database connect error")); |
| 2086 | 146 | break; |
| 147 | case 604: | |
| 3263 | 148 | g_snprintf(msg, sizeof(msg), _("Server is going down (abandon ship)")); |
| 2086 | 149 | break; |
| 150 | ||
| 151 | case 707: | |
| 3263 | 152 | g_snprintf(msg, sizeof(msg), _("Error creating connection")); |
| 2086 | 153 | break; |
| 154 | case 711: | |
| 3263 | 155 | g_snprintf(msg, sizeof(msg), _("Unable to write")); |
| 2086 | 156 | break; |
| 157 | case 712: | |
| 3263 | 158 | g_snprintf(msg, sizeof(msg), _("Session overload")); |
| 2086 | 159 | break; |
| 160 | case 713: | |
| 3263 | 161 | g_snprintf(msg, sizeof(msg), _("User is too active")); |
| 2086 | 162 | break; |
| 163 | case 714: | |
| 3263 | 164 | g_snprintf(msg, sizeof(msg), _("Too many sessions")); |
| 2086 | 165 | break; |
| 166 | case 715: | |
| 3263 | 167 | g_snprintf(msg, sizeof(msg), _("Not expected")); |
| 2086 | 168 | break; |
| 169 | case 717: | |
| 3263 | 170 | g_snprintf(msg, sizeof(msg), _("Bad friend file")); |
| 2086 | 171 | break; |
| 172 | ||
| 173 | case 911: | |
| 3263 | 174 | g_snprintf(msg, sizeof(msg), _("Authentication failed")); |
| 2086 | 175 | break; |
| 176 | case 913: | |
| 3263 | 177 | g_snprintf(msg, sizeof(msg), _("Not allowed when offline")); |
| 2086 | 178 | break; |
| 3073 | 179 | case 920: |
| 3263 | 180 | g_snprintf(msg, sizeof(msg), _("Not accepting new users")); |
| 2086 | 181 | break; |
| 3073 | 182 | case 924: |
| 3263 | 183 | g_snprintf(msg, sizeof(msg), _("User unverified")); |
| 3073 | 184 | break; |
| 2086 | 185 | default: |
| 3263 | 186 | g_snprintf(msg, sizeof(msg), _("Unknown Error Code")); |
| 2086 | 187 | break; |
| 188 | } | |
| 189 | ||
| 190 | if (show) | |
| 3427 | 191 | do_error_dialog(msg, NULL, GAIM_ERROR); |
| 2086 | 192 | |
| 193 | return msg; | |
| 194 | } | |
| 195 | ||
|
4542
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
196 | |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
197 | char *url_decode(const char *msg) |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
198 | { |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
199 | static char buf[MSN_BUF_LEN]; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
200 | int i, j = 0; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
201 | |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
202 | bzero(buf, sizeof(buf)); |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
203 | for (i = 0; i < strlen(msg); i++) { |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
204 | char hex[3]; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
205 | if (msg[i] != '%') { |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
206 | buf[j++] = msg[i]; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
207 | continue; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
208 | } |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
209 | strncpy(hex, msg + ++i, 2); hex[2] = 0; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
210 | /* i is pointing to the start of the number */ |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
211 | i++; /* now it's at the end and at the start of the for loop |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
212 | will be at the next character */ |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
213 | buf[j++] = strtol(hex, NULL, 16); |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
214 | } |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
215 | buf[j] = 0; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
216 | |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
217 | return buf; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
218 | } |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
219 | |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
220 | static char *url_encode(const char *msg) |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
221 | { |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
222 | static char buf[MSN_BUF_LEN]; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
223 | int i, j = 0; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
224 | |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
225 | bzero(buf, sizeof(buf)); |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
226 | for (i = 0; i < strlen(msg); i++) { |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
227 | if (isalnum(msg[i])) |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
228 | buf[j++] = msg[i]; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
229 | else { |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
230 | sprintf(buf + j, "%%%02x", (unsigned char)msg[i]); |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
231 | j += 3; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
232 | } |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
233 | } |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
234 | buf[j] = 0; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
235 | |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
236 | return buf; |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
237 | } |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
238 | |
| 2086 | 239 | static void handle_hotmail(struct gaim_connection *gc, char *data) |
| 240 | { | |
| 2932 | 241 | char login_url[2048]; |
| 3171 | 242 | char buf[MSN_BUF_LEN]; |
| 243 | struct msn_data *md = gc->proto_data; | |
| 244 | ||
| 3293 | 245 | if (strchr(gc->username, '@') != strstr(gc->username, "@hotmail.com")) |
| 246 | /* We can only get Hotmail notification from hotmail users */ | |
| 247 | return; | |
| 248 | ||
| 3195 | 249 | if (!md->passport) { |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
250 | g_snprintf(buf, sizeof(buf), "URL %u INBOX\r\n", ++md->trId); |
| 2932 | 251 | |
| 3195 | 252 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
2153
f38e418776a7
[gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2152
diff
changeset
|
253 | return; |
|
f38e418776a7
[gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2152
diff
changeset
|
254 | } |
| 3195 | 255 | } else { |
| 256 | g_snprintf(login_url, sizeof(login_url), "%s", md->passport); | |
| 257 | ||
| 258 | if (strstr(data, "Content-Type: text/x-msmsgsinitialemailnotification;")) { | |
| 259 | char *x = strstr(data, "Inbox-Unread:"); | |
| 260 | if (!x) return; | |
| 261 | x += strlen("Inbox-Unread: "); | |
| 262 | connection_has_mail(gc, atoi(x), NULL, NULL, login_url); | |
| 263 | } else if (strstr(data, "Content-Type: text/x-msmsgsemailnotification;")) { | |
| 264 | char *from = strstr(data, "From:"); | |
| 265 | char *subject = strstr(data, "Subject:"); | |
| 266 | char *x; | |
| 267 | if (!from || !subject) { | |
| 268 | connection_has_mail(gc, 1, NULL, NULL, login_url); | |
| 269 | return; | |
| 270 | } | |
| 271 | from += strlen("From: "); | |
| 272 | x = strstr(from, "\r\n"); *x = 0; | |
| 273 | subject += strlen("Subject: "); | |
| 274 | x = strstr(subject, "\r\n"); *x = 0; | |
| 275 | connection_has_mail(gc, -1, from, subject, login_url); | |
| 276 | } | |
| 2086 | 277 | } |
| 278 | } | |
| 279 | ||
| 280 | struct msn_add_permit { | |
| 281 | struct gaim_connection *gc; | |
| 282 | char *user; | |
| 283 | char *friend; | |
| 284 | }; | |
| 285 | ||
| 3730 | 286 | static void msn_accept_add(struct msn_add_permit *map) |
| 2086 | 287 | { |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
288 | if(g_slist_find(connections, map->gc)) { |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
289 | struct msn_data *md = map->gc->proto_data; |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
290 | char buf[MSN_BUF_LEN]; |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
291 | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
292 | g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, map->user, url_encode(map->friend)); |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
293 | |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
294 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
295 | hide_login_progress(map->gc, _("Write error")); |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
296 | signoff(map->gc); |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
297 | return; |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
298 | } |
| 4491 | 299 | gaim_privacy_permit_add(map->gc->account, map->user); |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
300 | build_allow_list(); /* er. right. we'll need to have a thing for this in CUI too */ |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
301 | show_got_added(map->gc, NULL, map->user, map->friend, NULL); |
| 2086 | 302 | } |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
303 | |
| 3730 | 304 | g_free(map->user); |
| 305 | g_free(map->friend); | |
| 306 | g_free(map); | |
| 2086 | 307 | } |
| 308 | ||
| 3730 | 309 | static void msn_cancel_add(struct msn_add_permit *map) |
| 2086 | 310 | { |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
311 | if(g_slist_find(connections, map->gc)) { |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
312 | struct msn_data *md = map->gc->proto_data; |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
313 | char buf[MSN_BUF_LEN]; |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
314 | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
315 | g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, map->user, url_encode(map->friend)); |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
316 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
317 | hide_login_progress(map->gc, _("Write error")); |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
318 | signoff(map->gc); |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
319 | return; |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
320 | } |
| 4491 | 321 | gaim_privacy_deny_add(map->gc->account, map->user); |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
322 | build_block_list(); |
| 3118 | 323 | } |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
324 | |
| 2086 | 325 | g_free(map->user); |
| 326 | g_free(map->friend); | |
| 327 | g_free(map); | |
| 328 | } | |
| 329 | ||
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
330 | static int msn_process_main(struct gaim_connection *gc, char *buf) |
| 2086 | 331 | { |
| 332 | struct msn_data *md = gc->proto_data; | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
333 | char sendbuf[MSN_BUF_LEN]; |
| 2086 | 334 | |
| 335 | if (!g_strncasecmp(buf, "ADD", 3)) { | |
| 336 | char *list, *user, *friend, *tmp = buf; | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
337 | struct msn_add_permit *ap; |
| 4491 | 338 | GSList *perm = gc->account->permit; |
| 2086 | 339 | char msg[MSN_BUF_LEN]; |
| 340 | ||
| 341 | GET_NEXT(tmp); | |
| 342 | GET_NEXT(tmp); | |
| 343 | list = tmp; | |
| 344 | ||
| 345 | GET_NEXT(tmp); | |
| 346 | GET_NEXT(tmp); | |
| 347 | user = tmp; | |
| 348 | ||
| 349 | GET_NEXT(tmp); | |
|
3323
3358bfc36dd3
[gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
3322
diff
changeset
|
350 | friend = url_decode(tmp); |
| 2086 | 351 | |
| 352 | if (g_strcasecmp(list, "RL")) | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
353 | return 1; |
| 2086 | 354 | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
355 | while (perm) { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
356 | if (!g_strcasecmp(perm->data, user)) |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
357 | return 1; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
358 | perm = perm->next; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
359 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
360 | |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
361 | ap = g_new0(struct msn_add_permit, 1); |
| 2086 | 362 | ap->user = g_strdup(user); |
| 3642 | 363 | ap->friend = g_strdup(friend); |
| 2086 | 364 | ap->gc = gc; |
| 365 | ||
| 3299 | 366 | g_snprintf(msg, sizeof(msg), _("The user %s (%s) wants to add %s to his or her buddy list."), |
|
3323
3358bfc36dd3
[gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
3322
diff
changeset
|
367 | ap->user, ap->friend, ap->gc->username); |
| 2086 | 368 | |
| 4687 | 369 | // do_ask_dialog(msg, NULL, ap, _("Authorize"), msn_accept_add, _("Deny"), msn_cancel_add, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE); |
| 2086 | 370 | } else if (!g_strncasecmp(buf, "BLP", 3)) { |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
371 | char *type, *tmp = buf; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
372 | |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
373 | GET_NEXT(tmp); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
374 | GET_NEXT(tmp); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
375 | GET_NEXT(tmp); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
376 | type = tmp; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
377 | |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
378 | if (!g_strcasecmp(type, "AL")) { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
379 | /* If the current setting is AL, messages |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
380 | * from users who are not in BL will be delivered |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
381 | * |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
382 | * In other words, deny some */ |
| 4491 | 383 | gc->account->permdeny = DENY_SOME; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
384 | } else { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
385 | /* If the current |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
386 | * setting is BL, only messages from people who are in the AL will be |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
387 | * delivered. |
| 4349 | 388 | * |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
389 | * In other words, permit some */ |
| 4491 | 390 | gc->account->permdeny = PERMIT_SOME; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
391 | } |
| 2086 | 392 | } else if (!g_strncasecmp(buf, "BPR", 3)) { |
| 393 | } else if (!g_strncasecmp(buf, "CHG", 3)) { | |
| 394 | } else if (!g_strncasecmp(buf, "CHL", 3)) { | |
| 395 | char *hash = buf; | |
| 396 | char buf2[MSN_BUF_LEN]; | |
| 397 | md5_state_t st; | |
| 398 | md5_byte_t di[16]; | |
| 399 | int i; | |
| 400 | ||
| 401 | GET_NEXT(hash); | |
| 402 | GET_NEXT(hash); | |
| 403 | ||
| 404 | md5_init(&st); | |
| 405 | md5_append(&st, (const md5_byte_t *)hash, strlen(hash)); | |
| 406 | md5_append(&st, (const md5_byte_t *)"Q1P7W2E4J9R8U3S5", strlen("Q1P7W2E4J9R8U3S5")); | |
| 407 | md5_finish(&st, di); | |
| 408 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
409 | g_snprintf(sendbuf, sizeof(sendbuf), "QRY %u msmsgs@msnmsgr.com 32\r\n", ++md->trId); |
| 2086 | 410 | for (i = 0; i < 16; i++) { |
| 411 | g_snprintf(buf2, sizeof(buf2), "%02x", di[i]); | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
412 | strcat(sendbuf, buf2); |
| 2086 | 413 | } |
| 414 | ||
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
415 | if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
416 | hide_login_progress(gc, _("Unable to write to server")); |
| 2086 | 417 | signoff(gc); |
| 418 | } | |
| 419 | ||
| 420 | debug_printf("\n"); | |
| 421 | } else if (!g_strncasecmp(buf, "FLN", 3)) { | |
| 422 | char *usr = buf; | |
| 423 | ||
| 424 | GET_NEXT(usr); | |
| 425 | serv_got_update(gc, usr, 0, 0, 0, 0, 0, 0); | |
| 426 | } else if (!g_strncasecmp(buf, "GTC", 3)) { | |
| 427 | } else if (!g_strncasecmp(buf, "INF", 3)) { | |
| 428 | } else if (!g_strncasecmp(buf, "ILN", 3)) { | |
|
2607
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
429 | char *state, *user, *friend, *tmp = buf; |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
430 | int status = 0; |
| 2086 | 431 | |
| 432 | GET_NEXT(tmp); | |
| 433 | ||
| 434 | GET_NEXT(tmp); | |
| 435 | state = tmp; | |
| 436 | ||
| 437 | GET_NEXT(tmp); | |
| 438 | user = tmp; | |
| 439 | ||
| 440 | GET_NEXT(tmp); | |
|
2607
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
441 | friend = url_decode(tmp); |
|
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
442 | |
| 4227 | 443 | serv_got_alias(gc, user, friend); |
| 2086 | 444 | |
| 445 | if (!g_strcasecmp(state, "BSY")) { | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
446 | status |= UC_UNAVAILABLE | (MSN_BUSY << 1); |
| 2086 | 447 | } else if (!g_strcasecmp(state, "IDL")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
448 | status |= UC_UNAVAILABLE | (MSN_IDLE << 1); |
| 2086 | 449 | } else if (!g_strcasecmp(state, "BRB")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
450 | status |= UC_UNAVAILABLE | (MSN_BRB << 1); |
| 2086 | 451 | } else if (!g_strcasecmp(state, "AWY")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
452 | status |= UC_UNAVAILABLE | (MSN_AWAY << 1); |
| 2086 | 453 | } else if (!g_strcasecmp(state, "PHN")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
454 | status |= UC_UNAVAILABLE | (MSN_PHONE << 1); |
| 2086 | 455 | } else if (!g_strcasecmp(state, "LUN")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
456 | status |= UC_UNAVAILABLE | (MSN_LUNCH << 1); |
| 2086 | 457 | } |
| 458 | ||
| 459 | serv_got_update(gc, user, 1, 0, 0, 0, status, 0); | |
| 460 | } else if (!g_strncasecmp(buf, "LST", 3)) { | |
| 461 | char *which, *who, *friend, *tmp = buf; | |
| 3012 | 462 | struct msn_add_permit *ap; /* for any as yet undealt with buddies who've added you to their buddy list when you were off-line. How dare they! */ |
| 4491 | 463 | GSList *perm = gc->account->permit; /* current permit list */ |
| 464 | GSList *denyl = gc->account->deny; | |
| 3012 | 465 | char msg[MSN_BUF_LEN]; |
| 466 | int new = 1; | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
467 | int pos, tot; |
| 2086 | 468 | |
| 469 | GET_NEXT(tmp); | |
| 470 | GET_NEXT(tmp); | |
| 471 | which = tmp; | |
| 472 | ||
| 473 | GET_NEXT(tmp); | |
| 474 | GET_NEXT(tmp); | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
475 | pos = strtol(tmp, NULL, 10); |
| 2086 | 476 | GET_NEXT(tmp); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
477 | tot = strtol(tmp, NULL, 10); |
| 2086 | 478 | GET_NEXT(tmp); |
| 479 | who = tmp; | |
| 480 | ||
| 481 | GET_NEXT(tmp); | |
| 482 | friend = url_decode(tmp); | |
| 483 | ||
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
484 | if (!g_strcasecmp(which, "FL") && pos) { |
| 2086 | 485 | struct msn_buddy *b = g_new0(struct msn_buddy, 1); |
| 486 | b->user = g_strdup(who); | |
| 3642 | 487 | b->friend = g_strdup(friend); |
| 2086 | 488 | md->fl = g_slist_append(md->fl, b); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
489 | } else if (!g_strcasecmp(which, "AL") && pos) { |
| 4491 | 490 | if (g_slist_find_custom(gc->account->deny, who, |
| 4349 | 491 | (GCompareFunc)strcmp)) { |
| 3294 | 492 | debug_printf("moving from deny to permit: %s", who); |
| 4491 | 493 | gaim_privacy_deny_remove(gc->account, who); |
| 3294 | 494 | } |
| 4491 | 495 | gaim_privacy_permit_add(gc->account, who); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
496 | } else if (!g_strcasecmp(which, "BL") && pos) { |
| 4491 | 497 | gaim_privacy_deny_add(gc->account, who); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
498 | } else if (!g_strcasecmp(which, "RL")) { |
| 3121 | 499 | if (pos) { |
| 3012 | 500 | while(perm) { |
| 501 | if(!g_strcasecmp(perm->data, who)) | |
| 502 | new = 0; | |
| 503 | perm = perm->next; | |
| 504 | } | |
| 3018 | 505 | while(denyl) { |
| 506 | if(!g_strcasecmp(denyl->data, who)) | |
| 507 | new = 0; | |
| 508 | denyl = denyl->next; | |
| 509 | } | |
| 3012 | 510 | if(new) { |
| 3013 | 511 | debug_printf("Unresolved MSN RL entry\n"); |
| 3012 | 512 | ap = g_new0(struct msn_add_permit, 1); |
| 513 | ap->user = g_strdup(who); | |
| 3642 | 514 | ap->friend = g_strdup(friend); |
| 3012 | 515 | ap->gc = gc; |
| 516 | ||
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
517 | g_snprintf(msg, sizeof(msg), _("The user %s (%s) wants to add you to their buddy list"),ap->user, ap->friend); |
|
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
518 | do_ask_dialog(msg, NULL, ap, _("Authorize"), msn_accept_add, _("Deny"), msn_cancel_add, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE); |
| 3012 | 519 | } |
| 3121 | 520 | } |
| 3012 | 521 | |
| 522 | if (pos != tot) | |
| 523 | return 1; /* this isn't the last one in the RL, so return. */ | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
524 | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
525 | g_snprintf(sendbuf, sizeof(sendbuf), "CHG %u NLN\r\n", ++md->trId); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
526 | if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
527 | hide_login_progress(gc, _("Unable to write")); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
528 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
529 | return 0; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
530 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
531 | |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
532 | account_online(gc); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
533 | serv_finish_login(gc); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
534 | |
| 4491 | 535 | md->permit = g_slist_copy(gc->account->permit); |
| 536 | md->deny = g_slist_copy(gc->account->deny); | |
| 4349 | 537 | |
| 2086 | 538 | while (md->fl) { |
| 539 | struct msn_buddy *mb = md->fl->data; | |
| 4687 | 540 | struct buddy *b = gaim_find_buddy(gc->account, mb->user); |
| 2086 | 541 | md->fl = g_slist_remove(md->fl, mb); |
| 4687 | 542 | if(!b) { |
| 543 | struct group *g; | |
| 544 | printf("I'm adding %s now..\n", mb->user); | |
| 545 | if (!(g = gaim_find_group(_("Buddies")))) { | |
| 546 | printf("How could I not exitst!??!\n"); | |
| 547 | g = gaim_group_new(_("Buddies")); | |
| 548 | gaim_blist_add_group(g, NULL); | |
| 549 | } | |
| 550 | b = gaim_buddy_new(gc->account, mb->user, NULL); | |
| 551 | gaim_blist_add_buddy(b,g,NULL); | |
| 552 | } | |
| 4227 | 553 | serv_got_alias(gc, mb->user, mb->friend); |
| 2086 | 554 | g_free(mb->user); |
| 555 | g_free(mb->friend); | |
| 556 | g_free(mb); | |
| 557 | } | |
| 558 | } | |
| 559 | } else if (!g_strncasecmp(buf, "MSG", 3)) { | |
| 560 | char *user, *tmp = buf; | |
| 561 | int length; | |
| 562 | ||
| 563 | GET_NEXT(tmp); | |
| 564 | user = tmp; | |
| 565 | ||
| 566 | GET_NEXT(tmp); | |
| 567 | ||
| 568 | GET_NEXT(tmp); | |
| 569 | length = atoi(tmp); | |
| 570 | ||
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
571 | md->msg = TRUE; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
572 | md->msguser = g_strdup(user); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
573 | md->msglen = length; |
| 2086 | 574 | } else if (!g_strncasecmp(buf, "NLN", 3)) { |
|
2607
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
575 | char *state, *user, *friend, *tmp = buf; |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
576 | int status = 0; |
| 2086 | 577 | |
| 578 | GET_NEXT(tmp); | |
| 579 | state = tmp; | |
| 580 | ||
| 581 | GET_NEXT(tmp); | |
| 582 | user = tmp; | |
| 583 | ||
| 584 | GET_NEXT(tmp); | |
|
2607
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
585 | friend = url_decode(tmp); |
|
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
586 | |
| 4227 | 587 | serv_got_alias(gc, user, friend); |
| 2086 | 588 | |
| 589 | if (!g_strcasecmp(state, "BSY")) { | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
590 | status |= UC_UNAVAILABLE | (MSN_BUSY << 1); |
| 2086 | 591 | } else if (!g_strcasecmp(state, "IDL")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
592 | status |= UC_UNAVAILABLE | (MSN_IDLE << 1); |
| 2086 | 593 | } else if (!g_strcasecmp(state, "BRB")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
594 | status |= UC_UNAVAILABLE | (MSN_BRB << 1); |
| 2086 | 595 | } else if (!g_strcasecmp(state, "AWY")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
596 | status |= UC_UNAVAILABLE | (MSN_AWAY << 1); |
| 2086 | 597 | } else if (!g_strcasecmp(state, "PHN")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
598 | status |= UC_UNAVAILABLE | (MSN_PHONE << 1); |
| 2086 | 599 | } else if (!g_strcasecmp(state, "LUN")) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
600 | status |= UC_UNAVAILABLE | (MSN_LUNCH << 1); |
| 2086 | 601 | } |
| 602 | ||
| 603 | serv_got_update(gc, user, 1, 0, 0, 0, status, 0); | |
| 604 | } else if (!g_strncasecmp(buf, "OUT", 3)) { | |
| 2887 | 605 | char *tmp = buf; |
| 606 | ||
| 607 | GET_NEXT(tmp); | |
| 608 | if (!g_strncasecmp(tmp, "OTH", 3)) { | |
|
2889
9cf00c3b75f6
[gaim-migrate @ 2902]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2888
diff
changeset
|
609 | hide_login_progress(gc, _("You have been disconnected. You have " |
|
9cf00c3b75f6
[gaim-migrate @ 2902]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2888
diff
changeset
|
610 | "signed on from another location.")); |
|
9cf00c3b75f6
[gaim-migrate @ 2902]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2888
diff
changeset
|
611 | signoff(gc); |
|
9cf00c3b75f6
[gaim-migrate @ 2902]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2888
diff
changeset
|
612 | return 0; |
| 2887 | 613 | } |
| 2086 | 614 | } else if (!g_strncasecmp(buf, "PRP", 3)) { |
|
2541
0afd3aaba327
[gaim-migrate @ 2554]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
615 | } else if (!g_strncasecmp(buf, "QNG", 3)) { |
| 2086 | 616 | } else if (!g_strncasecmp(buf, "QRY", 3)) { |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
617 | } else if (!g_strncasecmp(buf, "REA", 3)) { |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
618 | char *friend, *tmp = buf; |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
619 | |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
620 | GET_NEXT(tmp); |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
621 | GET_NEXT(tmp); |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
622 | GET_NEXT(tmp); |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
623 | GET_NEXT(tmp); |
| 3456 | 624 | |
| 625 | friend = url_decode(tmp); | |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
626 | |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
627 | g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend); |
| 2086 | 628 | } else if (!g_strncasecmp(buf, "REM", 3)) { |
| 629 | } else if (!g_strncasecmp(buf, "RNG", 3)) { | |
| 630 | struct msn_switchboard *ms; | |
| 631 | char *sessid, *ssaddr, *auth, *user; | |
| 632 | int port, i = 0; | |
| 633 | char *tmp = buf; | |
| 634 | ||
| 635 | GET_NEXT(tmp); | |
| 636 | sessid = tmp; | |
| 637 | ||
| 638 | GET_NEXT(tmp); | |
| 639 | ssaddr = tmp; | |
| 640 | ||
| 641 | GET_NEXT(tmp); | |
| 642 | ||
| 643 | GET_NEXT(tmp); | |
| 644 | auth = tmp; | |
| 645 | ||
| 646 | GET_NEXT(tmp); | |
| 647 | user = tmp; | |
| 648 | GET_NEXT(tmp); | |
| 649 | ||
| 650 | while (ssaddr[i] && ssaddr[i] != ':') i++; | |
| 651 | if (ssaddr[i] == ':') { | |
| 652 | char *x = &ssaddr[i + 1]; | |
| 653 | ssaddr[i] = 0; | |
| 654 | port = atoi(x); | |
| 655 | } else | |
| 656 | port = 1863; | |
| 657 | ||
| 658 | ms = g_new0(struct msn_switchboard, 1); | |
| 4634 | 659 | if (proxy_connect(gc->account, ssaddr, port, msn_rng_connect, ms) != 0) { |
|
2688
f1f8c4ff8794
[gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
660 | g_free(ms); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
661 | return 1; |
|
2688
f1f8c4ff8794
[gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
662 | } |
| 2086 | 663 | ms->user = g_strdup(user); |
| 664 | ms->sessid = g_strdup(sessid); | |
| 665 | ms->auth = g_strdup(auth); | |
| 666 | ms->gc = gc; | |
| 3171 | 667 | } else if (!g_strncasecmp(buf, "URL", 3)) { |
| 668 | char *tmp = buf; | |
| 669 | FILE *fd; | |
| 670 | md5_state_t st; | |
| 671 | md5_byte_t di[16]; | |
| 672 | int i; | |
| 673 | char buf2[64]; | |
| 674 | char sendbuf[64]; | |
| 675 | char hippy[2048]; | |
| 676 | char *rru; | |
| 677 | char *passport; | |
| 678 | ||
| 679 | GET_NEXT(tmp); | |
| 680 | GET_NEXT(tmp); | |
| 681 | rru = tmp; | |
| 682 | GET_NEXT(tmp); | |
| 683 | passport = tmp; | |
| 684 | ||
| 3630 | 685 | g_snprintf(hippy, sizeof(hippy), "%s%lu%s", md->mspauth, time(NULL) - md->sl, gc->password); |
| 3171 | 686 | |
| 687 | md5_init(&st); | |
| 688 | md5_append(&st, (const md5_byte_t *)hippy, strlen(hippy)); | |
| 689 | md5_finish(&st, di); | |
| 690 | ||
| 691 | bzero(sendbuf, sizeof(sendbuf)); | |
| 692 | for (i = 0; i < 16; i++) { | |
| 693 | g_snprintf(buf2, sizeof(buf2), "%02x", di[i]); | |
| 694 | strcat(sendbuf, buf2); | |
| 695 | } | |
| 696 | ||
| 3195 | 697 | if (md->passport) { |
| 698 | unlink(md->passport); | |
|
3231
340891659275
[gaim-migrate @ 3248]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3200
diff
changeset
|
699 | g_free(md->passport); |
| 3195 | 700 | } |
| 3171 | 701 | |
| 3630 | 702 | if( (fd = gaim_mkstemp(&(md->passport))) == NULL ) { |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
703 | debug_printf("Error opening temp file: %s\n", strerror(errno)); |
| 3630 | 704 | } |
| 705 | else { | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
706 | fputs("<html>\n" |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
707 | "<head>\n" |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
708 | "<noscript>\n" |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
709 | "<meta http-equiv=Refresh content=\"0; url=http://www.hotmail.com\">\n" |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
710 | "</noscript>\n" |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
711 | "</head>\n\n", fd); |
| 3171 | 712 | |
| 3630 | 713 | fprintf(fd, "<body onload=\"document.pform.submit(); \">\n"); |
| 714 | fprintf(fd, "<form name=\"pform\" action=\"%s\" method=\"POST\">\n\n", passport); | |
| 715 | fprintf(fd, "<input type=\"hidden\" name=\"mode\" value=\"ttl\">\n"); | |
| 716 | fprintf(fd, "<input type=\"hidden\" name=\"login\" value=\"%s\">\n", gc->username); | |
| 717 | fprintf(fd, "<input type=\"hidden\" name=\"username\" value=\"%s\">\n", gc->username); | |
| 718 | fprintf(fd, "<input type=\"hidden\" name=\"sid\" value=\"%s\">\n", md->sid); | |
| 719 | fprintf(fd, "<input type=\"hidden\" name=\"kv\" value=\"%s\">\n", md->kv); | |
| 720 | fprintf(fd, "<input type=\"hidden\" name=\"id\" value=\"2\">\n"); | |
| 721 | fprintf(fd, "<input type=\"hidden\" name=\"sl\" value=\"%ld\">\n", time(NULL) - md->sl); | |
| 722 | fprintf(fd, "<input type=\"hidden\" name=\"rru\" value=\"%s\">\n", rru); | |
| 723 | fprintf(fd, "<input type=\"hidden\" name=\"auth\" value=\"%s\">\n", md->mspauth); | |
| 724 | fprintf(fd, "<input type=\"hidden\" name=\"creds\" value=\"%s\">\n", sendbuf); // Digest me | |
| 725 | fprintf(fd, "<input type=\"hidden\" name=\"svc\" value=\"mail\">\n"); | |
| 726 | fprintf(fd, "<input type=\"hidden\" name=\"js\" value=\"yes\">\n"); | |
| 727 | fprintf(fd, "</form></body>\n"); | |
| 728 | fprintf(fd, "</html>\n"); | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
729 | if (fclose(fd)) { |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
730 | debug_printf("Error closing temp file: %s\n", strerror(errno)); |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
731 | unlink(md->passport); |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
732 | g_free(md->passport); |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
733 | } |
|
4462
ece020c7c136
[gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents:
4460
diff
changeset
|
734 | else { |
|
4464
b240c46d11fd
[gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents:
4463
diff
changeset
|
735 | /* |
|
b240c46d11fd
[gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents:
4463
diff
changeset
|
736 | * Renaming file with .html extension, so that |
|
b240c46d11fd
[gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents:
4463
diff
changeset
|
737 | * win32 open_url will work. |
|
b240c46d11fd
[gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents:
4463
diff
changeset
|
738 | */ |
|
b240c46d11fd
[gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents:
4463
diff
changeset
|
739 | char *tmp; |
|
b240c46d11fd
[gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents:
4463
diff
changeset
|
740 | if ((tmp = g_strdup_printf("%s.html", md->passport)) != NULL) { |
|
b240c46d11fd
[gaim-migrate @ 4739]
Christian Hammond <chipx86@chipx86.com>
parents:
4463
diff
changeset
|
741 | if (rename(md->passport, tmp) == 0) { |
|
4462
ece020c7c136
[gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents:
4460
diff
changeset
|
742 | g_free(md->passport); |
|
ece020c7c136
[gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents:
4460
diff
changeset
|
743 | md->passport = tmp; |
|
ece020c7c136
[gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents:
4460
diff
changeset
|
744 | } else |
|
ece020c7c136
[gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents:
4460
diff
changeset
|
745 | g_free(tmp); |
|
ece020c7c136
[gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents:
4460
diff
changeset
|
746 | } |
|
ece020c7c136
[gaim-migrate @ 4737]
Herman Bloggs <herman@bluedigits.com>
parents:
4460
diff
changeset
|
747 | } |
| 3630 | 748 | } |
| 2086 | 749 | } else if (!g_strncasecmp(buf, "SYN", 3)) { |
| 750 | } else if (!g_strncasecmp(buf, "USR", 3)) { | |
| 751 | } else if (!g_strncasecmp(buf, "XFR", 3)) { | |
| 752 | char *host = strstr(buf, "SB"); | |
| 753 | int port; | |
| 754 | int i = 0; | |
| 755 | gboolean switchboard = TRUE; | |
| 756 | char *tmp; | |
| 757 | ||
| 758 | if (!host) { | |
| 759 | host = strstr(buf, "NS"); | |
| 760 | if (!host) { | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
761 | hide_login_progress(gc, _("Got invalid XFR\n")); |
| 2086 | 762 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
763 | return 0; |
| 2086 | 764 | } |
| 765 | switchboard = FALSE; | |
| 766 | } | |
| 767 | ||
| 768 | GET_NEXT(host); | |
| 769 | while (host[i] && host[i] != ':') i++; | |
| 770 | if (host[i] == ':') { | |
| 771 | tmp = &host[i + 1]; | |
| 772 | host[i] = 0; | |
| 773 | while (isdigit(*tmp)) tmp++; | |
| 774 | *tmp++ = 0; | |
| 775 | port = atoi(&host[i + 1]); | |
| 776 | } else { | |
| 777 | port = 1863; | |
| 778 | tmp = host; | |
| 779 | GET_NEXT(tmp); | |
| 780 | } | |
| 781 | ||
| 782 | if (switchboard) { | |
|
4542
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
783 | struct msn_switchboard *ms; |
| 2086 | 784 | |
| 785 | GET_NEXT(tmp); | |
| 786 | ||
|
4542
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
787 | ms = msn_switchboard_connect(gc, host, port); |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
788 | |
|
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
789 | if (ms == NULL) |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
790 | return 1; |
|
4542
05a476dec582
[gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
4508
diff
changeset
|
791 | |
| 2086 | 792 | ms->auth = g_strdup(tmp); |
| 793 | } else { | |
| 794 | close(md->fd); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
795 | gaim_input_remove(md->inpa); |
| 2086 | 796 | md->inpa = 0; |
| 4634 | 797 | if (proxy_connect(gc->account, host, port, msn_login_xfr_connect, gc) != 0) { |
| 4599 | 798 | hide_login_progress(gc, _("Error transferring")); |
|
2688
f1f8c4ff8794
[gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
799 | signoff(gc); |
|
2740
66eddefd4632
[gaim-migrate @ 2753]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2739
diff
changeset
|
800 | return 0; |
|
2688
f1f8c4ff8794
[gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
801 | } |
| 2086 | 802 | } |
| 803 | } else if (isdigit(*buf)) { | |
| 804 | handle_errcode(buf, TRUE); | |
| 805 | } else { | |
| 806 | debug_printf("Unhandled message!\n"); | |
| 807 | } | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
808 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
809 | return 1; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
810 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
811 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
812 | static void msn_process_main_msg(struct gaim_connection *gc, char *msg) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
813 | { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
814 | struct msn_data *md = gc->proto_data; |
| 3642 | 815 | char *skiphead; |
| 3171 | 816 | char *content; |
| 817 | ||
| 818 | content = strstr(msg, "Content-Type: "); | |
| 819 | ||
| 820 | if ((content) && (!g_strncasecmp(content, "Content-Type: text/x-msmsgsprofile", | |
| 821 | strlen("Content-Type: text/x-msmsgsprofile")))) { | |
| 822 | ||
| 823 | char *kv,*sid,*mspauth; | |
| 824 | ||
| 825 | kv = strstr(msg, "kv: "); | |
| 826 | sid = strstr(msg, "sid: "); | |
| 827 | mspauth = strstr(msg, "MSPAuth: "); | |
| 828 | ||
| 829 | if (kv) { | |
| 830 | char *tmp; | |
| 831 | ||
| 832 | kv += strlen("kv: "); | |
| 833 | tmp = strstr(kv, "\r\n"); *tmp = 0; | |
| 834 | md->kv = g_strdup(kv); | |
| 835 | } | |
| 836 | ||
| 837 | if (sid) { | |
| 838 | char *tmp; | |
| 839 | ||
| 840 | sid += strlen("sid: "); | |
| 841 | tmp = strstr(sid, "\r\n"); *tmp = 0; | |
| 842 | md->sid = g_strdup(sid); | |
| 843 | } | |
| 844 | ||
| 845 | if (mspauth) { | |
| 846 | char *tmp; | |
| 847 | ||
| 848 | mspauth += strlen("MSPAuth: "); | |
| 849 | tmp = strstr(mspauth, "\r\n"); *tmp = 0; | |
| 850 | md->mspauth = g_strdup(mspauth); | |
| 851 | } | |
| 852 | ||
| 853 | } | |
| 854 | ||
| 855 | ||
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
856 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
857 | if (!g_strcasecmp(md->msguser, "hotmail")) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
858 | handle_hotmail(gc, msg); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
859 | return; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
860 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
861 | |
| 3171 | 862 | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
863 | skiphead = strstr(msg, "\r\n\r\n"); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
864 | if (!skiphead || !skiphead[4]) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
865 | return; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
866 | skiphead += 4; |
| 3642 | 867 | strip_linefeed(skiphead); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
868 | |
| 3642 | 869 | serv_got_im(gc, md->msguser, skiphead, 0, time(NULL), -1); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
870 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
871 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
872 | static void msn_callback(gpointer data, gint source, GaimInputCondition cond) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
873 | { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
874 | struct gaim_connection *gc = data; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
875 | struct msn_data *md = gc->proto_data; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
876 | char buf[MSN_BUF_LEN]; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
877 | int cont = 1; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
878 | int len; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
879 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
880 | len = read(md->fd, buf, sizeof(buf)); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
881 | if (len <= 0) { |
| 3263 | 882 | hide_login_progress_error(gc, _("Error reading from server")); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
883 | signoff(gc); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
884 | return; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
885 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
886 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
887 | md->rxqueue = g_realloc(md->rxqueue, len + md->rxlen); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
888 | memcpy(md->rxqueue + md->rxlen, buf, len); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
889 | md->rxlen += len; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
890 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
891 | while (cont) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
892 | if (!md->rxlen) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
893 | return; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
894 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
895 | if (md->msg) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
896 | char *msg; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
897 | if (md->msglen > md->rxlen) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
898 | return; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
899 | msg = md->rxqueue; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
900 | md->rxlen -= md->msglen; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
901 | if (md->rxlen) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
902 | md->rxqueue = g_memdup(msg + md->msglen, md->rxlen); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
903 | } else { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
904 | md->rxqueue = NULL; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
905 | msg = g_realloc(msg, md->msglen + 1); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
906 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
907 | msg[md->msglen] = 0; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
908 | md->msglen = 0; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
909 | md->msg = FALSE; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
910 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
911 | msn_process_main_msg(gc, msg); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
912 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
913 | g_free(md->msguser); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
914 | g_free(msg); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
915 | } else { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
916 | char *end = md->rxqueue; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
917 | int cmdlen; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
918 | char *cmd; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
919 | int i = 0; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
920 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
921 | while (i + 1 < md->rxlen) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
922 | if (*end == '\r' && end[1] == '\n') |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
923 | break; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
924 | end++; i++; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
925 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
926 | if (i + 1 == md->rxlen) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
927 | return; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
928 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
929 | cmdlen = end - md->rxqueue + 2; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
930 | cmd = md->rxqueue; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
931 | md->rxlen -= cmdlen; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
932 | if (md->rxlen) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
933 | md->rxqueue = g_memdup(cmd + cmdlen, md->rxlen); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
934 | } else { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
935 | md->rxqueue = NULL; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
936 | cmd = g_realloc(cmd, cmdlen + 1); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
937 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
938 | cmd[cmdlen] = 0; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
939 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
940 | debug_printf("MSN S: %s", cmd); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
941 | g_strchomp(cmd); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
942 | cont = msn_process_main(gc, cmd); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
943 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
944 | g_free(cmd); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
945 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
946 | } |
| 2086 | 947 | } |
| 948 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
949 | static void msn_login_xfr_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 950 | { |
| 951 | struct gaim_connection *gc = data; | |
| 952 | struct msn_data *md; | |
| 953 | char buf[MSN_BUF_LEN]; | |
| 954 | ||
|
2210
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
955 | if (!g_slist_find(connections, gc)) { |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
956 | close(source); |
| 2086 | 957 | return; |
|
2210
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
958 | } |
| 2086 | 959 | |
| 960 | md = gc->proto_data; | |
| 961 | ||
| 962 | if (md->fd != source) | |
| 963 | md->fd = source; | |
| 964 | ||
| 965 | if (md->fd == -1) { | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
966 | hide_login_progress(gc, _("Unable to connect to Notification Server")); |
| 2086 | 967 | signoff(gc); |
| 968 | return; | |
| 969 | } | |
| 970 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
971 | g_snprintf(buf, sizeof(buf), "VER %u MSNP5\r\n", ++md->trId); |
| 2086 | 972 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
973 | hide_login_progress(gc, _("Unable to talk to Notification Server")); |
| 2086 | 974 | signoff(gc); |
| 975 | return; | |
| 976 | } | |
| 977 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
978 | md->inpa = gaim_input_add(md->fd, GAIM_INPUT_READ, msn_login_callback, gc); |
| 2086 | 979 | } |
| 980 | ||
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
981 | static int msn_process_login(struct gaim_connection *gc, char *buf) |
| 2086 | 982 | { |
| 983 | struct msn_data *md = gc->proto_data; | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
984 | char sendbuf[MSN_BUF_LEN]; |
| 2086 | 985 | |
| 986 | if (!g_strncasecmp(buf, "VER", 3)) { | |
|
2226
33ae7ffa5144
[gaim-migrate @ 2236]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2219
diff
changeset
|
987 | /* we got VER, check to see that MSNP5 is in the list, then send INF */ |
|
33ae7ffa5144
[gaim-migrate @ 2236]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2219
diff
changeset
|
988 | if (!strstr(buf, "MSNP5")) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
989 | hide_login_progress(gc, _("Protocol not supported")); |
| 2086 | 990 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
991 | return 0; |
| 2086 | 992 | } |
| 993 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
994 | g_snprintf(sendbuf, sizeof(sendbuf), "INF %u\r\n", ++md->trId); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
995 | if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
996 | hide_login_progress(gc, _("Unable to request INF\n")); |
| 2086 | 997 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
998 | return 0; |
| 2086 | 999 | } |
| 1000 | } else if (!g_strncasecmp(buf, "INF", 3)) { | |
| 1001 | /* check to make sure we can use md5 */ | |
| 1002 | if (!strstr(buf, "MD5")) { | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1003 | hide_login_progress(gc, _("Unable to login using MD5")); |
| 2086 | 1004 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1005 | return 0; |
| 2086 | 1006 | } |
| 1007 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1008 | g_snprintf(sendbuf, sizeof(sendbuf), "USR %u MD5 I %s\r\n", ++md->trId, gc->username); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1009 | if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1010 | hide_login_progress(gc, _("Unable to send USR\n")); |
| 2086 | 1011 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1012 | return 0; |
| 2086 | 1013 | } |
| 1014 | ||
| 3263 | 1015 | set_login_progress(gc, 3, _("Requesting to send password")); |
| 2086 | 1016 | } else if (!g_strncasecmp(buf, "USR", 3)) { |
|
2210
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1017 | char *resp, *friend, *tmp = buf; |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1018 | |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1019 | GET_NEXT(tmp); |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1020 | GET_NEXT(tmp); |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1021 | resp = tmp; |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1022 | GET_NEXT(tmp); |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1023 | GET_NEXT(tmp); |
|
3323
3358bfc36dd3
[gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
3322
diff
changeset
|
1024 | friend = url_decode(tmp); |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1025 | GET_NEXT(tmp); |
|
2210
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1026 | |
| 2086 | 1027 | /* so here, we're either getting the challenge or the OK */ |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1028 | if (!g_strcasecmp(resp, "OK")) { |
|
2210
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1029 | g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend); |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1030 | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1031 | g_snprintf(sendbuf, sizeof(sendbuf), "SYN %u 0\r\n", ++md->trId); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1032 | if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1033 | hide_login_progress(gc, _("Unable to write")); |
| 2086 | 1034 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1035 | return 0; |
| 2086 | 1036 | } |
| 1037 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1038 | gaim_input_remove(md->inpa); |
|
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1039 | md->inpa = gaim_input_add(md->fd, GAIM_INPUT_READ, msn_callback, gc); |
|
2739
7300588a3544
[gaim-migrate @ 2752]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2738
diff
changeset
|
1040 | return 0; |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1041 | } else if (!g_strcasecmp(resp, "MD5")) { |
| 2086 | 1042 | char buf2[MSN_BUF_LEN]; |
| 1043 | md5_state_t st; | |
| 1044 | md5_byte_t di[16]; | |
| 1045 | int i; | |
| 1046 | ||
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1047 | g_snprintf(buf2, sizeof(buf2), "%s%s", friend, gc->password); |
| 2086 | 1048 | |
| 1049 | md5_init(&st); | |
| 1050 | md5_append(&st, (const md5_byte_t *)buf2, strlen(buf2)); | |
| 1051 | md5_finish(&st, di); | |
| 1052 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1053 | g_snprintf(sendbuf, sizeof(sendbuf), "USR %u MD5 S ", ++md->trId); |
| 2086 | 1054 | for (i = 0; i < 16; i++) { |
| 1055 | g_snprintf(buf2, sizeof(buf2), "%02x", di[i]); | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1056 | strcat(sendbuf, buf2); |
| 2086 | 1057 | } |
| 3321 | 1058 | strcat(sendbuf, "\r\n"); |
| 2086 | 1059 | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1060 | if (msn_write(md->fd, sendbuf, strlen(sendbuf)) < 0) { |
| 3263 | 1061 | hide_login_progress(gc, _("Unable to send password")); |
| 2086 | 1062 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1063 | return 0; |
| 2086 | 1064 | } |
| 1065 | ||
| 3263 | 1066 | set_login_progress(gc, 4, _("Password sent")); |
| 2086 | 1067 | } |
| 1068 | } else if (!g_strncasecmp(buf, "XFR", 3)) { | |
| 1069 | char *host = strstr(buf, "NS"); | |
| 1070 | int port; | |
| 1071 | int i = 0; | |
| 1072 | ||
| 1073 | if (!host) { | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1074 | hide_login_progress(gc, _("Got invalid XFR\n")); |
| 2086 | 1075 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1076 | return 0; |
| 2086 | 1077 | } |
| 1078 | ||
| 1079 | GET_NEXT(host); | |
| 1080 | while (host[i] && host[i] != ':') i++; | |
| 1081 | if (host[i] == ':') { | |
| 1082 | char *x = &host[i + 1]; | |
| 1083 | host[i] = 0; | |
| 1084 | port = atoi(x); | |
| 1085 | } else | |
| 1086 | port = 1863; | |
| 1087 | ||
| 1088 | close(md->fd); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1089 | gaim_input_remove(md->inpa); |
| 2086 | 1090 | md->inpa = 0; |
| 1091 | md->fd = 0; | |
| 3171 | 1092 | md->sl = time(NULL); |
| 4634 | 1093 | if (proxy_connect(gc->account, host, port, msn_login_xfr_connect, gc) != 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1094 | hide_login_progress(gc, _("Unable to transfer")); |
|
2688
f1f8c4ff8794
[gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
1095 | signoff(gc); |
|
f1f8c4ff8794
[gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
1096 | } |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1097 | return 0; |
| 2086 | 1098 | } else { |
| 1099 | if (isdigit(*buf)) | |
| 1100 | hide_login_progress(gc, handle_errcode(buf, FALSE)); | |
| 1101 | else | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1102 | hide_login_progress(gc, _("Unable to parse message")); |
| 2086 | 1103 | signoff(gc); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1104 | return 0; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1105 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1106 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1107 | return 1; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1108 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1109 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1110 | static void msn_login_callback(gpointer data, gint source, GaimInputCondition cond) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1111 | { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1112 | struct gaim_connection *gc = data; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1113 | struct msn_data *md = gc->proto_data; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1114 | char buf[MSN_BUF_LEN]; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1115 | int cont = 1; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1116 | int len; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1117 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1118 | len = read(md->fd, buf, sizeof(buf)); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1119 | if (len <= 0) { |
| 3263 | 1120 | hide_login_progress(gc, _("Error reading from server")); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1121 | signoff(gc); |
| 2086 | 1122 | return; |
| 1123 | } | |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1124 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1125 | md->rxqueue = g_realloc(md->rxqueue, len + md->rxlen); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1126 | memcpy(md->rxqueue + md->rxlen, buf, len); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1127 | md->rxlen += len; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1128 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1129 | while (cont) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1130 | char *end = md->rxqueue; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1131 | int cmdlen; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1132 | char *cmd; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1133 | int i = 0; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1134 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1135 | if (!md->rxlen) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1136 | return; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1137 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1138 | while (i + 1 < md->rxlen) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1139 | if (*end == '\r' && end[1] == '\n') |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1140 | break; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1141 | end++; i++; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1142 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1143 | if (i + 1 == md->rxlen) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1144 | return; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1145 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1146 | cmdlen = end - md->rxqueue + 2; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1147 | cmd = md->rxqueue; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1148 | md->rxlen -= cmdlen; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1149 | if (md->rxlen) { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1150 | md->rxqueue = g_memdup(cmd + cmdlen, md->rxlen); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1151 | } else { |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1152 | md->rxqueue = NULL; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1153 | cmd = g_realloc(cmd, cmdlen + 1); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1154 | } |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1155 | cmd[cmdlen] = 0; |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1156 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1157 | debug_printf("MSN S: %s", cmd); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1158 | g_strchomp(cmd); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1159 | cont = msn_process_login(gc, cmd); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1160 | |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1161 | g_free(cmd); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1162 | } |
| 2086 | 1163 | } |
| 1164 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1165 | static void msn_login_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 1166 | { |
| 1167 | struct gaim_connection *gc = data; | |
| 1168 | struct msn_data *md; | |
| 1169 | char buf[1024]; | |
| 1170 | ||
|
2210
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1171 | if (!g_slist_find(connections, gc)) { |
|
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1172 | close(source); |
| 2086 | 1173 | return; |
|
2210
37d4364497f5
[gaim-migrate @ 2220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
1174 | } |
| 2086 | 1175 | |
| 1176 | md = gc->proto_data; | |
| 1177 | ||
| 1178 | if (md->fd != source) | |
| 1179 | md->fd = source; | |
| 1180 | ||
| 1181 | if (md->fd == -1) { | |
| 3263 | 1182 | hide_login_progress(gc, _("Unable to connect")); |
| 2086 | 1183 | signoff(gc); |
| 1184 | return; | |
| 1185 | } | |
| 1186 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1187 | g_snprintf(buf, sizeof(buf), "VER %u MSNP5\r\n", ++md->trId); |
| 2086 | 1188 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
| 3263 | 1189 | hide_login_progress(gc, _("Unable to write to server")); |
| 2086 | 1190 | signoff(gc); |
| 1191 | return; | |
| 1192 | } | |
| 1193 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1194 | md->inpa = gaim_input_add(md->fd, GAIM_INPUT_READ, msn_login_callback, gc); |
| 3263 | 1195 | set_login_progress(gc, 2,_("Synching with server")); |
| 2086 | 1196 | } |
| 1197 | ||
| 4491 | 1198 | static void msn_login(struct gaim_account *account) |
| 2086 | 1199 | { |
| 4491 | 1200 | struct gaim_connection *gc = new_gaim_conn(account); |
| 4460 | 1201 | gc->proto_data = g_new0(struct msn_data, 1); |
| 2086 | 1202 | |
| 3263 | 1203 | set_login_progress(gc, 1, _("Connecting")); |
| 2086 | 1204 | |
| 1205 | g_snprintf(gc->username, sizeof(gc->username), "%s", msn_normalize(gc->username)); | |
| 4455 | 1206 | |
| 4634 | 1207 | if (proxy_connect(account, account->proto_opt[USEROPT_MSNSERVER][0] ? |
| 4491 | 1208 | account->proto_opt[USEROPT_MSNSERVER] : MSN_SERVER, |
| 1209 | account->proto_opt[USEROPT_MSNPORT][0] ? | |
| 1210 | atoi(account->proto_opt[USEROPT_MSNPORT]) : MSN_PORT, | |
| 1211 | msn_login_connect, gc) != 0) { | |
| 3263 | 1212 | hide_login_progress(gc, _("Unable to connect")); |
|
2688
f1f8c4ff8794
[gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
1213 | signoff(gc); |
|
f1f8c4ff8794
[gaim-migrate @ 2701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
1214 | } |
| 2086 | 1215 | } |
| 1216 | ||
| 1217 | static void msn_close(struct gaim_connection *gc) | |
| 1218 | { | |
| 1219 | struct msn_data *md = gc->proto_data; | |
| 1220 | close(md->fd); | |
| 1221 | if (md->inpa) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1222 | gaim_input_remove(md->inpa); |
|
2738
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1223 | g_free(md->rxqueue); |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1224 | if (md->msg) |
|
bd5bcb1c8167
[gaim-migrate @ 2751]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2688
diff
changeset
|
1225 | g_free(md->msguser); |
| 3195 | 1226 | if (md->passport) { |
| 1227 | unlink(md->passport); | |
|
3231
340891659275
[gaim-migrate @ 3248]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3200
diff
changeset
|
1228 | g_free(md->passport); |
| 3195 | 1229 | } |
| 2086 | 1230 | while (md->switches) |
| 1231 | msn_kill_switch(md->switches->data); | |
| 1232 | while (md->fl) { | |
| 1233 | struct msn_buddy *tmp = md->fl->data; | |
| 1234 | md->fl = g_slist_remove(md->fl, tmp); | |
| 1235 | g_free(tmp->user); | |
| 1236 | g_free(tmp->friend); | |
| 1237 | g_free(tmp); | |
| 1238 | } | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1239 | g_slist_free(md->permit); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1240 | g_slist_free(md->deny); |
| 2086 | 1241 | g_free(md); |
| 1242 | } | |
| 1243 | ||
| 3001 | 1244 | static int msn_send_typing(struct gaim_connection *gc, char *who, int typing) { |
| 2993 | 1245 | struct msn_switchboard *ms = msn_find_switch(gc, who); |
| 1246 | char header[MSN_BUF_LEN] = "MIME-Version: 1.0\r\n" | |
| 1247 | "Content-Type: text/x-msmsgscontrol\r\n" | |
| 1248 | "TypingUser: "; | |
| 1249 | char buf [MSN_BUF_LEN]; | |
| 3001 | 1250 | if (!ms || !typing) |
| 1251 | return 0; | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1252 | g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s%s\r\n\r\n\r\n", |
| 2993 | 1253 | ++ms->trId, |
| 1254 | strlen(header) + strlen("\r\n\r\n\r\n") + strlen(gc->username), | |
| 1255 | header, gc->username); | |
| 1256 | if (msn_write(ms->fd, buf, strlen(buf)) < 0) | |
| 1257 | msn_kill_switch(ms); | |
| 1258 | return MSN_TYPING_SEND_TIMEOUT; | |
| 1259 | } | |
| 1260 | ||
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
1261 | #if 0 |
| 4150 | 1262 | static void msn_file_transfer_cancel(struct gaim_connection *gc, |
| 1263 | struct file_transfer *xfer) | |
| 1264 | { | |
| 1265 | struct msn_data *md = gc->proto_data; | |
| 1266 | struct msn_file_transfer *mft = find_mft_by_xfer(gc, xfer); | |
| 1267 | struct msn_switchboard *ms = msn_find_switch(gc, mft->sn); | |
| 1268 | char header[MSN_BUF_LEN]; | |
| 1269 | char buf[MSN_BUF_LEN]; | |
| 1270 | ||
| 1271 | if (!ms || !mft) | |
| 1272 | { | |
| 1273 | debug_printf("Eep! Returning from msn_file_transfer_cancel early"); | |
| 1274 | return; | |
| 1275 | } | |
| 1276 | ||
| 1277 | g_snprintf(header, sizeof(header), | |
| 1278 | "MIME-Version: 1.0\r\n" | |
| 1279 | "Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n\r\n" | |
| 1280 | "Invitation-Command: CANCEL\r\n" | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1281 | "Invitation-Cookie: %lu\r\n" |
| 4150 | 1282 | "Cancel-Code: REJECT\r\n", |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1283 | (unsigned long)mft->cookie); |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1284 | |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1285 | g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s\r\n\r\n", |
| 4150 | 1286 | ++ms->trId, strlen(header) + strlen("\r\n\r\n"), |
| 1287 | header); | |
| 1288 | ||
| 1289 | md->file_transfers = g_slist_remove(md->file_transfers, mft); | |
| 1290 | ||
| 1291 | if (msn_write(ms->fd, buf, strlen(buf)) < 0) | |
| 1292 | { | |
| 1293 | debug_printf("Uh oh! Killing switch.\n"); | |
| 1294 | msn_kill_switch(ms); | |
| 1295 | } | |
| 1296 | } | |
| 1297 | ||
| 1298 | static void msn_file_transfer_in(struct gaim_connection *gc, | |
| 1299 | struct file_transfer *xfer, int offset) | |
| 1300 | { | |
| 1301 | struct msn_file_transfer *mft = find_mft_by_xfer(gc, xfer); | |
| 1302 | struct msn_switchboard *ms = msn_find_switch(gc, mft->sn); | |
| 1303 | char header[MSN_BUF_LEN]; | |
| 1304 | char buf[MSN_BUF_LEN]; | |
| 1305 | ||
| 1306 | if (!ms || !mft) | |
| 1307 | { | |
| 1308 | debug_printf("Eep! Returning from msn_file_transfer_in early"); | |
| 1309 | return; | |
| 1310 | } | |
| 1311 | ||
| 1312 | g_snprintf(header, sizeof(header), | |
| 1313 | "MIME-Version: 1.0\r\n" | |
| 1314 | "Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n\r\n" | |
| 1315 | "Invitation-Command: ACCEPT\r\n" | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1316 | "Invitation-Cookie: %lu\r\n" |
| 4150 | 1317 | "Launch-Application: FALSE\r\n" |
| 1318 | "Request-Data: IP-Address:\r\n", | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1319 | (unsigned long)mft->cookie); |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1320 | |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1321 | g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s\r\n\r\n", |
| 4150 | 1322 | ++ms->trId, strlen(header) + strlen("\r\n\r\n"), |
| 1323 | header); | |
| 1324 | ||
| 1325 | if (msn_write(ms->fd, buf, strlen(buf)) < 0) { | |
| 1326 | msn_kill_switch(ms); | |
| 1327 | return; | |
| 1328 | } | |
| 1329 | ||
| 1330 | mft->xfer = xfer; | |
| 1331 | } | |
| 1332 | ||
| 1333 | static void msn_file_transfer_out(struct gaim_connection *gc, | |
| 1334 | struct file_transfer *xfer, | |
| 1335 | const char *name, int totfiles, int totsize) | |
| 1336 | { | |
| 1337 | struct msn_file_transfer *mft = find_mft_by_xfer(gc, xfer); | |
| 1338 | struct msn_switchboard *ms = msn_find_switch(gc, mft->sn); | |
| 1339 | char header[MSN_BUF_LEN]; | |
| 1340 | char buf[MSN_BUF_LEN]; | |
| 1341 | struct stat sb; | |
| 1342 | ||
| 1343 | if (!ms) | |
| 1344 | return; | |
| 1345 | ||
| 1346 | if (totfiles > 1) | |
| 1347 | return; | |
| 1348 | ||
| 1349 | if (stat(name, &sb) == -1) | |
| 1350 | return; | |
| 1351 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1352 | mft->cookie = 1 + (uint32_t)(4294967295.0 * rand() / (RAND_MAX + 1.0)); |
| 4150 | 1353 | |
| 1354 | g_snprintf(header, sizeof(header), | |
| 1355 | "MIME-Version: 1.0\r\n" | |
| 1356 | "Content-Type: text/x-msmsgsinvite; charset=UTF-8\r\n" | |
| 1357 | "Application-Name: File Transfer\r\n" | |
| 1358 | "Application-GUID: {5D3E02AB-6190-11d3-BBBB-00C04F795683}\r\n" | |
| 1359 | "Invitation-Command: INVITE\r\n" | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1360 | "Invitation-Cookie: %lu\r\n" |
| 4150 | 1361 | "Application-File: %s\r\n" |
| 1362 | "Application-FileSize: %ld\r\n", | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1363 | (unsigned long)mft->cookie, name, sb.st_size); |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1364 | |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1365 | g_snprintf(buf, sizeof(buf), "MSG %u A %d\r\n%s\r\n\r\n", |
| 4150 | 1366 | ++ms->trId, |
| 1367 | strlen(header) + strlen("\r\n\r\n"), | |
| 1368 | header); | |
| 1369 | ||
| 1370 | if (msn_write(ms->fd, buf, strlen(buf)) < 0) | |
| 1371 | msn_kill_switch(ms); | |
| 1372 | ||
| 1373 | debug_printf("\n"); | |
| 1374 | } | |
| 1375 | ||
| 1376 | static void msn_file_transfer_done(struct gaim_connection *gc, | |
| 1377 | struct file_transfer *xfer) | |
| 1378 | { | |
| 1379 | struct msn_data *md = (struct msn_data *)gc->proto_data; | |
| 1380 | struct msn_file_transfer *mft = find_mft_by_xfer(gc, xfer); | |
| 1381 | char buf[MSN_BUF_LEN]; | |
| 1382 | ||
| 1383 | g_snprintf(buf, sizeof(buf), "BYE 16777989\r\n"); | |
| 1384 | ||
| 1385 | msn_write(mft->fd, buf, strlen(buf)); | |
| 1386 | ||
| 1387 | md->file_transfers = g_slist_remove(md->file_transfers, mft); | |
| 1388 | ||
| 1389 | gaim_input_remove(mft->inpa); | |
| 1390 | ||
| 1391 | close(mft->fd); | |
| 1392 | ||
| 1393 | g_free(mft->filename); | |
| 1394 | g_free(mft->sn); | |
| 1395 | g_free(mft); | |
| 1396 | } | |
| 1397 | ||
| 1398 | static size_t msn_file_transfer_read(struct gaim_connection *gc, | |
| 1399 | struct file_transfer *xfer, int fd, | |
| 1400 | char **buf) | |
| 1401 | { | |
| 1402 | unsigned char header[3]; | |
| 1403 | size_t len, size; | |
| 1404 | ||
| 1405 | if (read(fd, header, sizeof(header)) < 3) | |
| 1406 | return 0; | |
| 1407 | ||
| 1408 | if (header[0] != 0) { | |
| 1409 | debug_printf("Invalid header[0]: %d. Aborting.\n", header[0]); | |
| 1410 | return 0; | |
| 1411 | } | |
| 1412 | ||
| 1413 | size = header[1] | (header[2] << 8); | |
| 1414 | ||
| 1415 | *buf = g_new0(char, size); | |
| 1416 | ||
| 1417 | for (len = 0; len < size; len += read(fd, *buf + len, size - len)); | |
| 1418 | ||
| 1419 | return len; | |
| 1420 | } | |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
1421 | #endif |
| 4150 | 1422 | |
| 3033 | 1423 | static int msn_send_im(struct gaim_connection *gc, char *who, char *message, int len, int flags) |
| 2086 | 1424 | { |
| 1425 | struct msn_data *md = gc->proto_data; | |
| 1426 | struct msn_switchboard *ms = msn_find_switch(gc, who); | |
| 1427 | char buf[MSN_BUF_LEN]; | |
| 1428 | ||
| 1429 | if (ms) { | |
| 3642 | 1430 | char *send; |
|
2591
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1431 | |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1432 | if (ms->txqueue) { |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1433 | debug_printf("appending to queue\n"); |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1434 | ms->txqueue = g_slist_append(ms->txqueue, g_strdup(message)); |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1435 | return 1; |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1436 | } |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1437 | |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2600
diff
changeset
|
1438 | send = add_cr(message); |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1439 | g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s%s", ++ms->trId, |
| 3642 | 1440 | strlen(MIME_HEADER) + strlen(send), |
| 1441 | MIME_HEADER, send); | |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2600
diff
changeset
|
1442 | g_free(send); |
| 2086 | 1443 | if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
| 1444 | msn_kill_switch(ms); | |
| 1445 | debug_printf("\n"); | |
| 1446 | } else if (strcmp(who, gc->username)) { | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1447 | g_snprintf(buf, MSN_BUF_LEN, "XFR %u SB\r\n", ++md->trId); |
| 2086 | 1448 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1449 | hide_login_progress(gc, _("Write error")); |
| 2086 | 1450 | signoff(gc); |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2273
diff
changeset
|
1451 | return 1; |
| 2086 | 1452 | } |
| 1453 | ||
| 1454 | ms = g_new0(struct msn_switchboard, 1); | |
| 1455 | md->switches = g_slist_append(md->switches, ms); | |
| 1456 | ms->user = g_strdup(who); | |
|
2591
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1457 | ms->txqueue = g_slist_append(ms->txqueue, g_strdup(message)); |
| 2086 | 1458 | ms->gc = gc; |
| 1459 | ms->fd = -1; | |
| 1460 | } else | |
| 1461 | /* in msn you can't send messages to yourself, so we'll fake like we received it ;) */ | |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2842
diff
changeset
|
1462 | serv_got_im(gc, who, message, flags | IM_FLAG_GAIMUSER, time(NULL), -1); |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2273
diff
changeset
|
1463 | return 1; |
| 2086 | 1464 | } |
| 1465 | ||
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1466 | static int msn_chat_send(struct gaim_connection *gc, int id, char *message) |
| 2086 | 1467 | { |
| 1468 | struct msn_switchboard *ms = msn_find_switch_by_id(gc, id); | |
| 1469 | char buf[MSN_BUF_LEN]; | |
| 3642 | 1470 | char *send; |
| 2086 | 1471 | |
| 1472 | if (!ms) | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1473 | return -EINVAL; |
| 2086 | 1474 | |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2600
diff
changeset
|
1475 | send = add_cr(message); |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1476 | g_snprintf(buf, sizeof(buf), "MSG %u N %d\r\n%s%s", ++ms->trId, |
| 3642 | 1477 | strlen(MIME_HEADER) + strlen(send), |
| 1478 | MIME_HEADER, send); | |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2600
diff
changeset
|
1479 | g_free(send); |
|
2591
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1480 | if (msn_write(ms->fd, buf, strlen(buf)) < 0) { |
| 2086 | 1481 | msn_kill_switch(ms); |
|
2591
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1482 | return 0; |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1483 | } |
| 2086 | 1484 | debug_printf("\n"); |
| 1485 | serv_got_chat_in(gc, id, gc->username, 0, message, time(NULL)); | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1486 | return 0; |
| 2086 | 1487 | } |
| 1488 | ||
| 3466 | 1489 | static void msn_chat_invite(struct gaim_connection *gc, int id, const char *msg, const char *who) |
| 2086 | 1490 | { |
| 1491 | struct msn_switchboard *ms = msn_find_switch_by_id(gc, id); | |
| 1492 | char buf[MSN_BUF_LEN]; | |
| 1493 | ||
| 1494 | if (!ms) | |
| 1495 | return; | |
| 1496 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1497 | g_snprintf(buf, sizeof(buf), "CAL %u %s\r\n", ++ms->trId, who); |
| 2086 | 1498 | if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
| 1499 | msn_kill_switch(ms); | |
| 1500 | } | |
| 1501 | ||
| 1502 | static void msn_chat_leave(struct gaim_connection *gc, int id) | |
| 1503 | { | |
| 1504 | struct msn_switchboard *ms = msn_find_switch_by_id(gc, id); | |
| 1505 | char buf[MSN_BUF_LEN]; | |
| 1506 | ||
| 1507 | if (!ms) | |
| 1508 | return; | |
| 1509 | ||
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2600
diff
changeset
|
1510 | g_snprintf(buf, sizeof(buf), "OUT\r\n"); |
| 2086 | 1511 | if (msn_write(ms->fd, buf, strlen(buf)) < 0) |
| 1512 | msn_kill_switch(ms); | |
| 1513 | } | |
| 1514 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
1515 | static GList *msn_away_states(struct gaim_connection *gc) |
| 2086 | 1516 | { |
| 1517 | GList *m = NULL; | |
| 1518 | ||
| 3263 | 1519 | m = g_list_append(m, _("Available")); |
| 1520 | m = g_list_append(m, _("Away From Computer")); | |
| 1521 | m = g_list_append(m, _("Be Right Back")); | |
| 1522 | m = g_list_append(m, _("Busy")); | |
| 1523 | m = g_list_append(m, _("On The Phone")); | |
| 1524 | m = g_list_append(m, _("Out To Lunch")); | |
| 1525 | m = g_list_append(m, _("Hidden")); | |
| 2086 | 1526 | |
| 1527 | return m; | |
| 1528 | } | |
| 1529 | ||
| 1530 | static void msn_set_away(struct gaim_connection *gc, char *state, char *msg) | |
| 1531 | { | |
| 1532 | struct msn_data *md = gc->proto_data; | |
| 1533 | char buf[MSN_BUF_LEN]; | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1534 | const char *away; |
| 2086 | 1535 | |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4069
diff
changeset
|
1536 | if (gc->away) { |
|
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4069
diff
changeset
|
1537 | g_free(gc->away); |
|
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4069
diff
changeset
|
1538 | gc->away = NULL; |
|
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4069
diff
changeset
|
1539 | } |
| 2086 | 1540 | |
| 1541 | if (msg) { | |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4069
diff
changeset
|
1542 | gc->away = g_strdup(""); |
| 2086 | 1543 | away = "AWY"; |
| 1544 | } else if (state) { | |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4069
diff
changeset
|
1545 | gc->away = g_strdup(""); |
| 2086 | 1546 | |
| 3538 | 1547 | if (!strcmp(state, _("Away From Computer"))) |
| 2086 | 1548 | away = "AWY"; |
| 3538 | 1549 | else if (!strcmp(state, _("Be Right Back"))) |
| 2086 | 1550 | away = "BRB"; |
| 3538 | 1551 | else if (!strcmp(state, _("Busy"))) |
| 2086 | 1552 | away = "BSY"; |
| 3538 | 1553 | else if (!strcmp(state, _("On The Phone"))) |
| 2086 | 1554 | away = "PHN"; |
| 3538 | 1555 | else if (!strcmp(state, _("Out To Lunch"))) |
| 2086 | 1556 | away = "LUN"; |
| 3538 | 1557 | else if (!strcmp(state, _("Hidden"))) |
|
2152
e627966d7d81
[gaim-migrate @ 2162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2123
diff
changeset
|
1558 | away = "HDN"; |
| 2086 | 1559 | else { |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4069
diff
changeset
|
1560 | g_free(gc->away); |
| 2086 | 1561 | gc->away = NULL; |
| 1562 | away = "NLN"; | |
| 1563 | } | |
| 1564 | } else if (gc->is_idle) | |
| 1565 | away = "IDL"; | |
| 1566 | else | |
| 1567 | away = "NLN"; | |
| 1568 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1569 | g_snprintf(buf, sizeof(buf), "CHG %u %s\r\n", ++md->trId, away); |
| 2086 | 1570 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1571 | hide_login_progress(gc, _("Write error")); |
| 2086 | 1572 | signoff(gc); |
| 1573 | return; | |
| 1574 | } | |
| 1575 | } | |
| 1576 | ||
| 1577 | static void msn_set_idle(struct gaim_connection *gc, int idle) | |
| 1578 | { | |
| 1579 | struct msn_data *md = gc->proto_data; | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1580 | char buf[64]; |
| 2086 | 1581 | |
| 1582 | if (gc->away) | |
| 1583 | return; | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1584 | g_snprintf(buf, sizeof(buf), |
|
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1585 | idle ? "CHG %d IDL\r\n" : "CHG %u NLN\r\n", ++md->trId); |
| 2086 | 1586 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1587 | hide_login_progress(gc, _("Write error")); |
| 2086 | 1588 | signoff(gc); |
| 1589 | return; | |
| 1590 | } | |
| 1591 | } | |
| 1592 | ||
| 4687 | 1593 | static const char *msn_list_icon(struct gaim_account *a, struct buddy *b) |
| 2086 | 1594 | { |
| 4687 | 1595 | return "msn"; |
| 1596 | } | |
| 1597 | /* | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
1598 | if (uc == 0) |
| 2086 | 1599 | return msn_online_xpm; |
| 3175 | 1600 | |
| 1601 | uc >>= 1; | |
| 1602 | ||
| 1603 | if (uc == 2 || uc == 6) | |
| 1604 | return msn_occ_xpm; | |
| 1605 | ||
| 2086 | 1606 | return msn_away_xpm; |
| 1607 | } | |
| 4687 | 1608 | */ |
| 2086 | 1609 | static char *msn_get_away_text(int s) |
| 1610 | { | |
| 1611 | switch (s) { | |
| 1612 | case MSN_BUSY : | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1613 | return _("Busy"); |
| 2086 | 1614 | case MSN_BRB : |
| 4606 | 1615 | return _("Be Right Back"); |
| 2086 | 1616 | case MSN_AWAY : |
| 4606 | 1617 | return _("Away From Computer"); |
| 2086 | 1618 | case MSN_PHONE : |
| 4606 | 1619 | return _("On The Phone"); |
| 2086 | 1620 | case MSN_LUNCH : |
| 4606 | 1621 | return _("Out To Lunch"); |
| 2086 | 1622 | case MSN_IDLE : |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1623 | return _("Idle"); |
| 2086 | 1624 | default: |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1625 | return _("Available"); |
| 2086 | 1626 | } |
| 1627 | } | |
| 1628 | ||
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
1629 | #if 0 |
| 4150 | 1630 | static void msn_ask_send_file(struct gaim_connection *gc, char *destsn) |
| 1631 | { | |
| 1632 | struct msn_data *md = (struct msn_data *)gc->proto_data; | |
| 1633 | struct msn_file_transfer *mft = g_new0(struct msn_file_transfer, 1); | |
| 1634 | ||
| 1635 | mft->type = MFT_SENDFILE_OUT; | |
| 1636 | mft->sn = g_strdup(destsn); | |
| 1637 | mft->gc = gc; | |
| 1638 | ||
| 1639 | md->file_transfers = g_slist_append(md->file_transfers, mft); | |
| 1640 | ||
| 1641 | mft->xfer = transfer_out_add(gc, mft->sn); | |
| 1642 | } | |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
1643 | #endif |
| 4150 | 1644 | |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1645 | static GList *msn_buddy_menu(struct gaim_connection *gc, char *who) |
| 2086 | 1646 | { |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1647 | GList *m = NULL; |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1648 | struct proto_buddy_menu *pbm; |
| 4687 | 1649 | struct buddy *b = gaim_find_buddy(gc->account, who); |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1650 | static char buf[MSN_BUF_LEN]; |
| 2086 | 1651 | |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
1652 | #if 0 |
|
2607
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
1653 | pbm = g_new0(struct proto_buddy_menu, 1); |
| 4150 | 1654 | pbm->label = _("Send File"); |
| 1655 | pbm->callback = msn_ask_send_file; | |
| 1656 | pbm->gc = gc; | |
| 1657 | m = g_list_append(m, pbm); | |
| 1658 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2494
diff
changeset
|
1659 | if (!b || !(b->uc >> 1)) |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1660 | return m; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
1661 | #endif |
| 2086 | 1662 | |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1663 | pbm = g_new0(struct proto_buddy_menu, 1); |
| 3263 | 1664 | g_snprintf(buf, sizeof(buf), _("Status: %s"), msn_get_away_text(b->uc >> 1)); |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1665 | pbm->label = buf; |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1666 | pbm->callback = NULL; |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1667 | pbm->gc = gc; |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1668 | m = g_list_append(m, pbm); |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1669 | |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2169
diff
changeset
|
1670 | return m; |
| 2086 | 1671 | } |
| 1672 | ||
| 3466 | 1673 | static void msn_add_buddy(struct gaim_connection *gc, const char *name) |
| 2086 | 1674 | { |
| 1675 | struct msn_data *md = gc->proto_data; | |
|
2588
4456409e8343
[gaim-migrate @ 2601]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2582
diff
changeset
|
1676 | char *who = msn_normalize(name); |
| 2086 | 1677 | char buf[MSN_BUF_LEN]; |
| 1678 | GSList *l = md->fl; | |
| 1679 | ||
|
2600
4319d341eaaf
[gaim-migrate @ 2613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
1680 | if (who[0] == '@') |
|
4319d341eaaf
[gaim-migrate @ 2613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
1681 | /* how did this happen? */ |
|
4319d341eaaf
[gaim-migrate @ 2613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
1682 | return; |
|
4319d341eaaf
[gaim-migrate @ 2613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
1683 | |
| 2953 | 1684 | if (strchr(who, ' ')) |
| 2952 | 1685 | /* This is a broken blist entry. */ |
| 1686 | return; | |
| 1687 | ||
| 2086 | 1688 | while (l) { |
| 1689 | struct msn_buddy *b = l->data; | |
| 1690 | if (!g_strcasecmp(who, b->user)) | |
| 1691 | break; | |
| 1692 | l = l->next; | |
| 1693 | } | |
| 1694 | if (l) | |
| 1695 | return; | |
| 1696 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1697 | g_snprintf(buf, sizeof(buf), "ADD %u FL %s %s\r\n", ++md->trId, who, who); |
| 2086 | 1698 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1699 | hide_login_progress(gc, _("Write error")); |
| 2086 | 1700 | signoff(gc); |
| 1701 | return; | |
| 1702 | } | |
| 1703 | } | |
| 1704 | ||
|
2681
73cd94b9e78e
[gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2665
diff
changeset
|
1705 | static void msn_rem_buddy(struct gaim_connection *gc, char *who, char *group) |
| 2086 | 1706 | { |
| 1707 | struct msn_data *md = gc->proto_data; | |
| 1708 | char buf[MSN_BUF_LEN]; | |
| 1709 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1710 | g_snprintf(buf, sizeof(buf), "REM %u FL %s\r\n", ++md->trId, who); |
| 2086 | 1711 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1712 | hide_login_progress(gc, _("Write error")); |
| 2086 | 1713 | signoff(gc); |
| 1714 | return; | |
| 1715 | } | |
| 1716 | } | |
| 1717 | ||
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1718 | static void msn_act_id(gpointer data, char *entry) |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1719 | { |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1720 | struct gaim_connection *gc = data; |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1721 | struct msn_data *md = gc->proto_data; |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1722 | char buf[MSN_BUF_LEN]; |
|
3323
3358bfc36dd3
[gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
3322
diff
changeset
|
1723 | char *alias; |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1724 | |
| 3466 | 1725 | if (!entry || *entry == '\0') |
| 3448 | 1726 | alias = g_strdup(""); |
| 1727 | else | |
| 3642 | 1728 | alias = g_strdup(entry); |
|
3323
3358bfc36dd3
[gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
3322
diff
changeset
|
1729 | |
|
3358bfc36dd3
[gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
3322
diff
changeset
|
1730 | if (strlen(alias) >= BUDDY_ALIAS_MAXLEN) { |
| 3427 | 1731 | do_error_dialog(_("New MSN friendly name too long."), NULL, GAIM_ERROR); |
| 3020 | 1732 | return; |
| 1733 | } | |
| 1734 | ||
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1735 | g_snprintf(buf, sizeof(buf), "REA %u %s %s\r\n", ++md->trId, gc->username, url_encode(alias)); |
|
3323
3358bfc36dd3
[gaim-migrate @ 3341]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
3322
diff
changeset
|
1736 | g_free(alias); |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1737 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1738 | hide_login_progress(gc, _("Write error")); |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1739 | signoff(gc); |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1740 | return; |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1741 | } |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1742 | } |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1743 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1744 | static void msn_show_set_friendly_name(struct gaim_connection *gc) |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1745 | { |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1746 | do_prompt_dialog(_("Set Friendly Name:"), gc->displayname, gc, msn_act_id, NULL); |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1747 | } |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1748 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1749 | static GList *msn_actions(struct gaim_connection *gc) |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1750 | { |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1751 | GList *m = NULL; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1752 | struct proto_actions_menu *pam; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1753 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1754 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1755 | pam->label = _("Set Friendly Name"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1756 | pam->callback = msn_show_set_friendly_name; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1757 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4321
diff
changeset
|
1758 | m = g_list_append(m, pam); |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1759 | |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1760 | return m; |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1761 | } |
|
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
1762 | |
|
2591
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1763 | static void msn_convo_closed(struct gaim_connection *gc, char *who) |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1764 | { |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1765 | struct msn_switchboard *ms = msn_find_switch(gc, who); |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1766 | |
|
4069
ddddcff3183d
[gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents:
4068
diff
changeset
|
1767 | if (ms) { |
|
ddddcff3183d
[gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents:
4068
diff
changeset
|
1768 | char sendbuf[256]; |
|
ddddcff3183d
[gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents:
4068
diff
changeset
|
1769 | |
|
ddddcff3183d
[gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents:
4068
diff
changeset
|
1770 | g_snprintf(sendbuf, sizeof(sendbuf), "BYE %s\r\n", gc->username); |
|
ddddcff3183d
[gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents:
4068
diff
changeset
|
1771 | |
|
ddddcff3183d
[gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents:
4068
diff
changeset
|
1772 | msn_write(ms->fd, sendbuf, strlen(sendbuf)); |
|
ddddcff3183d
[gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents:
4068
diff
changeset
|
1773 | |
|
2591
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1774 | msn_kill_switch(ms); |
|
4069
ddddcff3183d
[gaim-migrate @ 4281]
Christian Hammond <chipx86@chipx86.com>
parents:
4068
diff
changeset
|
1775 | } |
|
2591
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1776 | } |
|
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
1777 | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1778 | static void msn_keepalive(struct gaim_connection *gc) |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1779 | { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1780 | struct msn_data *md = gc->proto_data; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1781 | char buf[MSN_BUF_LEN]; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1782 | |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2600
diff
changeset
|
1783 | g_snprintf(buf, sizeof(buf), "PNG\r\n"); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1784 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1785 | hide_login_progress(gc, _("Write error")); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1786 | signoff(gc); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1787 | return; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1788 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1789 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1790 | |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1791 | static void msn_set_permit_deny(struct gaim_connection *gc) |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1792 | { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1793 | struct msn_data *md = gc->proto_data; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1794 | char buf[MSN_BUF_LEN]; |
|
2665
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1795 | GSList *s, *t = NULL; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1796 | |
| 4491 | 1797 | if (gc->account->permdeny == PERMIT_ALL || gc->account->permdeny == DENY_SOME) |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1798 | g_snprintf(buf, sizeof(buf), "BLP %u AL\r\n", ++md->trId); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1799 | else |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1800 | g_snprintf(buf, sizeof(buf), "BLP %u BL\r\n", ++md->trId); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1801 | |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1802 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1803 | hide_login_progress(gc, _("Write error")); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1804 | signoff(gc); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1805 | return; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1806 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1807 | |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1808 | /* this is safe because we'll always come here after we've gotten the list off the server, |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1809 | * and data is never removed. So if the lengths are equal we don't know about anyone locally |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1810 | * and so there's no sense in going through them all. */ |
| 4491 | 1811 | if (g_slist_length(gc->account->permit) == g_slist_length(md->permit)) { |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1812 | g_slist_free(md->permit); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1813 | md->permit = NULL; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1814 | } |
| 4491 | 1815 | if (g_slist_length(gc->account->deny) == g_slist_length(md->deny)) { |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1816 | g_slist_free(md->deny); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1817 | md->deny = NULL; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1818 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1819 | if (!md->permit && !md->deny) |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1820 | return; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1821 | |
| 3200 | 1822 | if (md->permit) { |
| 4491 | 1823 | s = g_slist_nth(gc->account->permit, g_slist_length(md->permit)); |
| 3200 | 1824 | while (s) { |
| 1825 | char *who = s->data; | |
| 1826 | s = s->next; | |
| 1827 | if (!strchr(who, '@')) { | |
| 1828 | t = g_slist_append(t, who); | |
| 1829 | continue; | |
| 1830 | } | |
| 4349 | 1831 | if (g_slist_find(md->deny, who)) { |
| 3294 | 1832 | t = g_slist_append(t, who); |
| 1833 | continue; | |
| 1834 | } | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1835 | g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, who, who); |
| 3200 | 1836 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1837 | hide_login_progress(gc, _("Write error")); |
| 3200 | 1838 | signoff(gc); |
| 1839 | return; | |
| 1840 | } | |
|
2665
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1841 | } |
| 3200 | 1842 | while (t) { |
| 4491 | 1843 | gaim_privacy_permit_remove(gc->account, t->data); |
| 3200 | 1844 | t = t->next; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1845 | } |
| 3200 | 1846 | if (t) |
| 1847 | g_slist_free(t); | |
|
2665
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1848 | t = NULL; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1849 | g_slist_free(md->permit); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1850 | md->permit = NULL; |
| 3200 | 1851 | } |
| 1852 | ||
| 1853 | if (md->deny) { | |
| 4491 | 1854 | s = g_slist_nth(gc->account->deny, g_slist_length(md->deny)); |
| 3200 | 1855 | while (s) { |
| 1856 | char *who = s->data; | |
| 1857 | s = s->next; | |
| 1858 | if (!strchr(who, '@')) { | |
| 1859 | t = g_slist_append(t, who); | |
| 1860 | continue; | |
| 1861 | } | |
| 4349 | 1862 | if (g_slist_find(md->deny, who)) { |
| 3294 | 1863 | t = g_slist_append(t, who); |
| 1864 | continue; | |
| 1865 | } | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1866 | g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, who, who); |
| 3200 | 1867 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1868 | hide_login_progress(gc, _("Write error")); |
| 3200 | 1869 | signoff(gc); |
| 1870 | return; | |
| 1871 | } | |
|
2665
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1872 | } |
| 3200 | 1873 | while (t) { |
| 4491 | 1874 | gaim_privacy_deny_remove(gc->account, t->data); |
| 3200 | 1875 | t = t->next; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1876 | } |
| 3200 | 1877 | if (t) |
| 1878 | g_slist_free(t); | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1879 | g_slist_free(md->deny); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1880 | md->deny = NULL; |
| 3200 | 1881 | } |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1882 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1883 | |
| 4349 | 1884 | static void msn_add_permit(struct gaim_connection *gc, const char *who) |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1885 | { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1886 | struct msn_data *md = gc->proto_data; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1887 | char buf[MSN_BUF_LEN]; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1888 | |
|
2665
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1889 | if (!strchr(who, '@')) { |
| 3427 | 1890 | g_snprintf(buf, sizeof(buf), |
| 1891 | _("An MSN screenname must be in the form \"user@server.com\". " | |
| 1892 | "Perhaps you meant %s@hotmail.com. No changes were made to your " | |
| 1893 | "allow list."), who); | |
| 1894 | do_error_dialog(_("Invalid MSN screenname"), buf, GAIM_ERROR); | |
| 4491 | 1895 | gaim_privacy_permit_remove(gc->account, who); |
|
2665
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1896 | return; |
|
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1897 | } |
|
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1898 | |
| 4491 | 1899 | if (g_slist_find_custom(gc->account->deny, who, (GCompareFunc)strcmp)) { |
| 3294 | 1900 | debug_printf("MSN: Moving %s from BL to AL\n", who); |
| 4491 | 1901 | gaim_privacy_deny_remove(gc->account, who); |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1902 | g_snprintf(buf, sizeof(buf), "REM %u BL %s\r\n", ++md->trId, who); |
| 3294 | 1903 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1904 | hide_login_progress(gc, _("Write error")); |
| 3294 | 1905 | signoff(gc); |
| 1906 | return; | |
| 1907 | } | |
| 1908 | } | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1909 | g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, who, who); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1910 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1911 | hide_login_progress(gc, _("Write error")); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1912 | signoff(gc); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1913 | return; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1914 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1915 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1916 | |
| 4349 | 1917 | static void msn_rem_permit(struct gaim_connection *gc, const char *who) |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1918 | { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1919 | struct msn_data *md = gc->proto_data; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1920 | char buf[MSN_BUF_LEN]; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1921 | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1922 | g_snprintf(buf, sizeof(buf), "REM %u AL %s\r\n", ++md->trId, who); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1923 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1924 | hide_login_progress(gc, _("Write error")); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1925 | signoff(gc); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1926 | return; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1927 | } |
| 4349 | 1928 | |
| 4491 | 1929 | gaim_privacy_deny_add(gc->account, who); |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1930 | g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, who, who); |
| 3294 | 1931 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1932 | hide_login_progress(gc, _("Write error")); |
| 3294 | 1933 | signoff(gc); |
| 1934 | return; | |
| 1935 | } | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1936 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1937 | |
| 4349 | 1938 | static void msn_add_deny(struct gaim_connection *gc, const char *who) |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1939 | { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1940 | struct msn_data *md = gc->proto_data; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1941 | char buf[MSN_BUF_LEN]; |
| 4349 | 1942 | |
|
2665
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1943 | if (!strchr(who, '@')) { |
| 3427 | 1944 | g_snprintf(buf, sizeof(buf), |
| 1945 | _("An MSN screenname must be in the form \"user@server.com\". " | |
| 1946 | "Perhaps you meant %s@hotmail.com. No changes were made to your " | |
| 1947 | "block list."), who); | |
| 1948 | do_error_dialog(_("Invalid MSN screenname"), buf, GAIM_ERROR); | |
| 4491 | 1949 | gaim_privacy_deny_remove(gc->account, who); |
|
2665
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1950 | return; |
|
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1951 | } |
|
966d8e2b5017
[gaim-migrate @ 2678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2611
diff
changeset
|
1952 | |
| 4491 | 1953 | if (g_slist_find_custom(gc->account->permit, who, (GCompareFunc)strcmp)) { |
| 3294 | 1954 | debug_printf("MSN: Moving %s from AL to BL\n", who); |
| 4491 | 1955 | gaim_privacy_permit_remove(gc->account, who); |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1956 | g_snprintf(buf, sizeof(buf), "REM %u AL %s\r\n", ++md->trId, who); |
| 3294 | 1957 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1958 | hide_login_progress(gc, _("Write error")); |
| 3294 | 1959 | signoff(gc); |
| 1960 | return; | |
| 1961 | } | |
| 1962 | } | |
| 4349 | 1963 | |
| 3294 | 1964 | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1965 | g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, who, who); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1966 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1967 | hide_login_progress(gc, _("Write error")); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1968 | signoff(gc); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1969 | return; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1970 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1971 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1972 | |
| 4349 | 1973 | static void msn_rem_deny(struct gaim_connection *gc, const char *who) |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1974 | { |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1975 | struct msn_data *md = gc->proto_data; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1976 | char buf[MSN_BUF_LEN]; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1977 | |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1978 | g_snprintf(buf, sizeof(buf), "REM %u BL %s\r\n", ++md->trId, who); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1979 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1980 | hide_login_progress(gc, _("Write error")); |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1981 | signoff(gc); |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1982 | return; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1983 | } |
| 4349 | 1984 | |
| 4491 | 1985 | gaim_privacy_permit_add(gc->account, who); |
|
4270
fdf277afb41a
[gaim-migrate @ 4521]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4249
diff
changeset
|
1986 | g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, who, who); |
| 3294 | 1987 | if (msn_write(md->fd, buf, strlen(buf)) < 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4044
diff
changeset
|
1988 | hide_login_progress(gc, _("Write error")); |
| 3294 | 1989 | signoff(gc); |
| 1990 | return; | |
| 1991 | } | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1992 | } |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
1993 | |
|
2607
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
1994 | static void msn_buddy_free(struct buddy *b) |
|
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
1995 | { |
|
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
1996 | if (b->proto_data) |
|
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
1997 | g_free(b->proto_data); |
|
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
1998 | } |
|
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
1999 | |
| 3630 | 2000 | G_MODULE_EXPORT void msn_init(struct prpl *ret) |
| 2086 | 2001 | { |
| 3572 | 2002 | struct proto_user_opt *puo; |
| 2086 | 2003 | ret->protocol = PROTO_MSN; |
|
2153
f38e418776a7
[gaim-migrate @ 2163]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2152
diff
changeset
|
2004 | ret->options = OPT_PROTO_MAIL_CHECK; |
| 3572 | 2005 | ret->name = g_strdup("MSN"); |
| 2086 | 2006 | ret->list_icon = msn_list_icon; |
| 2007 | ret->buddy_menu = msn_buddy_menu; | |
| 2008 | ret->login = msn_login; | |
| 2009 | ret->close = msn_close; | |
| 2010 | ret->send_im = msn_send_im; | |
| 2993 | 2011 | ret->send_typing = msn_send_typing; |
| 2086 | 2012 | ret->away_states = msn_away_states; |
| 2013 | ret->set_away = msn_set_away; | |
| 2014 | ret->set_idle = msn_set_idle; | |
| 2015 | ret->add_buddy = msn_add_buddy; | |
| 2016 | ret->remove_buddy = msn_rem_buddy; | |
| 2017 | ret->chat_send = msn_chat_send; | |
| 2018 | ret->chat_invite = msn_chat_invite; | |
| 2019 | ret->chat_leave = msn_chat_leave; | |
| 2020 | ret->normalize = msn_normalize; | |
|
2213
3a176de28de1
[gaim-migrate @ 2223]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2210
diff
changeset
|
2021 | ret->actions = msn_actions; |
|
2591
b3a239d80606
[gaim-migrate @ 2604]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2588
diff
changeset
|
2022 | ret->convo_closed = msn_convo_closed; |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
2023 | ret->keepalive = msn_keepalive; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
2024 | ret->set_permit_deny = msn_set_permit_deny; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
2025 | ret->add_permit = msn_add_permit; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
2026 | ret->rem_permit = msn_rem_permit; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
2027 | ret->add_deny = msn_add_deny; |
|
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2591
diff
changeset
|
2028 | ret->rem_deny = msn_rem_deny; |
|
2607
7bcd3ea48df3
[gaim-migrate @ 2620]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
2029 | ret->buddy_free = msn_buddy_free; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2030 | |
|
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2031 | #if 0 |
| 4150 | 2032 | ret->file_transfer_cancel = msn_file_transfer_cancel; |
| 2033 | ret->file_transfer_in = msn_file_transfer_in; | |
| 2034 | ret->file_transfer_out = msn_file_transfer_out; | |
| 2035 | ret->file_transfer_done = msn_file_transfer_done; | |
| 2036 | ret->file_transfer_read = msn_file_transfer_read; | |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2037 | #endif |
| 3572 | 2038 | |
| 2039 | puo = g_new0(struct proto_user_opt, 1); | |
|
4115
7a92554f5800
[gaim-migrate @ 4332]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4112
diff
changeset
|
2040 | puo->label = g_strdup(_("Server:")); |
| 3572 | 2041 | puo->def = g_strdup(MSN_SERVER); |
| 2042 | puo->pos = USEROPT_MSNSERVER; | |
| 2043 | ret->user_opts = g_list_append(ret->user_opts, puo); | |
| 2044 | ||
| 2045 | puo = g_new0(struct proto_user_opt, 1); | |
|
4115
7a92554f5800
[gaim-migrate @ 4332]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4112
diff
changeset
|
2046 | puo->label = g_strdup(_("Port:")); |
| 3572 | 2047 | puo->def = g_strdup("1863"); |
| 2048 | puo->pos = USEROPT_MSNPORT; | |
| 2049 | ret->user_opts = g_list_append(ret->user_opts, puo); | |
| 2086 | 2050 | |
| 2051 | my_protocol = ret; | |
| 2052 | } | |
| 2053 | ||
| 2054 | #ifndef STATIC | |
| 2055 | ||
| 3630 | 2056 | G_MODULE_EXPORT void gaim_prpl_init(struct prpl *prpl) |
| 2086 | 2057 | { |
| 3572 | 2058 | msn_init(prpl); |
| 2059 | prpl->plug->desc.api_version = PLUGIN_API_VERSION; | |
| 2086 | 2060 | } |
| 2061 | ||
| 3630 | 2062 | G_MODULE_EXPORT void gaim_plugin_remove() |
| 2086 | 2063 | { |
| 2064 | struct prpl *p = find_prpl(PROTO_MSN); | |
| 2065 | if (p == my_protocol) | |
| 2066 | unload_protocol(p); | |
| 2067 | } | |
| 2068 | ||
| 3630 | 2069 | G_MODULE_EXPORT char *name() |
| 2086 | 2070 | { |
| 2071 | return "MSN"; | |
| 2072 | } | |
| 2073 | ||
| 3630 | 2074 | G_MODULE_EXPORT char *description() |
| 2086 | 2075 | { |
|
2162
2a9f076b0af9
[gaim-migrate @ 2172]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2153
diff
changeset
|
2076 | return PRPL_DESC("MSN"); |
| 2086 | 2077 | } |
| 2078 | ||
| 2079 | #endif |