📄 aim.h
字号:
/* Only used if AIM_IMFLAGS_CUSTOMCHARSET is set and mpmsg not used */ fu16_t charset; fu16_t charsubset;};/* * Arguments to aim_send_rtfmsg(). */struct aim_sendrtfmsg_args { const char *destsn; fu32_t fgcolor; fu32_t bgcolor; const char *rtfmsg; /* must be in RTF */};/* * This information is provided in the Incoming ICBM callback for * Channel 1 ICBM's. * * Note that although CUSTOMFEATURES and CUSTOMCHARSET say they * are optional, both are always set by the current libfaim code. * That may or may not change in the future. It is mainly for * consistency with aim_sendimext_args. * * Multipart messages require some explanation. If you want to use them, * I suggest you read all the comments in im.c. * */struct aim_incomingim_ch1_args { /* Always provided */ aim_mpmsg_t mpmsg; fu32_t icbmflags; /* some flags apply only to ->msg, not all mpmsg */ /* Only provided if message has a human-readable section */ char *msg; int msglen; /* Only provided if AIM_IMFLAGS_HASICON is set */ time_t iconstamp; fu32_t iconlen; fu16_t iconsum; /* Only provided if AIM_IMFLAGS_CUSTOMFEATURES is set */ fu8_t *features; fu8_t featureslen; /* Only provided if AIM_IMFLAGS_EXTDATA is set */ fu8_t extdatalen; fu8_t *extdata; /* Only used if AIM_IMFLAGS_CUSTOMCHARSET is set */ fu16_t charset; fu16_t charsubset;};/* Valid values for channel 2 args->status */#define AIM_RENDEZVOUS_PROPOSE 0x0000#define AIM_RENDEZVOUS_CANCEL 0x0001#define AIM_RENDEZVOUS_ACCEPT 0x0002struct aim_incomingim_ch2_args { fu16_t status; fu8_t cookie[8]; int reqclass; const char *proxyip; const char *clientip; const char *verifiedip; fu16_t port; fu16_t errorcode; const char *msg; /* invite message or file description */ fu16_t msglen; const char *encoding; const char *language; union { struct { fu32_t checksum; fu32_t length; time_t timestamp; fu8_t *icon; } icon; struct { struct aim_chat_roominfo roominfo; } chat; struct { fu16_t msgtype; fu32_t fgcolor; fu32_t bgcolor; const char *rtfmsg; } rtfmsg; struct { fu16_t subtype; fu16_t totfiles; fu32_t totsize; char *filename; } sendfile; } info; void *destructor; /* used internally only */};/* Valid values for channel 4 args->type */#define AIM_ICQMSG_AUTHREQUEST 0x0006#define AIM_ICQMSG_AUTHDENIED 0x0007#define AIM_ICQMSG_AUTHGRANTED 0x0008struct aim_incomingim_ch4_args { fu32_t uin; /* Of the sender of the ICBM */ fu8_t type; fu8_t flags; char *msg; /* Reason for auth request, deny, or accept */ int msglen;};/* SNAC sending functions *//* 0x0002 */ faim_export int aim_im_setparams(aim_session_t *sess, struct aim_icbmparameters *params);/* 0x0004 */ faim_export int aim_im_reqparams(aim_session_t *sess);/* 0x0006 */ faim_export int aim_im_sendch1_ext(aim_session_t *sess, struct aim_sendimext_args *args);/* 0x0006 */ faim_export int aim_im_sendch1(aim_session_t *, const char *destsn, fu16_t flags, const char *msg);/* 0x0006 */ faim_export int aim_im_sendch2_chatinvite(aim_session_t *sess, const char *sn, const char *msg, fu16_t exchange, const char *roomname, fu16_t instance);/* 0x0006 */ faim_export int aim_im_sendch2_icon(aim_session_t *sess, const char *sn, const fu8_t *icon, int iconlen, time_t stamp, fu16_t iconsum);/* 0x0006 */ faim_export int aim_im_sendch2_rtfmsg(aim_session_t *sess, struct aim_sendrtfmsg_args *args);/* 0x0006 */ faim_export int aim_im_sendch2_odcrequest(aim_session_t *sess, fu8_t *cookie, bool usecookie, const char *sn, const fu8_t *ip, fu16_t port);/* 0x0006 */ faim_export int aim_im_sendch2_sendfile_ask(aim_session_t *sess, struct aim_oft_info *oft_info);/* 0x0006 */ faim_export int aim_im_sendch2_sendfile_accept(aim_session_t *sess, struct aim_oft_info *info);/* 0x0006 */ faim_export int aim_im_sendch2_sendfile_cancel(aim_session_t *sess, struct aim_oft_info *oft_info);/* 0x0006 */ faim_export int aim_im_sendch2_geticqaway(aim_session_t *sess, const char *sn, int type);/* 0x0006 */ faim_export int aim_im_sendch4(aim_session_t *sess, char *sn, fu16_t type, fu8_t *message);/* 0x0008 */ faim_export int aim_im_warn(aim_session_t *sess, aim_conn_t *conn, const char *destsn, fu32_t flags);/* 0x000b */ faim_export int aim_im_denytransfer(aim_session_t *sess, const char *sender, const char *cookie, fu16_t code);/* 0x0014 */ faim_export int aim_im_sendmtn(aim_session_t *sess, fu16_t type1, const char *sn, fu16_t type2);/* ft.c */struct aim_fileheader_t {#if 0 char magic[4]; /* 0 */ fu16_t hdrlen; /* 4 */ fu16_t hdrtype; /* 6 */#endif char bcookie[8]; /* 8 */ fu16_t encrypt; /* 16 */ fu16_t compress; /* 18 */ fu16_t totfiles; /* 20 */ fu16_t filesleft; /* 22 */ fu16_t totparts; /* 24 */ fu16_t partsleft; /* 26 */ fu32_t totsize; /* 28 */ fu32_t size; /* 32 */ fu32_t modtime; /* 36 */ fu32_t checksum; /* 40 */ fu32_t rfrcsum; /* 44 */ fu32_t rfsize; /* 48 */ fu32_t cretime; /* 52 */ fu32_t rfcsum; /* 56 */ fu32_t nrecvd; /* 60 */ fu32_t recvcsum; /* 64 */ fu8_t idstring[32]; /* 68 */ fu8_t flags; /* 100 */ fu8_t lnameoffset; /* 101 */ fu8_t lsizeoffset; /* 102 */ char dummy[69]; /* 103 */ char macfileinfo[16]; /* 172 */ fu16_t nencode; /* 188 */ fu16_t nlanguage; /* 190 */ char name[64]; /* 192 */ /* 256 */};struct aim_oft_info { char cookie[8]; char *sn; char *proxyip; char *clientip; char *verifiedip; fu16_t port; aim_conn_t *conn; aim_session_t *sess; struct aim_fileheader_t fh; struct aim_oft_info *next;};faim_export fu32_t aim_oft_checksum_chunk(const fu8_t *buffer, int bufferlen, fu32_t prevcheck);faim_export fu32_t aim_oft_checksum_file(char *filename);faim_export int aim_handlerendconnect(aim_session_t *sess, aim_conn_t *cur);faim_export int aim_odc_send_typing(aim_session_t *sess, aim_conn_t *conn, int typing);faim_export int aim_odc_send_im(aim_session_t *sess, aim_conn_t *conn, const char *msg, int len, int encoding, int isawaymsg);faim_export const char *aim_odc_getsn(aim_conn_t *conn);faim_export const char *aim_odc_getcookie(aim_conn_t *conn);faim_export aim_conn_t *aim_odc_getconn(aim_session_t *sess, const char *sn);faim_export aim_conn_t *aim_odc_initiate(aim_session_t *sess, const char *sn, int listenfd, const fu8_t *localip, fu16_t port, const fu8_t *mycookie);faim_export aim_conn_t *aim_odc_connect(aim_session_t *sess, const char *sn, const char *addr, const fu8_t *cookie);faim_export struct aim_oft_info *aim_oft_createinfo(aim_session_t *sess, const fu8_t *cookie, const char *sn, const char *ip, fu16_t port, fu32_t size, fu32_t modtime, char *filename);faim_export int aim_oft_destroyinfo(struct aim_oft_info *oft_info);faim_export int aim_sendfile_listen(aim_session_t *sess, struct aim_oft_info *oft_info, int listenfd);faim_export int aim_oft_sendheader(aim_session_t *sess, fu16_t type, struct aim_oft_info *oft_info);/* 0x0002 - locate.c *//* * AIM User Info, Standard Form. */#define AIM_FLAG_UNCONFIRMED 0x0001 /* "damned transients" */#define AIM_FLAG_ADMINISTRATOR 0x0002#define AIM_FLAG_AOL 0x0004#define AIM_FLAG_OSCAR_PAY 0x0008#define AIM_FLAG_FREE 0x0010#define AIM_FLAG_AWAY 0x0020#define AIM_FLAG_ICQ 0x0040#define AIM_FLAG_WIRELESS 0x0080#define AIM_FLAG_UNKNOWN100 0x0100#define AIM_FLAG_UNKNOWN200 0x0200#define AIM_FLAG_ACTIVEBUDDY 0x0400#define AIM_FLAG_UNKNOWN800 0x0800#define AIM_FLAG_ABINTERNAL 0x1000#define AIM_FLAG_ALLUSERS 0x001f#define AIM_USERINFO_PRESENT_FLAGS 0x00000001#define AIM_USERINFO_PRESENT_MEMBERSINCE 0x00000002#define AIM_USERINFO_PRESENT_ONLINESINCE 0x00000004#define AIM_USERINFO_PRESENT_IDLE 0x00000008#define AIM_USERINFO_PRESENT_ICQEXTSTATUS 0x00000010#define AIM_USERINFO_PRESENT_ICQIPADDR 0x00000020#define AIM_USERINFO_PRESENT_ICQDATA 0x00000040#define AIM_USERINFO_PRESENT_CAPABILITIES 0x00000080#define AIM_USERINFO_PRESENT_SESSIONLEN 0x00000100#define AIM_USERINFO_PRESENT_CREATETIME 0x00000200struct userinfo_node { char *sn; struct userinfo_node *next;};typedef struct aim_userinfo_s { char *sn; fu16_t warnlevel; /* evil percent * 10 (999 = 99.9%) */ fu16_t idletime; /* in seconds */ fu16_t flags; fu32_t createtime; /* time_t */ fu32_t membersince; /* time_t */ fu32_t onlinesince; /* time_t */ fu32_t sessionlen; /* in seconds */ fu32_t capabilities; struct { fu32_t status; fu32_t ipaddr; fu8_t crap[0x25]; /* until we figure it out... */ } icqinfo; fu32_t present; fu16_t iconcsumlen; fu8_t *iconcsum; char *info; char *info_encoding; fu16_t info_len; char *avail; char *avail_encoding; fu16_t avail_len; char *away; char *away_encoding; fu16_t away_len; struct aim_userinfo_s *next;} aim_userinfo_t;#define AIM_CAPS_BUDDYICON 0x00000001#define AIM_CAPS_TALK 0x00000002#define AIM_CAPS_DIRECTIM 0x00000004#define AIM_CAPS_CHAT 0x00000008#define AIM_CAPS_GETFILE 0x00000010#define AIM_CAPS_SENDFILE 0x00000020#define AIM_CAPS_GAMES 0x00000040#define AIM_CAPS_ADDINS 0x00000080#define AIM_CAPS_SENDBUDDYLIST 0x00000100#define AIM_CAPS_GAMES2 0x00000200#define AIM_CAPS_ICQ_DIRECT 0x00000400#define AIM_CAPS_APINFO 0x00000800#define AIM_CAPS_ICQRTF 0x00001000#define AIM_CAPS_EMPTY 0x00002000#define AIM_CAPS_ICQSERVERRELAY 0x00004000#define AIM_CAPS_ICQUTF8OLD 0x00008000#define AIM_CAPS_TRILLIANCRYPT 0x00010000#define AIM_CAPS_ICQUTF8 0x00020000#define AIM_CAPS_INTEROPERATE 0x00040000#define AIM_CAPS_ICHAT 0x00080000#define AIM_CAPS_HIPTOP 0x00100000#define AIM_CAPS_SECUREIM 0x00200000#define AIM_CAPS_SMS 0x00400000#define AIM_CAPS_GENERICUNKNOWN 0x00800000#define AIM_CAPS_VIDEO 0x01000000#define AIM_CAPS_ICHATAV 0x02000000#define AIM_CAPS_LIVEVIDEO 0x04000000#define AIM_CAPS_CAMERA 0x08000000#define AIM_CAPS_LAST 0x10000000#define AIM_SENDMEMBLOCK_FLAG_ISREQUEST 0#define AIM_SENDMEMBLOCK_FLAG_ISHASH 1faim_export int aim_sendmemblock(aim_session_t *sess, aim_conn_t *conn, fu32_t offset, fu32_t len, const fu8_t *buf, fu8_t flag);struct aim_invite_priv { char *sn; char *roomname; fu16_t exchange; fu16_t instance;};#define AIM_COOKIETYPE_UNKNOWN 0x00#define AIM_COOKIETYPE_ICBM 0x01#define AIM_COOKIETYPE_ADS 0x02#define AIM_COOKIETYPE_BOS 0x03#define AIM_COOKIETYPE_IM 0x04#define AIM_COOKIETYPE_CHAT 0x05#define AIM_COOKIETYPE_CHATNAV 0x06#define AIM_COOKIETYPE_INVITE 0x07/* we'll move OFT up a bit to give breathing room. not like it really * matters. */#define AIM_COOKIETYPE_OFTIM 0x10#define AIM_COOKIETYPE_OFTGET 0x11#define AIM_COOKIETYPE_OFTSEND 0x12#define AIM_COOKIETYPE_OFTVOICE 0x13#define AIM_COOKIETYPE_OFTIMAGE 0x14#define AIM_COOKIETYPE_OFTICON 0x15faim_export aim_userinfo_t *aim_locate_finduserinfo(aim_session_t *sess, const char *sn);faim_export void aim_locate_dorequest(aim_session_t *sess);/* 0x0002 */ faim_export int aim_locate_reqrights(aim_session_t *sess);/* 0x0004 */ faim_export int aim_locate_setprofile(aim_session_t *sess, const char *profile_encoding, const char *profile, const int profile_len, const char *awaymsg_encoding, const char *awaymsg, const int awaymsg_len);/* 0x0004 */ faim_export int aim_locate_setcaps(aim_session_t *sess, fu32_t caps);/* 0x0005 */ faim_export int aim_locate_getinfo(aim_session_t *sess, const char *, fu16_t);/* 0x0009 */ faim_export int aim_locate_setdirinfo(aim_session_t *sess, const char *first, const char *middle, const char *last, const char *maiden, const char *nickname, const char *street, const char *city, const char *state, const char *zip, int country, fu16_t privacy);/* 0x000b */ faim_export int aim_locate_000b(aim_session_t *sess, const char *sn);/* 0x000f */ faim_export int aim_locate_setinterests(aim_session_t *sess, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, fu16_t privacy);/* 0x0015 */ faim_export int aim_locate_getinfoshort(aim_session_t *sess, const char *sn, fu32_t flags);/* 0x0003 - buddylist.c *//* 0x0002 */ faim_export int aim_buddylist_reqrights(aim_session_t *, aim_conn_t *);/* 0x0004 */ faim_export int aim_buddylist_set(aim_session_t *, aim_conn_t *, const char *);/* 0x0004 */ faim_export int aim_buddylist_addbuddy(aim_session_t *, aim_conn_t *, const char *);/* 0x0005 */ faim_export int aim_buddylist_removebuddy(aim_session_t *, aim_conn_t *, const char *);/* 0x000b */ faim_export int aim_buddylist_oncoming(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *info);/* 0x000c */ faim_export int aim_buddylist_offgoing(aim_session_t *sess, aim_conn_t *conn, const char *sn);/* 0x000a - search.c */faim_export int aim_search_address(aim_session_t *, aim_conn_t *, const char *);/* 0x000d - chatnav.c *//* 0x000e - chat.c *//* These apply to exchanges as well. */#define AIM_CHATROOM_FLAG_EVILABLE 0x0001#define AIM_CHATROOM_FLAG_NAV_ONLY 0x0002#define AIM_CHATROOM_FLAG_INSTANCING_ALLOWED 0x0004#define AIM_CHATROOM_FLAG_OCCUPANT_PEEK_ALLOWED 0x0008struct aim_chat_exchangeinfo { fu16_t number; fu16_t flags; char *name; char *charset1; char *lang1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -