Thu, 04 Jun 2009 05:19:49 +0000
Change the way we parse messages on MySpace a little bit. This
fixes #8846: people using web myspaceIM can't respond to pidgin myspaceIM
For some reason IMs send using the myspace web site are sent so that
they won't become offline messages if the other person is offline.
I'm not really sure why that decision was made.
So now we treat messages with bm 1 the same as messages with bm 121. This means
we have to combine the function that parses out typing notification with
the function that parses IMs. And we check for typing notifications by
looking for %typing%. Which means if someone sends the IM "%typing%" with
no markup then we'll interpret it as a typing notification. And there's
nothing we can do to differentiate between the two. I asked.
|
17930
d8908611bf64
Use symbolic constants for persist messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17924
diff
changeset
|
1 | /* MySpaceIM Protocol Plugin, header file |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
2 | * |
| 18013 | 3 | * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im> |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
4 | * |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
5 | * This program is free software; you can redistribute it and/or modify |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
6 | * it under the terms of the GNU General Public License as published by |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
7 | * the Free Software Foundation; either version 2 of the License, or |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
8 | * (at your option) any later version. |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
9 | * |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
10 | * This program is distributed in the hope that it will be useful, |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
13 | * GNU General Public License for more details. |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
14 | * |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
15 | * You should have received a copy of the GNU General Public License |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
16 | * along with this program; if not, write to the Free Software |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19741
diff
changeset
|
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
18 | */ |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
19 | |
|
17902
8e0b1d066efb
Add partial implementation of MsimMessage (not used anywhere yet).
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17901
diff
changeset
|
20 | #ifndef _MYSPACE_MYSPACE_H |
|
8e0b1d066efb
Add partial implementation of MsimMessage (not used anywhere yet).
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17901
diff
changeset
|
21 | #define _MYSPACE_MYSPACE_H |
|
8e0b1d066efb
Add partial implementation of MsimMessage (not used anywhere yet).
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17901
diff
changeset
|
22 | |
|
17903
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
23 | /* Other includes */ |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
24 | #include <string.h> |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
25 | #include <errno.h>/* for EAGAIN */ |
|
17903
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
26 | #include <stdarg.h> |
|
18061
76e936ec829e
Implement round() if it is not available, using floor().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18060
diff
changeset
|
27 | #include <math.h> |
|
17903
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
28 | |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
29 | #include <glib.h> |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
30 | |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
31 | #ifdef _WIN32 |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
32 | #include "win32dep.h" |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
33 | #else |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
34 | /* For recv() and send(); needed to match Win32 */ |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
35 | #include <sys/types.h> |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
36 | #include <sys/socket.h> |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
37 | #endif |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
38 | |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
39 | #include "internal.h" |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
40 | |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
41 | #include "notify.h" |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
42 | #include "plugin.h" |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
43 | #include "accountopt.h" |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
44 | #include "version.h" |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
45 | #include "cipher.h" /* for SHA-1 */ |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
46 | #include "util.h" /* for base64 */ |
|
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
47 | #include "debug.h" /* for purple_debug_info */ |
|
22434
3bc4a0a62c40
In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22433
diff
changeset
|
48 | #include "request.h" /* For dialogs used in setting the username */ |
|
17995
8ca08f4eface
Add msim_markup_to_html() to convert MySpaceIM-style markup to Purple-compatible
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17993
diff
changeset
|
49 | #include "xmlnode.h" |
|
19620
238f24594c04
Add msim_uri_handler() to handle myim: URLs, sendIM and addContact commands.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19619
diff
changeset
|
50 | #include "core.h" |
|
24628
3d165f76c461
A patch from Jaywalker to better handle conversations by user ID vs.
Richard Laager <rlaager@pidgin.im>
parents:
22436
diff
changeset
|
51 | #include "conversation.h" /* For late normalization */ |
|
17903
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
52 | |
|
17910
9bbfa75ba90b
(Incomplete - plugin does not load) Begin migrating protocol message receiving to MsimMessage.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17906
diff
changeset
|
53 | /* MySpaceIM includes */ |
|
19619
e9ac2df3fd1b
In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19618
diff
changeset
|
54 | #include "persist.h" |
|
17910
9bbfa75ba90b
(Incomplete - plugin does not load) Begin migrating protocol message receiving to MsimMessage.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17906
diff
changeset
|
55 | #include "message.h" |
|
19616
017838ce7393
In msimprpl, move zap-related code to a separate module.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19605
diff
changeset
|
56 | #include "session.h" |
|
017838ce7393
In msimprpl, move zap-related code to a separate module.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19605
diff
changeset
|
57 | #include "zap.h" |
|
19618
6c85c0b3b101
In msimprpl, move formatting functions to a markup module. It only exposes
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19616
diff
changeset
|
58 | #include "markup.h" |
|
19619
e9ac2df3fd1b
In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19618
diff
changeset
|
59 | #include "user.h" |
|
17910
9bbfa75ba90b
(Incomplete - plugin does not load) Begin migrating protocol message receiving to MsimMessage.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17906
diff
changeset
|
60 | |
|
17892
66984c1aac79
Re-add RC4 code from Samba, whose use is enabled by not defining
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17890
diff
changeset
|
61 | /* Conditional compilation options */ |
|
18064
527bea0f11ab
Disable sending third-party client version to oncoming buddies.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18061
diff
changeset
|
62 | /* Send third-party client version? (Recognized by us and Miranda's plugin) */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
63 | /*#define MSIM_SEND_CLIENT_VERSION */ |
|
17892
66984c1aac79
Re-add RC4 code from Samba, whose use is enabled by not defining
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17890
diff
changeset
|
64 | |
|
66984c1aac79
Re-add RC4 code from Samba, whose use is enabled by not defining
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17890
diff
changeset
|
65 | /* Debugging options */ |
|
16335
0c2b32acc27a
Replace printf() in MySpaceIM prpl with purple_debug_info().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
16333
diff
changeset
|
66 | /* Low-level and rarely needed */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
67 | /*#define MSIM_DEBUG_PARSE */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
68 | /*#define MSIM_DEBUG_LOGIN_CHALLENGE*/ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
69 | /*#define MSIM_DEBUG_RXBUF */ |
|
17892
66984c1aac79
Re-add RC4 code from Samba, whose use is enabled by not defining
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17890
diff
changeset
|
70 | |
|
25197
077b4d6fc595
No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents:
24672
diff
changeset
|
71 | /* Encode unknown HTML tags from IM clients in messages as [tag], instead of |
|
20166
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
19913
diff
changeset
|
72 | * ignoring. Useful for debugging */ |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
19913
diff
changeset
|
73 | /*#define MSIM_MARKUP_SHOW_UNKNOWN_TAGS */ |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
19913
diff
changeset
|
74 | |
|
17984
9a53a8583bba
Add msim_unrecognized() to handle unhandled messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17982
diff
changeset
|
75 | /* Define to cause init_plugin() to run some tests and print |
|
25197
077b4d6fc595
No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents:
24672
diff
changeset
|
76 | * the results to the Purple debug log, then exit. Useful to |
|
17984
9a53a8583bba
Add msim_unrecognized() to handle unhandled messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17982
diff
changeset
|
77 | * run with 'pidgin -d' to see the output. Don't define if |
|
9a53a8583bba
Add msim_unrecognized() to handle unhandled messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17982
diff
changeset
|
78 | * you want to actually use the plugin! */ |
|
19160
b22fa2dbfe05
Re-enable non-test mode. This revision now correctly handles links with paths.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19159
diff
changeset
|
79 | /*#define MSIM_SELF_TEST */ |
|
17984
9a53a8583bba
Add msim_unrecognized() to handle unhandled messages.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17982
diff
changeset
|
80 | |
|
17892
66984c1aac79
Re-add RC4 code from Samba, whose use is enabled by not defining
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17890
diff
changeset
|
81 | /* Constants */ |
|
16335
0c2b32acc27a
Replace printf() in MySpaceIM prpl with purple_debug_info().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
16333
diff
changeset
|
82 | |
|
18017
48384af36ad9
Increase password length limit to 10 and update changes file.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18016
diff
changeset
|
83 | /* Maximum length of a password that is acceptable. This is the limit |
|
48384af36ad9
Increase password length limit to 10 and update changes file.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18016
diff
changeset
|
84 | * on the official client (build 679) and on the 'new password' field at |
|
48384af36ad9
Increase password length limit to 10 and update changes file.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18016
diff
changeset
|
85 | * http://settings.myspace.com/index.cfm?fuseaction=user.changepassword |
|
48384af36ad9
Increase password length limit to 10 and update changes file.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18016
diff
changeset
|
86 | * (though curiously, not on the 'current password' field). */ |
|
19510
1917495b301e
No longer check the length of passwords - instead, pass the password to the
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19509
diff
changeset
|
87 | |
|
22393
b4f54ad21ffa
In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22290
diff
changeset
|
88 | /* After login fails, if password is greater than this many characters, |
|
b4f54ad21ffa
In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22290
diff
changeset
|
89 | * warn user that it may be too long. */ |
|
b4f54ad21ffa
In msimprpl, if login fails, and the user's password is greater than
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22290
diff
changeset
|
90 | #define MSIM_MAX_PASSWORD_LENGTH 10 |
|
17998
e739eb3e0567
Fail with our own error message if an entered password is greater than 8
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17995
diff
changeset
|
91 | |
|
22436
3483af12d74f
In msimprpl, add msim_is_valid_username() to check whether a username
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22434
diff
changeset
|
92 | /* Maximum length of usernames, when setting. */ |
|
3483af12d74f
In msimprpl, add msim_is_valid_username() to check whether a username
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22434
diff
changeset
|
93 | #define MSIM_MAX_USERNAME_LENGTH 25 |
|
17998
e739eb3e0567
Fail with our own error message if an entered password is greater than 8
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17995
diff
changeset
|
94 | |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
95 | /* Build version of MySpaceIM to report to servers (1.0.xxx.0) */ |
|
18057
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
96 | #define MSIM_CLIENT_VERSION 697 |
|
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
97 | |
|
19741
f6f0aff2ef68
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19739
diff
changeset
|
98 | /* Check for a newer official MySpaceIM client on startup? |
|
f6f0aff2ef68
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19739
diff
changeset
|
99 | * (Mostly useful for developers) */ |
|
f6f0aff2ef68
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19739
diff
changeset
|
100 | /*#define MSIM_CHECK_NEWER_VERSION*/ |
|
f6f0aff2ef68
If MSIM_CHECK_NEWER_VERSION is defined (off by default), run (incomplete)
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19739
diff
changeset
|
101 | |
|
18057
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
102 | /* Language codes from http://www.microsoft.com/globaldev/reference/oslocversion.mspx */ |
|
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
103 | #define MSIM_LANGUAGE_ID_ENGLISH 1033 |
|
77eb36712aca
Update login process to more closely match official client.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18056
diff
changeset
|
104 | #define MSIM_LANGUAGE_NAME_ENGLISH "ENGLISH" |
|
18043
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
105 | |
|
6c7ea1ce1beb
Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18042
diff
changeset
|
106 | /* msimprpl version string of this plugin */ |
|
19739
a0f9a1a37a5b
Update msimprpl to 0.18, targetting Pidgin/libpurple 2.2.0. msimprpl 0.17 was
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19738
diff
changeset
|
107 | #define MSIM_PRPL_VERSION_STRING "0.18" |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
108 | |
|
18020
f951defd22fd
Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18019
diff
changeset
|
109 | /* Default server */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
110 | #define MSIM_SERVER "im.myspace.akadns.net" |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
111 | #define MSIM_PORT 1863 /* TODO: alternate ports and automatic */ |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
112 | |
|
18020
f951defd22fd
Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18019
diff
changeset
|
113 | /* Time between keepalives (seconds) - if no data within this time, is dead. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
114 | #define MSIM_KEEPALIVE_INTERVAL (3 * 60) |
|
22434
3bc4a0a62c40
In msimprpl, change to patch from Jaywalker regarding setting
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22433
diff
changeset
|
115 | /*#define MSIM_USE_KEEPALIVE*/ |
|
18020
f951defd22fd
Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18019
diff
changeset
|
116 | |
|
26752
27fe5aa7cbd0
A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents:
25209
diff
changeset
|
117 | /* Time to check if alive (seconds) */ |
|
27fe5aa7cbd0
A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents:
25209
diff
changeset
|
118 | #define MSIM_KEEPALIVE_INTERVAL_CHECK 30 |
|
18020
f951defd22fd
Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18019
diff
changeset
|
119 | |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
120 | /* Time to check for new mail (milliseconds) */ |
|
25197
077b4d6fc595
No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents:
24672
diff
changeset
|
121 | #define MSIM_MAIL_INTERVAL_CHECK (60 * 1000) |
|
18037
038a99b09d35
Add msim_check_mail to check for new mail (called periodically), and
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18036
diff
changeset
|
122 | |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
123 | /* Constants */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
124 | #define HASH_SIZE 0x14 /**< Size of SHA-1 hash for login */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
125 | #define NONCE_SIZE 0x20 /**< Half of decoded 'nc' field */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
126 | #define MSIM_READ_BUF_SIZE (15 * 1024) /**< Receive buffer size */ |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
127 | #define MSIM_FINAL_STRING "\\final\\" /**< Message end marker */ |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
128 | |
|
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
129 | /* Messages */ |
|
27246
51c859a176a3
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents:
26752
diff
changeset
|
130 | #define MSIM_BM_DELAYABLE_ACTION_OR_IM 1 |
|
51c859a176a3
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents:
26752
diff
changeset
|
131 | #define MSIM_BM_STATUS 100 |
|
51c859a176a3
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents:
26752
diff
changeset
|
132 | #define MSIM_BM_INSTANT_ACTION_OR_IM 121 |
|
51c859a176a3
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents:
26752
diff
changeset
|
133 | #define MSIM_BM_MEDIA 122 |
|
51c859a176a3
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents:
26752
diff
changeset
|
134 | #define MSIM_BM_PROFILE 124 |
|
51c859a176a3
Change the way we parse messages on MySpace a little bit. This
Mark Doliner <markdoliner@pidgin.im>
parents:
26752
diff
changeset
|
135 | #define MSIM_BM_UNOFFICIAL_CLIENT 200 |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
136 | |
|
17901
ecaeb5f6e531
Replacement magic numbers by symbolic constants.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17899
diff
changeset
|
137 | /* Authentication algorithm for login2 */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
138 | #define MSIM_AUTH_ALGORITHM 196610 |
|
17901
ecaeb5f6e531
Replacement magic numbers by symbolic constants.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17899
diff
changeset
|
139 | |
|
18031
4ebc87fe43d9
Lowercase password before sending it. Closes #2066.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18028
diff
changeset
|
140 | /* Recognized challenge length */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
141 | #define MSIM_AUTH_CHALLENGE_LENGTH 0x40 |
|
18031
4ebc87fe43d9
Lowercase password before sending it. Closes #2066.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18028
diff
changeset
|
142 | |
|
17985
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
143 | /* TODO: obtain IPs of network interfaces from user's machine, instead of |
|
25197
077b4d6fc595
No functionality change--just cleanup.
Mark Doliner <markdoliner@pidgin.im>
parents:
24672
diff
changeset
|
144 | * hardcoding these values below (used in msim_compute_login_response). |
|
17985
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
145 | * This is not immediately |
|
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
146 | * important because you can still connect and perform basic |
|
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
147 | * functions of the protocol. There is also a high chance that the addreses |
|
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
148 | * are RFC1918 private, so the servers couldn't do anything with them |
|
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
149 | * anyways except make note of that fact. Probably important for any |
|
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
150 | * kind of direct connection, or file transfer functionality. |
|
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
151 | */ |
|
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
152 | |
|
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
153 | #define MSIM_LOGIN_IP_LIST "\x00\x00\x00\x00\x05\x7f\x00\x00\x01\x00\x00\x00\x00\x0a\x00\x00\x40\xc0\xa8\x58\x01\xc0\xa8\x3c\x01" |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
154 | #define MSIM_LOGIN_IP_LIST_LEN 25 |
|
17985
930a05d4e86f
Use constants for IP address list, defined in myspace.h.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17984
diff
changeset
|
155 | |
|
17933
03228b5c78b5
Show online buddies on buddy list as online.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17930
diff
changeset
|
156 | /* Indexes into status string (0|1|2|3|..., but 0 always empty) */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
157 | #define MSIM_STATUS_ORDINAL_EMPTY 0 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
158 | #define MSIM_STATUS_ORDINAL_UNKNOWNs 1 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
159 | #define MSIM_STATUS_ORDINAL_ONLINE 2 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
160 | #define MSIM_STATUS_ORDINAL_UNKNOWNss 3 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
161 | #define MSIM_STATUS_ORDINAL_HEADLINE 4 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
162 | #define MSIM_STATUS_ORDINAL_UNKNOWNls 5 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
163 | #define MSIM_STATUS_ORDINAL_UNKNOWN 6 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
164 | #define MSIM_STATUS_ORDINAL_UNKNOWN1 7 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
165 | #define MSIM_STATUS_ORDINAL_UNKNOWNp 8 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
166 | #define MSIM_STATUS_ORDINAL_UNKNOWN2 9 |
|
17933
03228b5c78b5
Show online buddies on buddy list as online.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17930
diff
changeset
|
167 | |
|
18007
d9fcb200fff6
Recognize online/away status of buddies on buddy list.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18003
diff
changeset
|
168 | /* Status codes - states a buddy (or you!) can be in. */ |
|
19149
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
169 | #define MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN 0 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
170 | #define MSIM_STATUS_CODE_ONLINE 1 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
171 | #define MSIM_STATUS_CODE_IDLE 2 |
|
b9e554509131
Change all code to better match the style of libpurple - use 8-space tabs
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19135
diff
changeset
|
172 | #define MSIM_STATUS_CODE_AWAY 5 |
|
18024
7059556f0804
General clean up and adding more error-checking.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18023
diff
changeset
|
173 | |
|
19640
48e64a5069da
On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19620
diff
changeset
|
174 | /* Inbox status bitfield values for MsimSession.inbox_status. */ |
|
18038
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
175 | #define MSIM_INBOX_MAIL (1 << 0) |
|
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
176 | #define MSIM_INBOX_BLOG_COMMENT (1 << 1) |
|
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
177 | #define MSIM_INBOX_PROFILE_COMMENT (1 << 2) |
|
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
178 | #define MSIM_INBOX_FRIEND_REQUEST (1 << 3) |
|
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
179 | #define MSIM_INBOX_PICTURE_COMMENT (1 << 4) |
|
4a904c0a564e
Notify of new inbox messages (friend requests, inbox messages, comments),
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
18037
diff
changeset
|
180 | |
|
19640
48e64a5069da
On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19620
diff
changeset
|
181 | /* Codes for msim_got_contact_list(), to tell what to do afterwards. */ |
|
48e64a5069da
On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19620
diff
changeset
|
182 | #define MSIM_CONTACT_LIST_INITIAL_FRIENDS 0 |
|
48e64a5069da
On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19620
diff
changeset
|
183 | #define MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS 1 |
|
48e64a5069da
On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19620
diff
changeset
|
184 | #define MSIM_CONTACT_LIST_IMPORT_TOP_FRIENDS 2 |
|
48e64a5069da
On login, get contacts from server using msim_get_contact_list().
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19620
diff
changeset
|
185 | |
|
22290
327e5fda255e
Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22228
diff
changeset
|
186 | /* Error codes */ |
|
327e5fda255e
Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22228
diff
changeset
|
187 | #define MSIM_ERROR_INCORRECT_PASSWORD 260 |
|
327e5fda255e
Clean up a few comments, changing from C++ style to C-style if needed, and add a
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22228
diff
changeset
|
188 | #define MSIM_ERROR_LOGGED_IN_ELSEWHERE 6 |
|
17911
8c54f28e3067
(Plugin loads, but cannot do anything useful)
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17910
diff
changeset
|
189 | |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
190 | /* Functions */ |
|
17903
1c344d9266b8
Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17902
diff
changeset
|
191 | gboolean msim_send_raw(MsimSession *session, const gchar *msg); |
|
16333
0fdea8ad21cb
Add MySpaceIM header file and reorganize functions.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
diff
changeset
|
192 | |
|
19616
017838ce7393
In msimprpl, move zap-related code to a separate module.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19605
diff
changeset
|
193 | gboolean msim_send_bm(MsimSession *session, const gchar *who, const gchar *text, int type); |
|
017838ce7393
In msimprpl, move zap-related code to a separate module.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19605
diff
changeset
|
194 | |
|
22433
41a60cb99e28
In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22393
diff
changeset
|
195 | gboolean msim_we_are_logged_on(MsimSession *session); |
|
41a60cb99e28
In msimprpl, if the user signs in without any username set (this will happen
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22393
diff
changeset
|
196 | |
|
19619
e9ac2df3fd1b
In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19618
diff
changeset
|
197 | void msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note); |
|
e9ac2df3fd1b
In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19618
diff
changeset
|
198 | guint msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb, gpointer data); |
|
e9ac2df3fd1b
In msimprpl, move user-related code to a new user module, and move other
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
19618
diff
changeset
|
199 | |
|
17902
8e0b1d066efb
Add partial implementation of MsimMessage (not used anywhere yet).
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
17901
diff
changeset
|
200 | #endif /* !_MYSPACE_MYSPACE_H */ |