1054
|
1 #ifndef LIBYAHOO_H
|
|
2 #define LIBYAHOO_H
|
|
3
|
|
4 /* Service constants */
|
|
5 #define YAHOO_SERVICE_LOGON 1
|
|
6 #define YAHOO_SERVICE_LOGOFF 2
|
|
7 #define YAHOO_SERVICE_ISAWAY 3
|
|
8 #define YAHOO_SERVICE_ISBACK 4
|
|
9 #define YAHOO_SERVICE_IDLE 5
|
|
10 #define YAHOO_SERVICE_MESSAGE 6
|
|
11 #define YAHOO_SERVICE_IDACT 7
|
|
12 #define YAHOO_SERVICE_IDDEACT 8
|
|
13 #define YAHOO_SERVICE_MAILSTAT 9
|
|
14 #define YAHOO_SERVICE_USERSTAT 10
|
|
15 #define YAHOO_SERVICE_NEWMAIL 11
|
|
16 #define YAHOO_SERVICE_CHATINVITE 12
|
|
17 #define YAHOO_SERVICE_CALENDAR 13
|
|
18 #define YAHOO_SERVICE_NEWPERSONALMAIL 14
|
|
19 #define YAHOO_SERVICE_NEWCONTACT 15
|
|
20 #define YAHOO_SERVICE_ADDIDENT 16
|
|
21 #define YAHOO_SERVICE_ADDIGNORE 17
|
|
22 #define YAHOO_SERVICE_PING 18
|
|
23 #define YAHOO_SERVICE_GROUPRENAME 19
|
|
24 #define YAHOO_SERVICE_SYSMESSAGE 20
|
|
25 #define YAHOO_SERVICE_PASSTHROUGH2 22
|
|
26 #define YAHOO_SERVICE_CONFINVITE 24
|
|
27 #define YAHOO_SERVICE_CONFLOGON 25
|
|
28 #define YAHOO_SERVICE_CONFDECLINE 26
|
|
29 #define YAHOO_SERVICE_CONFLOGOFF 27
|
|
30 #define YAHOO_SERVICE_CONFADDINVITE 28
|
|
31 #define YAHOO_SERVICE_CONFMSG 29
|
|
32 #define YAHOO_SERVICE_CHATLOGON 30
|
|
33 #define YAHOO_SERVICE_CHATLOGOFF 31
|
|
34 #define YAHOO_SERVICE_CHATMSG 32
|
|
35 #define YAHOO_SERVICE_GAMELOGON 40
|
|
36 #define YAHOO_SERVICE_GAMELOGOFF 41
|
|
37 #define YAHOO_SERVICE_FILETRANSFER 70
|
|
38
|
|
39 /* Yahoo style/color directives */
|
|
40 #define YAHOO_COLOR_BLACK "\033[30m"
|
|
41 #define YAHOO_COLOR_BLUE "\033[31m"
|
|
42 #define YAHOO_COLOR_LIGHTBLUE "\033[32m"
|
|
43 #define YAHOO_COLOR_GRAY "\033[33m"
|
|
44 #define YAHOO_COLOR_GREEN "\033[34m"
|
|
45 #define YAHOO_COLOR_PINK "\033[35m"
|
|
46 #define YAHOO_COLOR_PURPLE "\033[36m"
|
|
47 #define YAHOO_COLOR_ORANGE "\033[37m"
|
|
48 #define YAHOO_COLOR_RED "\033[38m"
|
|
49 #define YAHOO_COLOR_OLIVE "\033[39m"
|
|
50 #define YAHOO_STYLE_ITALICON "\033[2m"
|
|
51 #define YAHOO_STYLE_ITALICOFF "\033[x2m"
|
|
52 #define YAHOO_STYLE_BOLDON "\033[1m"
|
|
53 #define YAHOO_STYLE_BOLDOFF "\033[x1m"
|
|
54 #define YAHOO_STYLE_UNDERLINEON "\033[4m"
|
|
55 #define YAHOO_STYLE_UNDERLINEOFF "\033[x4m"
|
|
56 #define YAHOO_STYLE_URLON "\033[lm"
|
|
57 #define YAHOO_STYLE_URLOFF "\033[xlm"
|
|
58
|
|
59 /* Message flags */
|
|
60 #define YAHOO_MSGTYPE_ERROR -1 /* 0xFFFFFFFF */
|
|
61 #define YAHOO_MSGTYPE_NONE 0 /* ok */
|
|
62 #define YAHOO_MSGTYPE_NORMAL 1 /* notify */
|
|
63 #define YAHOO_MSGTYPE_BOUNCE 2 /* not available */
|
|
64 #define YAHOO_MSGTYPE_STATUS 4 /* user away */
|
|
65 #define YAHOO_MSGTYPE_OFFLINE 5
|
|
66 #define YAHOO_MSGTYPE_INVISIBLE 12
|
|
67
|
|
68 #define YAHOO_MSGTYPE_KNOWN_USER 1515563606 /* 0x5A55AA56 */
|
|
69 #define YAHOO_MSGTYPE_UNKNOWN_USER 1515563605 /* 0x5A55AA55 */
|
|
70
|
|
71 #define YAHOO_CONF_LEVEL_0 0
|
|
72
|
|
73 /* Structure definitions */
|
|
74
|
|
75 enum phone { home = 0, work };
|
|
76
|
|
77 struct yahoo_address
|
|
78 {
|
|
79 char *id;
|
|
80 char *firstname;
|
|
81 char *lastname;
|
|
82 char *emailnickname;
|
|
83 char *email;
|
|
84 char *workphone;
|
|
85 char *homephone;
|
|
86 enum phone primary_phone;
|
|
87 unsigned int entryid;
|
|
88 };
|
|
89
|
|
90 struct yahoo_context
|
|
91 {
|
|
92 /* Input parameters from calling application */
|
|
93 char *user;
|
|
94 char *password;
|
|
95 int connect_mode; /* connection mode */
|
|
96 int proxy_port;
|
|
97 char *proxy_host;
|
|
98
|
|
99 /* Semi-public */
|
|
100 int sockfd; /* pager server socket */
|
|
101
|
|
102 /* IO buffer parameters */
|
|
103 char *io_buf; /* Buffer for storing incoming packets */
|
|
104 int io_buf_curlen;
|
|
105 int io_buf_maxlen;
|
|
106
|
|
107 /* Cookie data */
|
|
108 char *cookie;
|
|
109 char *login_cookie;
|
|
110
|
|
111 /* Buddy list parameters */
|
|
112 struct yahoo_buddy **buddies; /* list of groups and buddies */
|
|
113 char **identities; /* list of identities */
|
|
114 char *login_id; /* what id should be specified as the primary id */
|
|
115 int mail; /* I think this indicates if user has a yahoo mail id */
|
|
116
|
|
117 /* Temporary to hold the magic id for outbound packets */
|
|
118 unsigned int magic_id;
|
|
119 unsigned int connection_id;
|
|
120 unsigned int address_count;
|
|
121 struct yahoo_address *addresses;
|
|
122 };
|
|
123
|
|
124 struct yahoo_options
|
|
125 {
|
|
126 int connect_mode;
|
|
127
|
|
128 char *proxy_host;
|
|
129 int proxy_port;
|
|
130 };
|
|
131
|
|
132 struct yahoo_rawpacket
|
|
133 {
|
|
134 char version[8]; /* 7 chars and trailing null */
|
|
135 unsigned char len[4]; /* length - little endian */
|
|
136 unsigned char service[4]; /* service - little endian */
|
|
137
|
|
138 /* 3 X 4bytes - host, port, ip_address */
|
|
139 /* not sure what diff is between host and ip addr */
|
|
140 unsigned char connection_id[4]; /* connection number - little endian */
|
|
141 unsigned char magic_id[4]; /* magic number used for http session */
|
|
142 unsigned char unknown1[4];
|
|
143
|
|
144 unsigned char msgtype[4];
|
|
145 char nick1[36];
|
|
146 char nick2[36];
|
|
147 char content[1]; /* was zero, had problems with aix xlc */
|
|
148 };
|
|
149
|
|
150 /*
|
|
151 * Structure for returning the status/flags/etc. of a particular id
|
|
152 */
|
|
153 struct yahoo_idstatus
|
|
154 {
|
|
155 char *id;
|
|
156 int status;
|
|
157 char *status_msg;
|
|
158 char *connection_id;
|
|
159 int in_pager;
|
|
160 int in_chat;
|
|
161 int in_game; /* not sure */
|
|
162 };
|
|
163
|
|
164 /*
|
|
165 * Structure for returning a buddy entry
|
|
166 */
|
|
167 struct yahoo_buddy
|
|
168 {
|
|
169 char *group; /* member of what group */
|
|
170 char *id; /* the buddy's id */
|
|
171 };
|
|
172
|
|
173 /*
|
|
174 * Generic packet type for returning from the parse routine
|
|
175 * The fields in this packet are not all used and are defined
|
|
176 * so that a single type of packet can be returned from the parse routine
|
|
177 */
|
|
178
|
|
179 struct yahoo_packet
|
|
180 {
|
|
181 /* Common info */
|
|
182 int service; /* Service type */
|
|
183 int connection_id; /* Connection ID */
|
|
184 char *real_id; /* What ID is logged on */
|
|
185 char *active_id; /* What ID is active */
|
|
186
|
|
187 /* Flags for the unknown portion of the data */
|
|
188 unsigned int magic_id;
|
|
189 unsigned int unknown1;
|
|
190 unsigned int msgtype; /* flag for indicating/requesting msg type */
|
|
191
|
|
192 /* Status flag, I think used at login */
|
|
193 int flag; /* Used at logon for success/alerts? */
|
|
194
|
|
195 /* Status entries */
|
|
196 int idstatus_count;
|
|
197 struct yahoo_idstatus **idstatus; /* Array of status entries for id's */
|
|
198
|
|
199 /* Conferencing */
|
|
200 char *conf_id; /* id for the conference */
|
|
201 char *conf_host; /* who is hosting the conference */
|
|
202 char *conf_user; /* single username ( used in */
|
|
203 /* declined conference/ */
|
|
204 /* addinvite / message / */
|
|
205 /* logon / logoff ) */
|
|
206
|
|
207 char **conf_userlist; /* user list */
|
|
208 char *conf_inviter; /* user who invited you */
|
|
209 /* (conference addinvite) */
|
|
210
|
|
211 char *conf_msg; /* conference message */
|
|
212
|
|
213 int conf_type; /* text(0) or */
|
|
214 /* voice(1) conference */
|
|
215
|
|
216 /* Mail status */
|
|
217 int mail_status;
|
|
218
|
|
219 /* Calendar data */
|
|
220 char *cal_url;
|
|
221 int cal_type;
|
|
222 char *cal_timestamp;
|
|
223 char *cal_title;
|
|
224 char *cal_description;
|
|
225
|
|
226 /* Chat invite data */
|
|
227 char *chat_invite_content;
|
|
228
|
|
229 /* Received message */
|
|
230 char *msg_id; /* Originator of message */
|
|
231 int msg_status; /* Status update from the message */
|
|
232 char *msg_timestamp; /* Timestamp of offline message */
|
|
233 char *msg; /* Content of message */
|
|
234
|
|
235 /* File transfer request */
|
|
236 char *file_from;
|
|
237 char *file_flag;
|
|
238 char *file_url;
|
|
239 char *file_description;
|
|
240 int file_expires;
|
|
241
|
|
242 /* Group names for renaming */
|
|
243 char *group_old; /* Old group name */
|
|
244 char *group_new; /* New group name */
|
|
245 };
|
|
246
|
|
247 /* Misc contants */
|
|
248 #define YAHOO_PACKET_HEADER_SIZE 104 /* size of a standard header */
|
|
249
|
|
250 /* Status codes */
|
|
251 struct yahoo_idlabel
|
|
252 {
|
|
253 int id;
|
|
254 char *label;
|
|
255 };
|
|
256
|
|
257 /* Constants for connect mode selection */
|
|
258 enum
|
|
259 {
|
|
260 YAHOO_CONNECT_NORMAL, YAHOO_CONNECT_HTTP, YAHOO_CONNECT_HTTPPROXY,
|
|
261 YAHOO_CONNECT_SOCKS4, YAHOO_CONNECT_SOCKS5
|
|
262 };
|
|
263
|
|
264 /* Constants for status codes */
|
|
265 enum
|
|
266 {
|
|
267 YAHOO_STATUS_AVAILABLE,
|
|
268 YAHOO_STATUS_BRB,
|
|
269 YAHOO_STATUS_BUSY,
|
|
270 YAHOO_STATUS_NOTATHOME,
|
|
271 YAHOO_STATUS_NOTATDESK,
|
|
272 YAHOO_STATUS_NOTINOFFICE,
|
|
273 YAHOO_STATUS_ONPHONE,
|
|
274 YAHOO_STATUS_ONVACATION,
|
|
275 YAHOO_STATUS_OUTTOLUNCH,
|
|
276 YAHOO_STATUS_STEPPEDOUT,
|
|
277 YAHOO_STATUS_INVISIBLE = 12,
|
|
278 YAHOO_STATUS_CUSTOM = 99,
|
|
279 YAHOO_STATUS_IDLE = 999
|
|
280 };
|
|
281
|
|
282 /* Function prototypes */
|
|
283 #include "libyahoo-proto.h"
|
|
284 #endif
|