X-Git-Url: http://andersk.mit.edu/gitweb/libfaim.git/blobdiff_plain/225174938751264d2d11d880ca820a66961c694c..0589dc540706ddf1615d9085f2a68df227509ee6:/faim/aim.h diff --git a/faim/aim.h b/faim/aim.h index 46e2e8f..d1f3616 100644 --- a/faim/aim.h +++ b/faim/aim.h @@ -1,6 +1,9 @@ /* * Main libfaim header. Must be included in client for prototypes/macros. * + * "come on, i turned a chick lesbian; i think this is the hackish equivalent" + * -- Josh Meyer + * */ #ifndef __AIM_H__ @@ -139,22 +142,6 @@ #define AIM_MD5_STRING "AOL Instant Messenger (SM)" -/* - * Login info. Passes information from the Authorization - * stage of login to the service (BOS, etc) connection - * phase. - * - */ -struct aim_login_struct { - char screen_name[MAXSNLEN+1]; - char *BOSIP; - unsigned char cookie[AIM_COOKIELEN]; - char *email; - u_short regstatus; - char *errorurl; - u_short errorcode; -}; - /* * Client info. Filled in by the client and passed * in to aim_login(). The information ends up @@ -294,21 +281,24 @@ struct aim_session_t { /* ---- Client Accessible ------------------------ */ /* - * Login information. See definition above. + * Our screen name. * */ - struct aim_login_struct logininfo; + char sn[MAXSNLEN+1]; /* * Pointer to anything the client wants to * explicitly associate with this session. + * + * This is for use in the callbacks mainly. In any + * callback, you can access this with sess->aux_data. + * */ void *aux_data; /* * OFT Data */ - struct aim_oft_session_t oft; /* ---- Internal Use Only ------------------------ */ @@ -335,6 +325,7 @@ struct aim_session_t { * request and the resulting redirect.) */ char *pendingjoin; + unsigned short pendingjoinexchange; /* * Outstanding snac handling @@ -415,9 +406,13 @@ faim_internal struct aim_tlv_t *aim_grabtlv(u_char *src); faim_internal struct aim_tlv_t *aim_grabtlvstr(u_char *src); faim_internal struct aim_tlv_t *aim_gettlv(struct aim_tlvlist_t *, u_short, int); faim_internal char *aim_gettlv_str(struct aim_tlvlist_t *, u_short, int); +faim_internal unsigned char aim_gettlv8(struct aim_tlvlist_t *list, unsigned short type, int num); +faim_internal unsigned short aim_gettlv16(struct aim_tlvlist_t *list, unsigned short type, int num); +faim_internal unsigned long aim_gettlv32(struct aim_tlvlist_t *list, unsigned short type, int num); faim_internal int aim_puttlv (u_char *dest, struct aim_tlv_t *newtlv); faim_internal struct aim_tlv_t *aim_createtlv(void); faim_internal int aim_freetlv(struct aim_tlv_t **oldtlv); +faim_export int aim_puttlv_8(unsigned char *buf, unsigned short t, unsigned char v); faim_internal int aim_puttlv_16(u_char *, u_short, u_short); faim_internal int aim_puttlv_32(u_char *, u_short, u_long); faim_internal int aim_puttlv_str(u_char *buf, u_short t, int l, char *v); @@ -426,6 +421,7 @@ faim_internal int aim_addtlvtochain16(struct aim_tlvlist_t **list, unsigned shor faim_internal int aim_addtlvtochain32(struct aim_tlvlist_t **list, unsigned short type, unsigned long val); faim_internal int aim_addtlvtochain_str(struct aim_tlvlist_t **list, unsigned short type, char *str, int len); faim_internal int aim_addtlvtochain_caps(struct aim_tlvlist_t **list, unsigned short type, unsigned short caps); +faim_internal int aim_addtlvtochain_noval(struct aim_tlvlist_t **list, unsigned short type); faim_internal int aim_counttlvchain(struct aim_tlvlist_t **list); /* @@ -451,12 +447,13 @@ faim_internal unsigned long aim_genericreq_s(struct aim_session_t *, struct aim_ faim_internal struct aim_fileheader_t *aim_oft_getfh(unsigned char *hdr); faim_export int aim_oft_registerlisting(struct aim_session_t *sess, FILE *file, char* listingdir); faim_export int aim_getfile_send(struct aim_conn_t *conn, FILE *tosend, struct aim_fileheader_t *fh); +faim_export int aim_getfile_send_chunk(struct aim_conn_t *conn, FILE *tosend, struct aim_fileheader_t *fh, int pos, int bufsize); /* aim_login.c */ faim_export int aim_sendconnack(struct aim_session_t *sess, struct aim_conn_t *conn); faim_export int aim_request_login (struct aim_session_t *sess, struct aim_conn_t *conn, char *sn); faim_export int aim_send_login (struct aim_session_t *, struct aim_conn_t *, char *, char *, struct client_info_s *, char *key); -faim_export unsigned long aim_sendauthresp(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn, char *bosip, char *cookie, char *email, int regstatus); +faim_export unsigned long aim_sendauthresp(struct aim_session_t *sess, struct aim_conn_t *conn, char *sn, int errorcode, char *errorurl, char *bosip, char *cookie, char *email, int regstatus); faim_export int aim_gencookie(unsigned char *buf); faim_export int aim_sendserverready(struct aim_session_t *sess, struct aim_conn_t *conn); faim_internal int aim_authkeyparse(struct aim_session_t *sess, struct command_rx_struct *command); @@ -479,6 +476,9 @@ faim_internal unsigned int aim_get_next_txseqnum(struct aim_conn_t *); faim_export int aim_tx_flushqueue(struct aim_session_t *); faim_internal int aim_tx_printqueue(struct aim_session_t *); faim_export void aim_tx_purgequeue(struct aim_session_t *); +faim_internal int aim_parse_hostonline(struct aim_session_t *sess, struct command_rx_struct *command, ...); +faim_internal int aim_parse_hostversions(struct aim_session_t *sess, struct command_rx_struct *command, ...); + struct aim_rxcblist_t { u_short family; @@ -508,6 +508,7 @@ struct aim_snac_t { }; faim_internal void aim_initsnachash(struct aim_session_t *sess); faim_internal unsigned long aim_newsnac(struct aim_session_t *, struct aim_snac_t *newsnac); +faim_internal unsigned long aim_cachesnac(struct aim_session_t *sess, const unsigned short family, const unsigned short type, const unsigned short flags, const void *data, const int datalen); faim_internal struct aim_snac_t *aim_remsnac(struct aim_session_t *, u_long id); faim_internal int aim_cleansnacs(struct aim_session_t *, int maxage); faim_internal int aim_putsnac(u_char *, int, int, int, u_long); @@ -576,7 +577,13 @@ faim_internal int aim_parse_unknown(struct aim_session_t *, struct command_rx_st int aim_parse_last_bad(struct aim_session_t *, struct command_rx_struct *, ...); faim_internal int aim_parse_generalerrs(struct aim_session_t *, struct command_rx_struct *command, ...); faim_internal int aim_parsemotd_middle(struct aim_session_t *sess, struct command_rx_struct *command, ...); + +#define AIM_RATE_CODE_CHANGE 0x0001 +#define AIM_RATE_CODE_WARNING 0x0002 +#define AIM_RATE_CODE_LIMIT 0x0003 +#define AIM_RATE_CODE_CLEARLIMIT 0x0004 faim_internal int aim_parse_ratechange_middle(struct aim_session_t *sess, struct command_rx_struct *command); + faim_internal int aim_parse_evilnotify_middle(struct aim_session_t *sess, struct command_rx_struct *command); faim_internal int aim_parse_msgack_middle(struct aim_session_t *sess, struct command_rx_struct *command); @@ -613,8 +620,10 @@ faim_export struct aim_conn_t *aim_directim_connect(struct aim_session_t *, stru #define AIM_CAPS_CHAT 0x08 #define AIM_CAPS_GETFILE 0x10 #define AIM_CAPS_SENDFILE 0x20 +#define AIM_CAPS_GAMES 0x40 +#define AIM_CAPS_SAVESTOCKS 0x80 -extern u_char aim_caps[6][16]; +extern u_char aim_caps[8][16]; faim_internal unsigned short aim_getcap(unsigned char *capblock, int buflen); faim_internal int aim_putcap(unsigned char *capblock, int buflen, u_short caps);