Changeset 862371b for libfaim/aim.h
- Timestamp:
- Jun 29, 2003, 1:47:04 PM (21 years ago)
- Branches:
- master, barnowl_perlaim, debian, owl, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- e016fc2
- Parents:
- 03ad7b2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfaim/aim.h
r5e53c4a r862371b 12 12 #define FAIM_VERSION_MAJOR 0 13 13 #define FAIM_VERSION_MINOR 99 14 #define FAIM_VERSION_MINORMINOR 414 #define FAIM_VERSION_MINORMINOR 1 15 15 16 16 #include <faimconfig.h> … … 26 26 #include <time.h> 27 27 28 #ifdef _WIN32 29 #include <windows.h> 30 #include <io.h> 31 #else 28 #ifndef _WIN32 32 29 #include <sys/time.h> 33 30 #include <unistd.h> 34 31 #include <netinet/in.h> 35 32 #include <sys/socket.h> 33 #else 34 #include <winsock.h> 36 35 #endif 37 36 … … 42 41 typedef fu32_t aim_snacid_t; 43 42 typedef fu16_t flap_seqnum_t; 44 45 /* Portability stuff (DMP) */46 47 #ifdef _WIN3248 #define sleep(x) Sleep((x)*1000)49 #define snprintf _snprintf /* I'm not sure whats wrong with Microsoft here */50 #define close(x) closesocket(x) /* no comment */51 #endif52 43 53 44 #if defined(mach) && defined(__APPLE__) … … 147 138 }; 148 139 149 #define AIM_CLIENTINFO_KNOWNGOOD_3_5_1670 { \140 #define CLIENTINFO_AIM_3_5_1670 { \ 150 141 "AOL Instant Messenger (SM), version 3.5.1670/WIN32", \ 151 142 0x0004, \ … … 158 149 } 159 150 160 #define AIM_CLIENTINFO_KNOWNGOOD_4_1_2010 { \151 #define CLIENTINFO_AIM_4_1_2010 { \ 161 152 "AOL Instant Messenger (SM), version 4.1.2010/WIN32", \ 162 153 0x0004, \ … … 169 160 } 170 161 162 #define CLIENTINFO_AIM_5_0_2938 { \ 163 "AOL Instant Messenger, version 5.0.2938/WIN32", \ 164 0x0109, \ 165 0x0005, \ 166 0x0000, \ 167 0x0000, \ 168 0x0b7a, \ 169 "us", \ 170 "en", \ 171 } 172 173 #define CLIENTINFO_ICQ_4_65_3281 { \ 174 "ICQ Inc. - Product of ICQ (TM) 2000b.4.65.1.3281.85", \ 175 0x010a, \ 176 0x0004, \ 177 0x0041, \ 178 0x0001, \ 179 0x0cd1, \ 180 "us", \ 181 "en", \ 182 } 183 184 #define CLIENTINFO_ICQ_5_34_3728 { \ 185 "ICQ Inc. - Product of ICQ (TM).2002a.5.34.1.3728.85", \ 186 0x010a, \ 187 0x0005, \ 188 0x0022, \ 189 0x0001, \ 190 0x0e8f, \ 191 "us", \ 192 "en", \ 193 } 194 171 195 /* 172 196 * I would make 4.1.2010 the default, but they seem to have found … … 174 198 * 175 199 * 3.5.1670 should work fine, however, you will be subjected to the 176 * memory test, which may require you to have a WinAIM binary l aying200 * memory test, which may require you to have a WinAIM binary lying 177 201 * around. (see login.c::memrequest()) 178 202 */ 179 #define AIM_CLIENTINFO_KNOWNGOOD AIM_CLIENTINFO_KNOWNGOOD_3_5_1670 203 #define CLIENTINFO_AIM_KNOWNGOOD CLIENTINFO_AIM_3_5_1670 204 #define CLIENTINFO_ICQ_KNOWNGOOD CLIENTINFO_ICQ_4_65_3281 180 205 181 206 #ifndef TRUE … … 192 217 #define AIM_CONN_TYPE_CHAT 0x000e 193 218 #define AIM_CONN_TYPE_CHATNAV 0x000d 219 #define AIM_CONN_TYPE_SEARCH 0x000f 220 #define AIM_CONN_TYPE_EMAIL 0x0018 194 221 195 222 /* they start getting arbitrary in rendezvous stuff =) */ … … 250 277 typedef struct aim_bstream_s { 251 278 fu8_t *data; 252 fu 16_t len;253 fu 16_t offset;279 fu32_t len; 280 fu32_t offset; 254 281 } aim_bstream_t; 255 282 … … 262 289 } flap; 263 290 struct { 291 fu8_t magic[4]; /* ODC2 OFT2 */ 292 fu16_t hdrlen; 264 293 fu16_t type; 265 fu8_t magic[4]; /* ODC2 OFT2 */ 266 fu16_t hdr2len; 267 fu8_t *hdr2; /* rest of bloated header */ 268 } oft; 294 } rend; 269 295 } hdr; 270 296 aim_bstream_t data; /* payload stream */ … … 305 331 306 332 /* ---- Internal Use Only ------------------------ */ 333 334 /* Server-stored information (ssi) */ 335 struct { 336 int received_data; 337 fu16_t revision; 338 struct aim_ssi_item *items; 339 time_t timestamp; 340 int waiting_for_ack; 341 aim_frame_t *holding_queue; 342 } ssi; 343 344 struct aim_emailinfo *emailinfo; 307 345 308 346 /* Connection information */ … … 381 419 fu32_t membersince; /* time_t */ 382 420 fu32_t onlinesince; /* time_t */ 383 fu32_t sessionlen; /* in seconds */421 fu32_t sessionlen; /* in seconds */ 384 422 fu32_t capabilities; 385 423 struct { … … 459 497 /* TLV list handling. */ 460 498 faim_internal aim_tlvlist_t *aim_readtlvchain(aim_bstream_t *bs); 499 faim_internal aim_tlvlist_t *aim_readtlvchain_num(aim_bstream_t *bs, fu16_t num); 461 500 faim_internal void aim_freetlvchain(aim_tlvlist_t **list); 462 501 faim_internal aim_tlv_t *aim_gettlv(aim_tlvlist_t *, fu16_t t, const int n); … … 518 557 char *bosip; 519 558 fu8_t *cookie; 559 char *chpassurl; 520 560 struct aim_clientrelease latestrelease; 521 561 struct aim_clientrelease latestbeta; … … 574 614 faim_export aim_conn_t *aim_getconn_fd(aim_session_t *, int fd); 575 615 576 /* aim_misc.c */616 /* misc.c */ 577 617 578 618 #define AIM_VISIBILITYCHANGE_PERMITADD 0x05 … … 620 660 faim_export int aim_ads_requestads(aim_session_t *sess, aim_conn_t *conn); 621 661 622 /* aim_im.c */662 /* im.c */ 623 663 624 664 struct aim_fileheader_t { … … 657 697 }; 658 698 659 struct aim_filetransfer_priv { 660 char sn[MAXSNLEN]; 661 char cookie[8]; 662 char ip[30]; 663 int state; 664 struct aim_fileheader_t fh; 665 }; 699 #define AIM_OFT_SUBTYPE_SEND_FILE 0x0001 700 #define AIM_OFT_SUBTYPE_SEND_DIR 0x0002 701 #define AIM_OFT_SUBTYPE_GET_FILE 0x0011 702 #define AIM_OPT_SUBTYPE_GET_LIST 0x0012 666 703 667 704 struct aim_chat_roominfo { … … 683 720 #define AIM_IMFLAGS_MULTIPART 0x0400 /* ->mpmsg section valid */ 684 721 #define AIM_IMFLAGS_OFFLINE 0x0800 /* send to offline user */ 722 #define AIM_IMFLAGS_TYPINGNOT 0x1000 /* typing notification */ 685 723 686 724 /* … … 822 860 const char *rtfmsg; 823 861 } rtfmsg; 862 struct { 863 fu16_t subtype; 864 fu16_t totfiles; 865 fu32_t totsize; 866 char *filename; 867 } sendfile; 824 868 } info; 825 869 void *destructor; /* used internally only */ 870 }; 871 872 /* Valid values for channel 4 args->type */ 873 #define AIM_ICQMSG_AUTHREQUEST 0x0006 874 #define AIM_ICQMSG_AUTHDENIED 0x0007 875 #define AIM_ICQMSG_AUTHGRANTED 0x0008 876 877 struct aim_incomingim_ch4_args { 878 fu32_t uin; /* Of the sender of the ICBM */ 879 fu16_t type; 880 char *msg; /* Reason for auth request, deny, or accept */ 826 881 }; 827 882 … … 831 886 faim_export int aim_send_icon(aim_session_t *sess, const char *sn, const fu8_t *icon, int iconlen, time_t stamp, fu16_t iconsum); 832 887 faim_export fu16_t aim_iconsum(const fu8_t *buf, int buflen); 833 faim_export int aim_send_im_direct(aim_session_t *, aim_conn_t *, const char *msg); 888 faim_export int aim_send_typing(aim_session_t *sess, aim_conn_t *conn, int typing); 889 faim_export int aim_send_im_direct(aim_session_t *, aim_conn_t *, const char *msg, int len, int encoding); 834 890 faim_export const char *aim_directim_getsn(aim_conn_t *conn); 835 891 faim_export aim_conn_t *aim_directim_initiate(aim_session_t *, const char *destsn); 836 892 faim_export aim_conn_t *aim_directim_connect(aim_session_t *, const char *sn, const char *addr, const fu8_t *cookie); 837 893 838 faim_export aim_conn_t *aim_sendfile_initiate(aim_session_t *, const char *destsn, const char *filename, fu16_t numfiles, fu32_t totsize); 894 faim_export int aim_send_im_ch2_geticqmessage(aim_session_t *sess, const char *sn, int type); 895 faim_export aim_conn_t *aim_sendfile_initiate(aim_session_t *, const char *destsn, const char *filename, fu16_t numfiles, fu32_t totsize, char *cookret); 896 faim_export int aim_send_im_ch4(aim_session_t *sess, char *sn, fu16_t type, fu8_t *message); 897 898 faim_export int aim_mtn_send(aim_session_t *sess, fu16_t type1, char *sn, fu16_t type2); 839 899 840 900 faim_export aim_conn_t *aim_getfile_initiate(aim_session_t *sess, aim_conn_t *conn, const char *destsn); 841 901 faim_export int aim_oft_getfile_request(aim_session_t *sess, aim_conn_t *conn, const char *name, int size); 902 faim_export int aim_oft_sendfile_request(aim_session_t *sess, aim_conn_t *conn, 903 const char *name, int filesdone, int numfiles, int size, 904 int totsize); 842 905 faim_export int aim_oft_getfile_ack(aim_session_t *sess, aim_conn_t *conn); 843 faim_export int aim_oft_ getfile_end(aim_session_t *sess, aim_conn_t *conn);844 845 /* aim_info.c */906 faim_export int aim_oft_end(aim_session_t *sess, aim_conn_t *conn); 907 908 /* info.c */ 846 909 #define AIM_CAPS_BUDDYICON 0x00000001 847 910 #define AIM_CAPS_VOICE 0x00000002 … … 904 967 #define AIM_TRANSFER_DENY_NOTACCEPTING 0x0002 905 968 faim_export int aim_denytransfer(aim_session_t *sess, const char *sender, const char *cookie, unsigned short code); 906 faim_export aim_conn_t *aim_accepttransfer(aim_session_t *sess, aim_conn_t *conn, const char *sn, const fu8_t *cookie, const fu8_t *ip, fu16_t listingfiles, fu16_t listingtotsize, fu16_t listingsize, fu32_t listingchecksum, fu16_t rendid); 969 faim_export aim_conn_t *aim_accepttransfer(aim_session_t *sess, aim_conn_t *conn, const char *sn, const fu8_t *cookie, const fu8_t *ip, fu16_t port, fu16_t rendid, ...); 970 faim_export int aim_canceltransfer(aim_session_t *sess, aim_conn_t *conn, 971 const char *cookie, const char *sn, int rendid); 972 faim_export fu32_t aim_update_checksum(aim_session_t *sess, aim_conn_t *conn, 973 const unsigned char *buffer, int bufferlen); 907 974 908 975 faim_export int aim_getinfo(aim_session_t *, aim_conn_t *, const char *, unsigned short); … … 933 1000 934 1001 struct aim_icbmparameters { 935 unsigned short maxchan;936 unsigned longflags; /* AIM_IMPARAM_FLAG_ */937 unsigned short maxmsglen; /* message size that you will accept */938 unsigned short maxsenderwarn; /* this and below are *10 (999=99.9%) */939 unsigned short maxrecverwarn;940 unsigned longminmsginterval; /* in milliseconds? */1002 fu16_t maxchan; 1003 fu32_t flags; /* AIM_IMPARAM_FLAG_ */ 1004 fu16_t maxmsglen; /* message size that you will accept */ 1005 fu16_t maxsenderwarn; /* this and below are *10 (999=99.9%) */ 1006 fu16_t maxrecverwarn; 1007 fu32_t minmsginterval; /* in milliseconds? */ 941 1008 }; 942 1009 … … 954 1021 faim_export int aim_admin_setnick(aim_session_t *sess, aim_conn_t *conn, const char *newnick); 955 1022 956 /* aim_buddylist.c */1023 /* buddylist.c */ 957 1024 faim_export int aim_add_buddy(aim_session_t *, aim_conn_t *, const char *); 958 1025 faim_export int aim_remove_buddy(aim_session_t *, aim_conn_t *, const char *); 959 1026 960 /* aim_search.c */1027 /* search.c */ 961 1028 faim_export int aim_usersearch_address(aim_session_t *, aim_conn_t *, const char *); 1029 1030 /* newsearch.c */ 1031 struct aim_usersearch { 1032 char *first; 1033 char *last; 1034 char *middle; 1035 char *maiden; 1036 char *email; 1037 char *country; 1038 char *state; 1039 char *city; 1040 char *sn; 1041 char *interest; 1042 char *nick; 1043 char *zip; 1044 char *region; 1045 char *address; 1046 struct aim_usersearch *next; 1047 }; 1048 1049 faim_export int aim_usersearch_email(aim_session_t *, const char *, const char *); 1050 faim_export int aim_usersearch_name(aim_session_t *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *); 1051 faim_export int aim_usersearch_interest(aim_session_t *, const char *, const char *); 1052 962 1053 963 1054 /* These apply to exchanges as well. */ … … 995 1086 #define AIM_SSI_TYPE_BUDDY 0x0000 996 1087 #define AIM_SSI_TYPE_GROUP 0x0001 997 #define AIM_SSI_TYPE_PERMIT LIST0x0002998 #define AIM_SSI_TYPE_DENY LIST0x00031088 #define AIM_SSI_TYPE_PERMIT 0x0002 1089 #define AIM_SSI_TYPE_DENY 0x0003 999 1090 #define AIM_SSI_TYPE_PDINFO 0x0004 1000 1091 #define AIM_SSI_TYPE_PRESENCEPREFS 0x0005 … … 1009 1100 }; 1010 1101 1102 /* These build the actual SNACs and queue them to be sent */ 1011 1103 faim_export int aim_ssi_reqrights(aim_session_t *sess, aim_conn_t *conn); 1012 1104 faim_export int aim_ssi_reqdata(aim_session_t *sess, aim_conn_t *conn, time_t localstamp, fu16_t localrev); 1013 1105 faim_export int aim_ssi_enable(aim_session_t *sess, aim_conn_t *conn); 1106 faim_export int aim_ssi_addmoddel(aim_session_t *sess, aim_conn_t *conn, struct aim_ssi_item **items, unsigned int num, fu16_t subtype); 1014 1107 faim_export int aim_ssi_modbegin(aim_session_t *sess, aim_conn_t *conn); 1015 1108 faim_export int aim_ssi_modend(aim_session_t *sess, aim_conn_t *conn); 1109 1110 /* These handle the local variables */ 1111 faim_export struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, fu16_t gid, fu16_t bid); 1112 faim_export struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, fu16_t type); 1113 faim_export struct aim_ssi_item *aim_ssi_itemlist_findparent(struct aim_ssi_item *list, char *sn); 1114 faim_export int aim_ssi_getpermdeny(struct aim_ssi_item *list); 1115 faim_export fu32_t aim_ssi_getpresence(struct aim_ssi_item *list); 1116 faim_export int aim_ssi_cleanlist(aim_session_t *sess, aim_conn_t *conn); 1117 faim_export int aim_ssi_addbuddies(aim_session_t *sess, aim_conn_t *conn, const char *gn, const char **sn, unsigned int num); 1118 faim_export int aim_ssi_addmastergroup(aim_session_t *sess, aim_conn_t *conn); 1119 faim_export int aim_ssi_addgroups(aim_session_t *sess, aim_conn_t *conn, const char **gn, unsigned int num); 1120 faim_export int aim_ssi_addpord(aim_session_t *sess, aim_conn_t *conn, const char **sn, unsigned int num, fu16_t type); 1121 faim_export int aim_ssi_movebuddy(aim_session_t *sess, aim_conn_t *conn, const char *oldgn, const char *newgn, const char *sn); 1122 faim_export int aim_ssi_rename_group(aim_session_t *sess, aim_conn_t *conn, const char *oldgn, const char *newgn); 1123 faim_export int aim_ssi_delbuddies(aim_session_t *sess, aim_conn_t *conn, const char *gn, char **sn, unsigned int num); 1124 faim_export int aim_ssi_delmastergroup(aim_session_t *sess, aim_conn_t *conn); 1125 faim_export int aim_ssi_delgroups(aim_session_t *sess, aim_conn_t *conn, char **gn, unsigned int num); 1126 faim_export int aim_ssi_deletelist(aim_session_t *sess, aim_conn_t *conn); 1127 faim_export int aim_ssi_delpord(aim_session_t *sess, aim_conn_t *conn, const char **sn, unsigned int num, fu16_t type); 1128 faim_export int aim_ssi_setpermdeny(aim_session_t *sess, aim_conn_t *conn, fu8_t permdeny, fu32_t vismask); 1129 faim_export int aim_ssi_setpresence(aim_session_t *sess, aim_conn_t *conn, fu32_t presence); 1016 1130 1017 1131 struct aim_icq_offlinemsg { … … 1035 1149 faim_export int aim_icq_getsimpleinfo(aim_session_t *sess, const char *uin); 1036 1150 1037 /* aim_util.c */ 1151 /* email.c */ 1152 struct aim_emailinfo { 1153 fu8_t *cookie16; 1154 fu8_t *cookie8; 1155 char *url; 1156 fu16_t nummsgs; 1157 fu8_t unread; 1158 char *domain; 1159 fu16_t flag; 1160 struct aim_emailinfo *next; 1161 }; 1162 1163 faim_export int aim_email_sendcookies(aim_session_t *sess, aim_conn_t *conn); 1164 faim_export int aim_email_activate(aim_session_t *sess, aim_conn_t *conn); 1165 1166 /* util.c */ 1038 1167 /* 1039 1168 * These are really ugly. You'd think this was LISP. I wish it was. … … 1100 1229 faim_export char *aim_strsep(char **pp, const char *delim); 1101 1230 1102 /* aim_meta.c */1231 /* meta.c */ 1103 1232 faim_export char *aim_getbuilddate(void); 1104 1233 faim_export char *aim_getbuildtime(void);
Note: See TracChangeset
for help on using the changeset viewer.