libpurple/protocols/myspace/myspace.h

Thu, 04 Jun 2009 05:19:49 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Thu, 04 Jun 2009 05:19:49 +0000
changeset 27246
51c859a176a3
parent 26752
27fe5aa7cbd0
child 27377
fdb28b8d9ef4
permissions
-rw-r--r--

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
3238cfe8d879 Fix email address.
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 18012
diff changeset
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 */

mercurial