annotate libpurple/protocols/myspace/myspace.h @ 17953:bde17299004b

Support unofficial bm code 200, also used by Miranda IM plugin, to report third-party client version. "Get Info" now shows unofficial client information, if available, and buddies coming online are sent this information so they can view it too. Official client version is not currently supported in the same manner.
author Jeffrey Connelly <jaconnel@calpoly.edu>
date Wed, 18 Jul 2007 06:09:32 +0000
parents 4001661344e4
children 016f9b2d6ee0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17343
58b4d103a5b8 Use symbolic constants for persist messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17337
diff changeset
1 /* MySpaceIM Protocol Plugin, header file
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
2 *
17923
d87916bd1d73 Fix email address.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17922
diff changeset
3 * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im>
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
4 *
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
5 * This program is free software; you can redistribute it and/or modify
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
6 * it under the terms of the GNU General Public License as published by
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
7 * the Free Software Foundation; either version 2 of the License, or
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
8 * (at your option) any later version.
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
9 *
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
10 * This program is distributed in the hope that it will be useful,
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
13 * GNU General Public License for more details.
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
14 *
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
16 * along with this program; if not, write to the Free Software
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
18 */
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
19
16746
52357f6392a4 Add partial implementation of MsimMessage (not used anywhere yet).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16745
diff changeset
20 #ifndef _MYSPACE_MYSPACE_H
52357f6392a4 Add partial implementation of MsimMessage (not used anywhere yet).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16745
diff changeset
21 #define _MYSPACE_MYSPACE_H
52357f6392a4 Add partial implementation of MsimMessage (not used anywhere yet).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16745
diff changeset
22
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
23 /* Other includes */
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
24 #include <string.h>
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
25 #include <errno.h> /* for EAGAIN */
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
26 #include <stdarg.h>
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
27
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
28 #include <glib.h>
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
29
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
30 #ifdef _WIN32
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
31 #include "win32dep.h"
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
32 #else
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
33 /* For recv() and send(); needed to match Win32 */
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
34 #include <sys/types.h>
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
35 #include <sys/socket.h>
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
36 #endif
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
37
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
38 #include "internal.h"
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
39
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
40 #include "notify.h"
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
41 #include "plugin.h"
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
42 #include "accountopt.h"
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
43 #include "version.h"
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
44 #include "cipher.h" /* for SHA-1 */
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
45 #include "util.h" /* for base64 */
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
46 #include "debug.h" /* for purple_debug_info */
17905
7b890c79aabf Add msim_markup_to_html() to convert MySpaceIM-style markup to Purple-compatible
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17903
diff changeset
47 #include "xmlnode.h"
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
48
17323
793301c04e3a (Incomplete - plugin does not load) Begin migrating protocol message receiving to MsimMessage.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16749
diff changeset
49 /* MySpaceIM includes */
793301c04e3a (Incomplete - plugin does not load) Begin migrating protocol message receiving to MsimMessage.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16749
diff changeset
50 #include "message.h"
793301c04e3a (Incomplete - plugin does not load) Begin migrating protocol message receiving to MsimMessage.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16749
diff changeset
51
16736
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
52 /* Conditional compilation options */
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
53
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
54 /* Debugging options */
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
55 #define MSIM_DEBUG_MSG
16408
bb649c52fc19 Replace printf() in MySpaceIM prpl with purple_debug_info().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16406
diff changeset
56 /* Low-level and rarely needed */
16736
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
57 /*#define MSIM_DEBUG_PARSE */
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
58 /*#define MSIM_DEBUG_LOGIN_CHALLENGE */
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
59 /*#define MSIM_DEBUG_RXBUF */
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
60
17894
333fe6ac1046 Add msim_unrecognized() to handle unhandled messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17892
diff changeset
61 /* Define to cause init_plugin() to run some tests and print
333fe6ac1046 Add msim_unrecognized() to handle unhandled messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17892
diff changeset
62 * the results to the Purple debug log, then exit. Useful to
333fe6ac1046 Add msim_unrecognized() to handle unhandled messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17892
diff changeset
63 * run with 'pidgin -d' to see the output. Don't define if
333fe6ac1046 Add msim_unrecognized() to handle unhandled messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17892
diff changeset
64 * you want to actually use the plugin! */
333fe6ac1046 Add msim_unrecognized() to handle unhandled messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17892
diff changeset
65 /*#define MSIM_SELF_TEST */
333fe6ac1046 Add msim_unrecognized() to handle unhandled messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17892
diff changeset
66
16736
58cd11fcd84f Re-add RC4 code from Samba, whose use is enabled by not defining
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16734
diff changeset
67 /* Constants */
16408
bb649c52fc19 Replace printf() in MySpaceIM prpl with purple_debug_info().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16406
diff changeset
68
17927
e440846f9a21 Increase password length limit to 10 and update changes file.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17926
diff changeset
69 /* Maximum length of a password that is acceptable. This is the limit
e440846f9a21 Increase password length limit to 10 and update changes file.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17926
diff changeset
70 * on the official client (build 679) and on the 'new password' field at
e440846f9a21 Increase password length limit to 10 and update changes file.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17926
diff changeset
71 * http://settings.myspace.com/index.cfm?fuseaction=user.changepassword
e440846f9a21 Increase password length limit to 10 and update changes file.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17926
diff changeset
72 * (though curiously, not on the 'current password' field). */
e440846f9a21 Increase password length limit to 10 and update changes file.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17926
diff changeset
73 #define MSIM_MAX_PASSWORD_LENGTH 10
17908
5c2720824798 Fail with our own error message if an entered password is greater than 8
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17905
diff changeset
74
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
75 /* Build version of MySpaceIM to report to servers (1.0.xxx.0) */
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
76 #define MSIM_CLIENT_VERSION 673
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
77
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
78 /* msimprpl version string of this plugin */
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
79 #define MSIM_PRPL_VERSION_STRING "0.12"
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
80
17930
d0c8b7748065 Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17929
diff changeset
81 /* Default server */
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
82 #define MSIM_SERVER "im.myspace.akadns.net"
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
83 #define MSIM_PORT 1863 /* TODO: alternate ports and automatic */
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
84
17930
d0c8b7748065 Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17929
diff changeset
85 /* Time between keepalives (seconds) - if no data within this time, is dead. */
17935
3aed9c8c6af7 Fix bug where string returned from msim_msg_get_string() is not a new
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17934
diff changeset
86 #define MSIM_KEEPALIVE_INTERVAL (3 * 60)
17930
d0c8b7748065 Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17929
diff changeset
87
d0c8b7748065 Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17929
diff changeset
88 /* Time to check if alive (milliseconds) */
17933
44de942bd762 Lower timeout to 2 minutes (to be closer to keepalive of 124 s).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17932
diff changeset
89 #define MSIM_KEEPALIVE_INTERVAL_CHECK (30 * 1000)
17930
d0c8b7748065 Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17929
diff changeset
90
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
91 /* Time to check for new mail (milliseconds) */
17949
81a1f0c60a8d Increase mail check interval to 1 minute.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17948
diff changeset
92 #define MSIM_MAIL_INTERVAL_CHECK (60 * 1000)
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
93
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
94
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
95 /* Constants */
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
96 #define HASH_SIZE 0x14 /**< Size of SHA-1 hash for login */
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
97 #define NONCE_SIZE 0x20 /**< Half of decoded 'nc' field */
17332
f3ec513efb59 Parenthesize 5 * 1024, in case the macro expansion occurs within a complex
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17326
diff changeset
98 #define MSIM_READ_BUF_SIZE (5 * 1024) /**< Receive buffer size */
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
99 #define MSIM_FINAL_STRING "\\final\\" /**< Message end marker */
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
100
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
101 /* Messages */
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
102 #define MSIM_BM_INSTANT 1
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
103 #define MSIM_BM_STATUS 100
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
104 #define MSIM_BM_ACTION 121
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
105 #define MSIM_BM_MEDIA 122
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
106 #define MSIM_BM_PROFILE 124
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
107 #define MSIM_BM_UNOFFICIAL_CLIENT 200
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
108
16745
3f53f8f502b2 Replacement magic numbers by symbolic constants.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16743
diff changeset
109 /* Authentication algorithm for login2 */
3f53f8f502b2 Replacement magic numbers by symbolic constants.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16743
diff changeset
110 #define MSIM_AUTH_ALGORITHM 196610
3f53f8f502b2 Replacement magic numbers by symbolic constants.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16743
diff changeset
111
17941
dcbb535e8d55 Lowercase password before sending it. Closes #2066.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17938
diff changeset
112 /* Recognized challenge length */
dcbb535e8d55 Lowercase password before sending it. Closes #2066.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17938
diff changeset
113 #define MSIM_AUTH_CHALLENGE_LENGTH 0x40
dcbb535e8d55 Lowercase password before sending it. Closes #2066.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17938
diff changeset
114
17895
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
115 /* TODO: obtain IPs of network interfaces from user's machine, instead of
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
116 * hardcoding these values below (used in msim_compute_login_response).
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
117 * This is not immediately
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
118 * important because you can still connect and perform basic
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
119 * functions of the protocol. There is also a high chance that the addreses
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
120 * are RFC1918 private, so the servers couldn't do anything with them
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
121 * anyways except make note of that fact. Probably important for any
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
122 * kind of direct connection, or file transfer functionality.
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
123 */
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
124
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
125 #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"
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
126 #define MSIM_LOGIN_IP_LIST_LEN 25
06d60201e371 Use constants for IP address list, defined in myspace.h.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17894
diff changeset
127
17346
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
128 /* Indexes into status string (0|1|2|3|..., but 0 always empty) */
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
129 #define MSIM_STATUS_ORDINAL_EMPTY 0
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
130 #define MSIM_STATUS_ORDINAL_UNKNOWNs 1
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
131 #define MSIM_STATUS_ORDINAL_ONLINE 2
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
132 #define MSIM_STATUS_ORDINAL_UNKNOWNss 3
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
133 #define MSIM_STATUS_ORDINAL_HEADLINE 4
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
134 #define MSIM_STATUS_ORDINAL_UNKNOWNls 5
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
135 #define MSIM_STATUS_ORDINAL_UNKNOWN 6
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
136 #define MSIM_STATUS_ORDINAL_UNKNOWN1 7
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
137 #define MSIM_STATUS_ORDINAL_UNKNOWNp 8
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
138 #define MSIM_STATUS_ORDINAL_UNKNOWN2 9
73720427b132 Show online buddies on buddy list as online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17343
diff changeset
139
17917
e24d44e3b6d2 Recognize online/away status of buddies on buddy list.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17913
diff changeset
140 /* Status codes - states a buddy (or you!) can be in. */
17923
d87916bd1d73 Fix email address.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17922
diff changeset
141 #define MSIM_STATUS_CODE_OFFLINE_OR_HIDDEN 0
17917
e24d44e3b6d2 Recognize online/away status of buddies on buddy list.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17913
diff changeset
142 #define MSIM_STATUS_CODE_ONLINE 1
17929
87b77f1ea086 Add support for idle.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17927
diff changeset
143 #define MSIM_STATUS_CODE_IDLE 2
17917
e24d44e3b6d2 Recognize online/away status of buddies on buddy list.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17913
diff changeset
144 #define MSIM_STATUS_CODE_AWAY 5
17934
b9fd55903979 General clean up and adding more error-checking.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17933
diff changeset
145
b9fd55903979 General clean up and adding more error-checking.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17933
diff changeset
146 /* Text formatting bits for <f s=#> */
b9fd55903979 General clean up and adding more error-checking.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17933
diff changeset
147 #define MSIM_TEXT_BOLD 1
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
148 #define MSIM_TEXT_ITALIC 2
17934
b9fd55903979 General clean up and adding more error-checking.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17933
diff changeset
149 #define MSIM_TEXT_UNDERLINE 4
17917
e24d44e3b6d2 Recognize online/away status of buddies on buddy list.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17913
diff changeset
150
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
151 /* Default baseline size of purple's fonts, in points. What is size 3 in points.
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
152 * _font_scale specifies scaling factor relative to this point size. Note this
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
153 * is only the default; it is configurable in account options. */
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
154 #define MSIM_BASE_FONT_POINT_SIZE 8
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
155
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
156 /* Default display's DPI. 96 is common but it can differ. Also configurable
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
157 * in account options. */
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
158 #define MSIM_DEFAULT_DPI 96
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
159
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
160
17326
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
161 /* Random number in every MsimSession, to ensure it is valid. */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
162 #define MSIM_SESSION_STRUCT_MAGIC 0xe4a6752b
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
163
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
164 /* Inbox status bitfield values for MsimSession.inbox_status */
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
165 #define MSIM_INBOX_MAIL (1 << 0)
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
166 #define MSIM_INBOX_BLOG_COMMENT (1 << 1)
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
167 #define MSIM_INBOX_PROFILE_COMMENT (1 << 2)
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
168 #define MSIM_INBOX_FRIEND_REQUEST (1 << 3)
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
169 #define MSIM_INBOX_PICTURE_COMMENT (1 << 4)
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
170
17326
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
171 /* Everything needed to keep track of a session. */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
172 typedef struct _MsimSession
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
173 {
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
174 guint magic; /**< MSIM_SESSION_STRUCT_MAGIC */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
175 PurpleAccount *account;
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
176 PurpleConnection *gc;
17354
c2208b64bffb Change MsimSession.sesskey to an integer (used to be a string), now that
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17353
diff changeset
177 guint sesskey; /**< Session key from server */
17373
2aff11bb5e72 Several small changes to work towards a working msim_remove_buddy():
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17372
diff changeset
178 guint userid; /**< This user's numeric user ID */
17913
7e4e3f6582d2 Add MSIM_FAKE_SELF_ONLINE preprocessor definition (which I define) to fake
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17908
diff changeset
179 gchar *username; /**< This user's unique username */
17326
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
180 gint fd; /**< File descriptor to/from server */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
181
17370
7a0061f4845d Add msim_uid2username_from_blist() to lookup a username by userid, by
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17366
diff changeset
182 /* TODO: Remove. */
17326
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
183 GHashTable *user_lookup_cb; /**< Username -> userid lookup callback */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
184 GHashTable *user_lookup_cb_data; /**< Username -> userid lookup callback data */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
185
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
186 gchar *rxbuf; /**< Receive buffer */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
187 guint rxoff; /**< Receive buffer offset */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
188 guint next_rid; /**< Next request/response ID */
17930
d0c8b7748065 Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17929
diff changeset
189 time_t last_comm; /**< Time received last communication */
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
190 guint inbox_status; /**< Bit field of inbox notifications */
17326
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
191 } MsimSession;
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
192
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
193 /* Check if an MsimSession is valid */
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
194 #define MSIM_SESSION_VALID(s) (session != NULL && \
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
195 session->magic == MSIM_SESSION_STRUCT_MAGIC)
57bde8784308 (Plugin loads, but cannot do anything useful)
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17323
diff changeset
196
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
197 /* Callback function pointer type for when a user's information is received,
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
198 * initiated from a user lookup. */
17337
d3e17c9d16e9 Use MsimMessage for receiving messages everywhere, instead of GHashTable.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17332
diff changeset
199 typedef void (*MSIM_USER_LOOKUP_CB)(MsimSession *session, MsimMessage *userinfo,
17357
176b1ba4bafe Remove 'flags' from send_im_cb_struct - it was never needed.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17354
diff changeset
200 gpointer data);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
201
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
202 /* Functions */
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
203 gboolean msim_load(PurplePlugin *plugin);
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
204 GList *msim_status_types(PurpleAccount *acct);
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
205 const gchar *msim_list_icon(PurpleAccount *acct, PurpleBuddy *buddy);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
206
16746
52357f6392a4 Add partial implementation of MsimMessage (not used anywhere yet).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16745
diff changeset
207 /* TODO: move these three functions to message.c/h */
17892
9cb771adbdea Refactor msim_escape() & msim_unescape().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17891
diff changeset
208 gchar *msim_unescape_or_escape(gchar *msg, gboolean escape);
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
209 gchar *msim_unescape(const gchar *msg);
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
210 gchar *msim_escape(const gchar *msg);
16749
0fa4a3e9b318 Stylistic improvements - use type *name instead of type* name for pointers
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16748
diff changeset
211 gchar *str_replace(const gchar *str, const gchar *old, const gchar *new);
16746
52357f6392a4 Add partial implementation of MsimMessage (not used anywhere yet).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16745
diff changeset
212
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
213 void print_hash_item(gpointer key, gpointer value, gpointer user_data);
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
214 gboolean msim_send_raw(MsimSession *session, const gchar *msg);
17903
cbda7f26d27d Add a send_raw function, msim_send_really_raw, into the prpl_info struct,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17899
diff changeset
215 int msim_send_really_raw(PurpleConnection *gc, const char *buf,int total_bytes);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
216
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
217 void msim_login(PurpleAccount *acct);
17348
d8903e1320a9 Previously, the return value of the processing function and msim_process() told
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17347
diff changeset
218 gboolean msim_login_challenge(MsimSession *session, MsimMessage *msg);
17383
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
219 const gchar *msim_compute_login_response(const gchar nonce[2 * NONCE_SIZE],
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
220 const gchar *email, const gchar *password, guint *response_len);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
221
17347
aa8e70fa1edc Add, but do not use, incomplete functions for using typing notifications.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17346
diff changeset
222
17383
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
223 int msim_send_im(PurpleConnection *gc, const gchar *who, const gchar *message,
17357
176b1ba4bafe Remove 'flags' from send_im_cb_struct - it was never needed.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17354
diff changeset
224 PurpleMessageFlags flags);
17383
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
225 gboolean msim_send_bm(MsimSession *session, const gchar *who, const gchar *text, int type);
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
226 guint msim_point_to_purple_size(MsimSession *session, guint point);
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
227 guint msim_purple_size_to_point(MsimSession *session, guint size);
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
228 guint msim_height_to_point(MsimSession *session, guint height);
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
229 guint msim_point_to_height(MsimSession *session, guint point);
17360
ceba4fc06c41 Change msim_send_im_by_userid_cb() to msim_send_im_cb(), and remove
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17357
diff changeset
230 void msim_send_im_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
17357
176b1ba4bafe Remove 'flags' from send_im_cb_struct - it was never needed.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17354
diff changeset
231
17894
333fe6ac1046 Add msim_unrecognized() to handle unhandled messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17892
diff changeset
232 void msim_unrecognized(MsimSession *session, MsimMessage *msg, gchar *note);
333fe6ac1046 Add msim_unrecognized() to handle unhandled messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17892
diff changeset
233
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
234
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
235 typedef void (*MSIM_XMLNODE_CONVERT)(MsimSession *, xmlnode *, gchar **, gchar **);
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
236 void msim_markup_tag_to_html(MsimSession *, xmlnode *root, gchar **begin, gchar **end);
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
237 void html_tag_to_msim_markup(MsimSession *, xmlnode *root, gchar **begin, gchar **end);
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
238 gchar *msim_convert_xml(MsimSession *, const gchar *raw, MSIM_XMLNODE_CONVERT f);
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
239
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
240 /* High-level msim markup <=> html conversion functions. */
17952
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
241 gchar *msim_markup_to_html(MsimSession *, const gchar *raw);
4001661344e4 Make DPI and base font point size configurable in account options. This
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17949
diff changeset
242 gchar *html_to_msim_markup(MsimSession *, const gchar *raw);
17938
13bba54b429d Support sending some formatted text in instant messages.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17935
diff changeset
243
17953
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
244 gboolean msim_incoming_bm(MsimSession *session, MsimMessage *msg);
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
245 gboolean msim_incoming_status(MsimSession *session, MsimMessage *msg);
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
246 gboolean msim_incoming_im(MsimSession *session, MsimMessage *msg);
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
247 gboolean msim_incoming_action(MsimSession *session, MsimMessage *msg);
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
248 gboolean msim_incoming_media(MsimSession *session, MsimMessage *msg);
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
249 gboolean msim_incoming_unofficial_client(MsimSession *session, MsimMessage *msg);
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
250
bde17299004b Support unofficial bm code 200, also used by Miranda IM plugin, to report
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17952
diff changeset
251 gboolean msim_send_unofficial_client(MsimSession *session, gchar *username);
17347
aa8e70fa1edc Add, but do not use, incomplete functions for using typing notifications.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17346
diff changeset
252
17383
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
253 unsigned int msim_send_typing(PurpleConnection *gc, const gchar *name, PurpleTypingState state);
17899
61f0b36b9891 Retrieve information for profile ("Get Info") from server, instead of from
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17896
diff changeset
254 void msim_get_info_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
17383
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
255 void msim_get_info(PurpleConnection *gc, const gchar *name);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
256
17922
608e4b47dfae Allow setting status to away or online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17917
diff changeset
257 void msim_set_status(PurpleAccount *account, PurpleStatus *status);
17929
87b77f1ea086 Add support for idle.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17927
diff changeset
258 void msim_set_idle(PurpleConnection *gc, int time);
17944
c109b7f1c739 Allow setting status string messages. Known bug: custom status messages always
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17941
diff changeset
259 void msim_set_status_code(MsimSession *session, guint code, gchar *statstring);
17922
608e4b47dfae Allow setting status to away or online.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17917
diff changeset
260
17379
6fa345a01dd8 Show buddy information in tooltip text, and the display name for status text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17378
diff changeset
261 void msim_store_buddy_info_each(gpointer key, gpointer value, gpointer user_data);
6fa345a01dd8 Show buddy information in tooltip text, and the display name for status text.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17378
diff changeset
262 gboolean msim_store_buddy_info(MsimSession *session, MsimMessage *msg);
17348
d8903e1320a9 Previously, the return value of the processing function and msim_process() told
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17347
diff changeset
263 gboolean msim_process_reply(MsimSession *session, MsimMessage *msg);
17363
3a02e7db91c7 Add message preprocessing in msim_preprocess_incoming(), to resolve
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17360
diff changeset
264
3a02e7db91c7 Add message preprocessing in msim_preprocess_incoming(), to resolve
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17360
diff changeset
265 gboolean msim_preprocess_incoming(MsimSession *session, MsimMessage *msg);
17366
25a55b52855a Add, but do not use, two new functions to postprocess outgoing messages
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17364
diff changeset
266
17930
d0c8b7748065 Add msim_check_alive(), called every MSIM_KEEPALIVE_INTERVAL_CHECK milliseconds,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17929
diff changeset
267 gboolean msim_check_alive(gpointer data);
17924
5e8c02259c81 Add option to sign on as hidden, or as not (previously, always signed on
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17923
diff changeset
268 gboolean msim_we_are_logged_on(MsimSession *session, MsimMessage *msg);
5e8c02259c81 Add option to sign on as hidden, or as not (previously, always signed on
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17923
diff changeset
269
17363
3a02e7db91c7 Add message preprocessing in msim_preprocess_incoming(), to resolve
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17360
diff changeset
270 gboolean msim_process(MsimSession *session, MsimMessage *msg);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
271
17383
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
272 MsimMessage *msim_do_postprocessing(MsimMessage *msg, const gchar *uid_field_name, const gchar *uid_before, guint uid);
17366
25a55b52855a Add, but do not use, two new functions to postprocess outgoing messages
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17364
diff changeset
273 void msim_postprocess_outgoing_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
17383
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
274 gboolean msim_postprocess_outgoing(MsimSession *session, MsimMessage *msg, const gchar *username,
f057837085b0 Change to use const gchar * where appropriate.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17382
diff changeset
275 const gchar *uid_field_name, const gchar *uid_before);
17366
25a55b52855a Add, but do not use, two new functions to postprocess outgoing messages
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17364
diff changeset
276
25a55b52855a Add, but do not use, two new functions to postprocess outgoing messages
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17364
diff changeset
277
17348
d8903e1320a9 Previously, the return value of the processing function and msim_process() told
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17347
diff changeset
278 gboolean msim_error(MsimSession *session, MsimMessage *msg);
17350
bfda36bd957a Add incomplete msim_add_buddy() implementation.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17348
diff changeset
279
bfda36bd957a Add incomplete msim_add_buddy() implementation.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17348
diff changeset
280 void msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
17353
1905859d7a3b Add (incomplete) msim_remove_buddy().
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17350
diff changeset
281 void msim_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
17350
bfda36bd957a Add incomplete msim_add_buddy() implementation.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17348
diff changeset
282
17381
df93e8773981 Add msim_offline_message() for offline message status. Always return TRUE,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17379
diff changeset
283 gboolean msim_offline_message(const PurpleBuddy *buddy);
df93e8773981 Add msim_offline_message() for offline message status. Always return TRUE,
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17379
diff changeset
284
17948
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
285 void msim_check_inbox_cb(MsimSession *session, MsimMessage *userinfo, gpointer data);
c23122e0af91 Notify of new inbox messages (friend requests, inbox messages, comments),
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17947
diff changeset
286 gboolean msim_check_inbox(gpointer data);
17947
ac7066ffa109 Add msim_check_mail to check for new mail (called periodically), and
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17946
diff changeset
287
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
288 void msim_input_cb(gpointer gc_uncasted, gint source,
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
289 PurpleInputCondition cond);
17373
2aff11bb5e72 Several small changes to work towards a working msim_remove_buddy():
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17372
diff changeset
290
2aff11bb5e72 Several small changes to work towards a working msim_remove_buddy():
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17372
diff changeset
291 guint msim_new_reply_callback(MsimSession *session, MSIM_USER_LOOKUP_CB cb, gpointer data);
2aff11bb5e72 Several small changes to work towards a working msim_remove_buddy():
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17372
diff changeset
292
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
293 void msim_connect_cb(gpointer data, gint source,
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
294 const gchar *error_message);
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
295
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
296 MsimSession *msim_session_new(PurpleAccount *acct);
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
297 void msim_session_destroy(MsimSession *session);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
298
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
299 void msim_close(PurpleConnection *gc);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
300
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
301 gboolean msim_is_userid(const gchar *user);
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
302 gboolean msim_is_email(const gchar *user);
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
303
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
304 void msim_lookup_user(MsimSession *session, const gchar *user,
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
305 MSIM_USER_LOOKUP_CB cb, gpointer data);
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
306
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
307 char *msim_status_text(PurpleBuddy *buddy);
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
308 void msim_tooltip_text(PurpleBuddy *buddy,
16406
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
309 PurpleNotifyUserInfo *user_info, gboolean full);
8063f163f411 Add MySpaceIM header file and reorganize functions.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
diff changeset
310
17905
7b890c79aabf Add msim_markup_to_html() to convert MySpaceIM-style markup to Purple-compatible
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17903
diff changeset
311 #ifdef MSIM_SELF_TEST
7b890c79aabf Add msim_markup_to_html() to convert MySpaceIM-style markup to Purple-compatible
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17903
diff changeset
312 void msim_test_all(void) __attribute__((__noreturn__));
7b890c79aabf Add msim_markup_to_html() to convert MySpaceIM-style markup to Purple-compatible
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17903
diff changeset
313 int msim_test_xml(void);
17891
23f57d36cb65 Add msim_test_all() and related procedures, to perform basic functionality
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17383
diff changeset
314 int msim_test_msg(void);
23f57d36cb65 Add msim_test_all() and related procedures, to perform basic functionality
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17383
diff changeset
315 int msim_test_escaping(void);
17905
7b890c79aabf Add msim_markup_to_html() to convert MySpaceIM-style markup to Purple-compatible
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17903
diff changeset
316 #endif
17891
23f57d36cb65 Add msim_test_all() and related procedures, to perform basic functionality
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 17383
diff changeset
317
16747
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
318 void init_plugin(PurplePlugin *plugin);
496855295bd7 Use MsimMessage via msim_send(), instead of msim_send_raw(). This is a more
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16746
diff changeset
319
16746
52357f6392a4 Add partial implementation of MsimMessage (not used anywhere yet).
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16745
diff changeset
320 #endif /* !_MYSPACE_MYSPACE_H */