Mercurial > pidgin.yaz
diff plugins/yay/libyahoo.h @ 1054:0b0b4cb53c17
[gaim-migrate @ 1064]
yahoo prpl
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Fri, 03 Nov 2000 10:03:53 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/yay/libyahoo.h Fri Nov 03 10:03:53 2000 +0000 @@ -0,0 +1,284 @@ +#ifndef LIBYAHOO_H +#define LIBYAHOO_H + +/* Service constants */ +#define YAHOO_SERVICE_LOGON 1 +#define YAHOO_SERVICE_LOGOFF 2 +#define YAHOO_SERVICE_ISAWAY 3 +#define YAHOO_SERVICE_ISBACK 4 +#define YAHOO_SERVICE_IDLE 5 +#define YAHOO_SERVICE_MESSAGE 6 +#define YAHOO_SERVICE_IDACT 7 +#define YAHOO_SERVICE_IDDEACT 8 +#define YAHOO_SERVICE_MAILSTAT 9 +#define YAHOO_SERVICE_USERSTAT 10 +#define YAHOO_SERVICE_NEWMAIL 11 +#define YAHOO_SERVICE_CHATINVITE 12 +#define YAHOO_SERVICE_CALENDAR 13 +#define YAHOO_SERVICE_NEWPERSONALMAIL 14 +#define YAHOO_SERVICE_NEWCONTACT 15 +#define YAHOO_SERVICE_ADDIDENT 16 +#define YAHOO_SERVICE_ADDIGNORE 17 +#define YAHOO_SERVICE_PING 18 +#define YAHOO_SERVICE_GROUPRENAME 19 +#define YAHOO_SERVICE_SYSMESSAGE 20 +#define YAHOO_SERVICE_PASSTHROUGH2 22 +#define YAHOO_SERVICE_CONFINVITE 24 +#define YAHOO_SERVICE_CONFLOGON 25 +#define YAHOO_SERVICE_CONFDECLINE 26 +#define YAHOO_SERVICE_CONFLOGOFF 27 +#define YAHOO_SERVICE_CONFADDINVITE 28 +#define YAHOO_SERVICE_CONFMSG 29 +#define YAHOO_SERVICE_CHATLOGON 30 +#define YAHOO_SERVICE_CHATLOGOFF 31 +#define YAHOO_SERVICE_CHATMSG 32 +#define YAHOO_SERVICE_GAMELOGON 40 +#define YAHOO_SERVICE_GAMELOGOFF 41 +#define YAHOO_SERVICE_FILETRANSFER 70 + +/* Yahoo style/color directives */ +#define YAHOO_COLOR_BLACK "\033[30m" +#define YAHOO_COLOR_BLUE "\033[31m" +#define YAHOO_COLOR_LIGHTBLUE "\033[32m" +#define YAHOO_COLOR_GRAY "\033[33m" +#define YAHOO_COLOR_GREEN "\033[34m" +#define YAHOO_COLOR_PINK "\033[35m" +#define YAHOO_COLOR_PURPLE "\033[36m" +#define YAHOO_COLOR_ORANGE "\033[37m" +#define YAHOO_COLOR_RED "\033[38m" +#define YAHOO_COLOR_OLIVE "\033[39m" +#define YAHOO_STYLE_ITALICON "\033[2m" +#define YAHOO_STYLE_ITALICOFF "\033[x2m" +#define YAHOO_STYLE_BOLDON "\033[1m" +#define YAHOO_STYLE_BOLDOFF "\033[x1m" +#define YAHOO_STYLE_UNDERLINEON "\033[4m" +#define YAHOO_STYLE_UNDERLINEOFF "\033[x4m" +#define YAHOO_STYLE_URLON "\033[lm" +#define YAHOO_STYLE_URLOFF "\033[xlm" + +/* Message flags */ +#define YAHOO_MSGTYPE_ERROR -1 /* 0xFFFFFFFF */ +#define YAHOO_MSGTYPE_NONE 0 /* ok */ +#define YAHOO_MSGTYPE_NORMAL 1 /* notify */ +#define YAHOO_MSGTYPE_BOUNCE 2 /* not available */ +#define YAHOO_MSGTYPE_STATUS 4 /* user away */ +#define YAHOO_MSGTYPE_OFFLINE 5 +#define YAHOO_MSGTYPE_INVISIBLE 12 + +#define YAHOO_MSGTYPE_KNOWN_USER 1515563606 /* 0x5A55AA56 */ +#define YAHOO_MSGTYPE_UNKNOWN_USER 1515563605 /* 0x5A55AA55 */ + +#define YAHOO_CONF_LEVEL_0 0 + +/* Structure definitions */ + +enum phone { home = 0, work }; + +struct yahoo_address +{ + char *id; + char *firstname; + char *lastname; + char *emailnickname; + char *email; + char *workphone; + char *homephone; + enum phone primary_phone; + unsigned int entryid; +}; + +struct yahoo_context +{ + /* Input parameters from calling application */ + char *user; + char *password; + int connect_mode; /* connection mode */ + int proxy_port; + char *proxy_host; + + /* Semi-public */ + int sockfd; /* pager server socket */ + + /* IO buffer parameters */ + char *io_buf; /* Buffer for storing incoming packets */ + int io_buf_curlen; + int io_buf_maxlen; + + /* Cookie data */ + char *cookie; + char *login_cookie; + + /* Buddy list parameters */ + struct yahoo_buddy **buddies; /* list of groups and buddies */ + char **identities; /* list of identities */ + char *login_id; /* what id should be specified as the primary id */ + int mail; /* I think this indicates if user has a yahoo mail id */ + + /* Temporary to hold the magic id for outbound packets */ + unsigned int magic_id; + unsigned int connection_id; + unsigned int address_count; + struct yahoo_address *addresses; +}; + +struct yahoo_options +{ + int connect_mode; + + char *proxy_host; + int proxy_port; +}; + +struct yahoo_rawpacket +{ + char version[8]; /* 7 chars and trailing null */ + unsigned char len[4]; /* length - little endian */ + unsigned char service[4]; /* service - little endian */ + +/* 3 X 4bytes - host, port, ip_address */ +/* not sure what diff is between host and ip addr */ + unsigned char connection_id[4]; /* connection number - little endian */ + unsigned char magic_id[4]; /* magic number used for http session */ + unsigned char unknown1[4]; + + unsigned char msgtype[4]; + char nick1[36]; + char nick2[36]; + char content[1]; /* was zero, had problems with aix xlc */ +}; + +/* + * Structure for returning the status/flags/etc. of a particular id + */ +struct yahoo_idstatus +{ + char *id; + int status; + char *status_msg; + char *connection_id; + int in_pager; + int in_chat; + int in_game; /* not sure */ +}; + +/* + * Structure for returning a buddy entry + */ +struct yahoo_buddy +{ + char *group; /* member of what group */ + char *id; /* the buddy's id */ +}; + +/* + * Generic packet type for returning from the parse routine + * The fields in this packet are not all used and are defined + * so that a single type of packet can be returned from the parse routine + */ + +struct yahoo_packet +{ + /* Common info */ + int service; /* Service type */ + int connection_id; /* Connection ID */ + char *real_id; /* What ID is logged on */ + char *active_id; /* What ID is active */ + + /* Flags for the unknown portion of the data */ + unsigned int magic_id; + unsigned int unknown1; + unsigned int msgtype; /* flag for indicating/requesting msg type */ + + /* Status flag, I think used at login */ + int flag; /* Used at logon for success/alerts? */ + + /* Status entries */ + int idstatus_count; + struct yahoo_idstatus **idstatus; /* Array of status entries for id's */ + + /* Conferencing */ + char *conf_id; /* id for the conference */ + char *conf_host; /* who is hosting the conference */ + char *conf_user; /* single username ( used in */ + /* declined conference/ */ + /* addinvite / message / */ + /* logon / logoff ) */ + + char **conf_userlist; /* user list */ + char *conf_inviter; /* user who invited you */ + /* (conference addinvite) */ + + char *conf_msg; /* conference message */ + + int conf_type; /* text(0) or */ + /* voice(1) conference */ + + /* Mail status */ + int mail_status; + + /* Calendar data */ + char *cal_url; + int cal_type; + char *cal_timestamp; + char *cal_title; + char *cal_description; + + /* Chat invite data */ + char *chat_invite_content; + + /* Received message */ + char *msg_id; /* Originator of message */ + int msg_status; /* Status update from the message */ + char *msg_timestamp; /* Timestamp of offline message */ + char *msg; /* Content of message */ + + /* File transfer request */ + char *file_from; + char *file_flag; + char *file_url; + char *file_description; + int file_expires; + + /* Group names for renaming */ + char *group_old; /* Old group name */ + char *group_new; /* New group name */ +}; + +/* Misc contants */ +#define YAHOO_PACKET_HEADER_SIZE 104 /* size of a standard header */ + +/* Status codes */ +struct yahoo_idlabel +{ + int id; + char *label; +}; + +/* Constants for connect mode selection */ +enum +{ + YAHOO_CONNECT_NORMAL, YAHOO_CONNECT_HTTP, YAHOO_CONNECT_HTTPPROXY, + YAHOO_CONNECT_SOCKS4, YAHOO_CONNECT_SOCKS5 +}; + +/* Constants for status codes */ +enum +{ + YAHOO_STATUS_AVAILABLE, + YAHOO_STATUS_BRB, + YAHOO_STATUS_BUSY, + YAHOO_STATUS_NOTATHOME, + YAHOO_STATUS_NOTATDESK, + YAHOO_STATUS_NOTINOFFICE, + YAHOO_STATUS_ONPHONE, + YAHOO_STATUS_ONVACATION, + YAHOO_STATUS_OUTTOLUNCH, + YAHOO_STATUS_STEPPEDOUT, + YAHOO_STATUS_INVISIBLE = 12, + YAHOO_STATUS_CUSTOM = 99, + YAHOO_STATUS_IDLE = 999 +}; + +/* Function prototypes */ +#include "libyahoo-proto.h" +#endif