⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aim.h

📁 AnyQ服务端源代码(2004/10/28)源码
💻 H
📖 第 1 页 / 共 3 页
字号:
/* Valid for calling aim_icq_setstatus() and for aim_userinfo_t->icqinfo.status */#define AIM_ICQ_STATE_ONLINE    0x0000#define AIM_ICQ_STATE_AWAY      0x0001#define AIM_ICQ_STATE_DND       0x0002#define AIM_ICQ_STATE_NA        0x0004#define AIM_ICQ_STATE_OCCUPIED  0x0010#define AIM_ICQ_STATE_CHAT      0x0020#define AIM_ICQ_STATE_INVISIBLE 0x0100/* * AIM User Info, Standard Form. */typedef struct {	char sn[MAXSNLEN+1];	fu16_t warnlevel;	fu16_t idletime;	fu16_t flags;	fu32_t membersince;	fu32_t onlinesince;	fu32_t sessionlen; 	int capspresent;	fu16_t capabilities;	struct {		fu16_t status;		fu32_t ipaddr;		fu8_t crap[0x25]; /* until we figure it out... */	} icqinfo;} aim_userinfo_t;faim_export const char *aim_userinfo_sn(aim_userinfo_t *ui);faim_export fu16_t aim_userinfo_flags(aim_userinfo_t *ui);faim_export fu16_t aim_userinfo_idle(aim_userinfo_t *ui);faim_export float aim_userinfo_warnlevel(aim_userinfo_t *ui);faim_export time_t aim_userinfo_membersince(aim_userinfo_t *ui);faim_export time_t aim_userinfo_onlinesince(aim_userinfo_t *ui);faim_export fu32_t aim_userinfo_sessionlen(aim_userinfo_t *ui);faim_export int aim_userinfo_hascap(aim_userinfo_t *ui, fu16_t cap);#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_UNKNOWN80	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#if defined(FAIM_INTERNAL) || defined(FAIM_NEED_TLV)/* * TLV handling *//* Generic TLV structure. */typedef struct aim_tlv_s {	fu16_t type;	fu16_t length;	fu8_t *value;} aim_tlv_t;/* List of above. */typedef struct aim_tlvlist_s {	aim_tlv_t *tlv;	struct aim_tlvlist_s *next;} aim_tlvlist_t;/* TLV-handling functions */#if 0/* Very, very raw TLV handling. */faim_internal int aim_puttlv_8(fu8_t *buf, const fu16_t t, const fu8_t v);faim_internal int aim_puttlv_16(fu8_t *buf, const fu16_t t, const fu16_t v);faim_internal int aim_puttlv_32(fu8_t *buf, const fu16_t t, const fu32_t v);faim_internal int aim_puttlv_raw(fu8_t *buf, const fu16_t t, const fu16_t l, const fu8_t *v);#endif/* TLV list handling. */faim_internal aim_tlvlist_t *aim_readtlvchain(aim_bstream_t *bs);faim_internal void aim_freetlvchain(aim_tlvlist_t **list);faim_internal aim_tlv_t *aim_gettlv(aim_tlvlist_t *, fu16_t t, const int n);faim_internal char *aim_gettlv_str(aim_tlvlist_t *, const fu16_t t, const int n);faim_internal fu8_t aim_gettlv8(aim_tlvlist_t *list, const fu16_t type, const int num);faim_internal fu16_t aim_gettlv16(aim_tlvlist_t *list, const fu16_t t, const int n);faim_internal fu32_t aim_gettlv32(aim_tlvlist_t *list, const fu16_t t, const int n);faim_internal int aim_writetlvchain(aim_bstream_t *bs, aim_tlvlist_t **list);faim_internal int aim_addtlvtochain8(aim_tlvlist_t **list, const fu16_t t, const fu8_t v);faim_internal int aim_addtlvtochain16(aim_tlvlist_t **list, const fu16_t t, const fu16_t v);faim_internal int aim_addtlvtochain32(aim_tlvlist_t **list, const fu16_t type, const fu32_t v);faim_internal int aim_addtlvtochain_raw(aim_tlvlist_t **list, const fu16_t t, const fu16_t l, const fu8_t *v);faim_internal int aim_addtlvtochain_caps(aim_tlvlist_t **list, const fu16_t t, const fu16_t caps);faim_internal int aim_addtlvtochain_noval(aim_tlvlist_t **list, const fu16_t type);faim_internal int aim_addtlvtochain_userinfo(aim_tlvlist_t **list, fu16_t type, aim_userinfo_t *ui);faim_internal int aim_addtlvtochain_frozentlvlist(aim_tlvlist_t **list, fu16_t type, aim_tlvlist_t **tl);faim_internal int aim_counttlvchain(aim_tlvlist_t **list);faim_internal int aim_sizetlvchain(aim_tlvlist_t **list);#endif /* FAIM_INTERNAL *//* * Get command from connections * * aim_get_commmand() is the libfaim lowlevel I/O in the receive direction. * XXX Make this easily overridable. * */faim_export int aim_get_command(aim_session_t *, aim_conn_t *);/* * Dispatch commands that are in the rx queue. */faim_export void aim_rxdispatch(aim_session_t *);faim_export int aim_debugconn_sendconnect(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_logoff(aim_session_t *);#if !defined(FAIM_INTERNAL) || defined(FAIM_INTERNAL_INSANE)/* the library should never call aim_conn_kill */faim_export void aim_conn_kill(aim_session_t *sess, aim_conn_t **deadconn);#endiftypedef int (*aim_rxcallback_t)(aim_session_t *, aim_frame_t *, ...);struct aim_clientrelease {	char *name;	fu32_t build;	char *url;	char *info;};struct aim_authresp_info {	char *sn;	fu16_t errorcode;	char *errorurl;	fu16_t regstatus;	char *email;	char *bosip;	fu8_t *cookie;	struct aim_clientrelease latestrelease;	struct aim_clientrelease latestbeta;};/* Callback data for redirect. */struct aim_redirect_data {	fu16_t group;	const char *ip;	const fu8_t *cookie;	struct { /* group == AIM_CONN_TYPE_CHAT */		fu16_t exchange;		const char *room;		fu16_t instance;	} chat;};faim_export int aim_clientready(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_sendflapver(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_request_login(aim_session_t *sess, aim_conn_t *conn, const char *sn);faim_export int aim_send_login(aim_session_t *, aim_conn_t *, const char *, const char *, struct client_info_s *, const char *key);faim_export int aim_encode_password_md5(const char *password, const char *key, unsigned char *digest);faim_export void aim_purge_rxqueue(aim_session_t *);#define AIM_TX_QUEUED    0 /* default */#define AIM_TX_IMMEDIATE 1#define AIM_TX_USER      2faim_export int aim_tx_setenqueue(aim_session_t *sess, int what, int (*func)(aim_session_t *, aim_frame_t *));faim_export int aim_tx_flushqueue(aim_session_t *);faim_export void aim_tx_purgequeue(aim_session_t *);faim_export int aim_conn_setlatency(aim_conn_t *conn, int newval);faim_export int aim_conn_addhandler(aim_session_t *, aim_conn_t *conn, u_short family, u_short type, aim_rxcallback_t newhandler, u_short flags);faim_export int aim_clearhandlers(aim_conn_t *conn);faim_export aim_conn_t *aim_conn_findbygroup(aim_session_t *sess, fu16_t group);faim_export aim_session_t *aim_conn_getsess(aim_conn_t *conn);faim_export void aim_conn_close(aim_conn_t *deadconn);faim_export aim_conn_t *aim_newconn(aim_session_t *, int type, const char *dest);faim_export int aim_conngetmaxfd(aim_session_t *);faim_export aim_conn_t *aim_select(aim_session_t *, struct timeval *, int *);faim_export int aim_conn_isready(aim_conn_t *);faim_export int aim_conn_setstatus(aim_conn_t *, int);faim_export int aim_conn_completeconnect(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_conn_isconnecting(aim_conn_t *conn);typedef void (*faim_debugging_callback_t)(aim_session_t *sess, int level, const char *format, va_list va);faim_export int aim_setdebuggingcb(aim_session_t *sess, faim_debugging_callback_t);faim_export void aim_session_init(aim_session_t *, unsigned long flags, int debuglevel);faim_export void aim_session_kill(aim_session_t *);faim_export void aim_setupproxy(aim_session_t *sess, const char *server, const char *username, const char *password);faim_export aim_conn_t *aim_getconn_type(aim_session_t *, int type);faim_export aim_conn_t *aim_getconn_type_all(aim_session_t *, int type);faim_export aim_conn_t *aim_getconn_fd(aim_session_t *, int fd);/* aim_misc.c */#define AIM_VISIBILITYCHANGE_PERMITADD    0x05#define AIM_VISIBILITYCHANGE_PERMITREMOVE 0x06#define AIM_VISIBILITYCHANGE_DENYADD      0x07#define AIM_VISIBILITYCHANGE_DENYREMOVE   0x08#define AIM_PRIVFLAGS_ALLOWIDLE           0x01#define AIM_PRIVFLAGS_ALLOWMEMBERSINCE    0x02#define AIM_WARN_ANON                     0x01faim_export int aim_sendpauseack(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_send_warning(aim_session_t *sess, aim_conn_t *conn, const char *destsn, fu32_t flags);faim_export int aim_nop(aim_session_t *, aim_conn_t *);faim_export int aim_flap_nop(aim_session_t *sess, aim_conn_t *conn);faim_export int aim_bos_setidle(aim_session_t *, aim_conn_t *, fu32_t);faim_export int aim_bos_changevisibility(aim_session_t *, aim_conn_t *, int, const char *);faim_export int aim_bos_setbuddylist(aim_session_t *, aim_conn_t *, const char *);faim_export int aim_bos_setprofile(aim_session_t *sess, aim_conn_t *conn, const char *profile, const char *awaymsg, fu16_t caps);faim_export int aim_bos_setgroupperm(aim_session_t *, aim_conn_t *, fu32_t mask);faim_export int aim_bos_setprivacyflags(aim_session_t *, aim_conn_t *, fu32_t);faim_export int aim_reqpersonalinfo(aim_session_t *, aim_conn_t *);faim_export int aim_reqservice(aim_session_t *, aim_conn_t *, fu16_t);faim_export int aim_bos_reqrights(aim_session_t *, aim_conn_t *);faim_export int aim_bos_reqbuddyrights(aim_session_t *, aim_conn_t *);faim_export int aim_bos_reqlocaterights(aim_session_t *, aim_conn_t *);faim_export int aim_setdirectoryinfo(aim_session_t *sess, aim_conn_t *conn, 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);faim_export int aim_setuserinterests(aim_session_t *sess, aim_conn_t *conn, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, fu16_t privacy);faim_export int aim_setextstatus(aim_session_t *sess, aim_conn_t *conn, fu16_t status);faim_export struct aim_fileheader_t *aim_getlisting(aim_session_t *sess, FILE *);#define AIM_CLIENTTYPE_UNKNOWN  0x0000#define AIM_CLIENTTYPE_MC       0x0001#define AIM_CLIENTTYPE_WINAIM   0x0002#define AIM_CLIENTTYPE_WINAIM41 0x0003#define AIM_CLIENTTYPE_AOL_TOC  0x0004faim_export unsigned short aim_fingerprintclient(unsigned char *msghdr, int len);#define AIM_RATE_CODE_CHANGE     0x0001#define AIM_RATE_CODE_WARNING    0x0002#define AIM_RATE_CODE_LIMIT      0x0003#define AIM_RATE_CODE_CLEARLIMIT 0x0004faim_export int aim_ads_requestads(aim_session_t *sess, aim_conn_t *conn);/* aim_im.c */struct aim_fileheader_t {#if 0	char  magic[4];		/* 0 */	short hdrlen; 		/* 4 */	short hdrtype;		/* 6 */#endif	char  bcookie[8];       /* 8 */	short encrypt;          /* 16 */	short compress;         /* 18 */	short totfiles;         /* 20 */	short filesleft;        /* 22 */	short totparts;         /* 24 */	short partsleft;        /* 26 */	long  totsize;          /* 28 */	long  size;             /* 32 */	long  modtime;          /* 36 */	long  checksum;         /* 40 */	long  rfrcsum;          /* 44 */	long  rfsize;           /* 48 */	long  cretime;          /* 52 */	long  rfcsum;           /* 56 */	long  nrecvd;           /* 60 */	long  recvcsum;         /* 64 */	char  idstring[32];     /* 68 */	char  flags;            /* 100 */	char  lnameoffset;      /* 101 */	char  lsizeoffset;      /* 102 */	char  dummy[69];        /* 103 */	char  macfileinfo[16];  /* 172 */	short nencode;          /* 188 */	short nlanguage;        /* 190 */	char  name[64];         /* 192 */				/* 256 */};struct aim_filetransfer_priv {	char sn[MAXSNLEN];	char cookie[8];	char ip[30];	int state;	struct aim_fileheader_t fh;};struct aim_chat_roominfo {	unsigned short exchange;	char *name;	unsigned short instance;};#define AIM_IMFLAGS_AWAY		0x0001 /* mark as an autoreply */#define AIM_IMFLAGS_ACK			0x0002 /* request a receipt notice */#define AIM_IMFLAGS_UNICODE		0x0004#define AIM_IMFLAGS_ISO_8859_1		0x0008#define AIM_IMFLAGS_BUDDYREQ		0x0010 /* buddy icon requested */#define AIM_IMFLAGS_HASICON		0x0020 /* already has icon */#define AIM_IMFLAGS_SUBENC_MACINTOSH	0x0040 /* damn that Steve Jobs! */#define AIM_IMFLAGS_CUSTOMFEATURES 	0x0080 /* features field present */#define AIM_IMFLAGS_EXTDATA		0x0100#define AIM_IMFLAGS_CUSTOMCHARSET	0x0200 /* charset fields set */#define AIM_IMFLAGS_MULTIPART		0x0400 /* ->mpmsg section valid */#define AIM_IMFLAGS_OFFLINE		0x0800 /* send to offline user *//* * Multipart message structures. */typedef struct aim_mpmsg_section_s {	fu16_t charset;	fu16_t charsubset;	fu8_t *data;	fu16_t datalen;	struct aim_mpmsg_section_s *next;} aim_mpmsg_section_t;typedef struct aim_mpmsg_s {	int numparts;	aim_mpmsg_section_t *parts;} aim_mpmsg_t;faim_export int aim_mpmsg_init(aim_session_t *sess, aim_mpmsg_t *mpm);faim_export int aim_mpmsg_addraw(aim_session_t *sess, aim_mpmsg_t *mpm, fu16_t charset, fu16_t charsubset, const fu8_t *data, fu16_t datalen);faim_export int aim_mpmsg_addascii(aim_session_t *sess, aim_mpmsg_t *mpm, const char *ascii);faim_export int aim_mpmsg_addunicode(aim_session_t *sess, aim_mpmsg_t *mpm, const fu16_t *unicode, fu16_t unicodelen);faim_export void aim_mpmsg_free(aim_session_t *sess, aim_mpmsg_t *mpm);/* * Arguments to aim_send_im_ext(). * * This is really complicated.  But immensely versatile. * */struct aim_sendimext_args {	/* These are _required_ */	const char *destsn;	fu32_t flags; /* often 0 */	/* Only required if not using multipart messages */	const char *msg;	int msglen;	/* Required if ->msg is not provided */	aim_mpmsg_t *mpmsg;	/* Only used if AIM_IMFLAGS_HASICON is set */	fu32_t iconlen;	time_t iconstamp;	fu32_t iconsum;	/* Only used if AIM_IMFLAGS_CUSTOMFEATURES is set */	fu8_t *features;	fu8_t featureslen;	/* Only used if AIM_IMFLAGS_CUSTOMCHARSET is set and mpmsg not used */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -