📄 oscar.h
字号:
gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *sn);/* Client functions for changing SSI data */int aim_ssi_addbuddy(OscarData *od, const char *name, const char *group, GSList *tlvlist, const char *alias, const char *comment, const char *smsnum, gboolean needauth);int aim_ssi_addpermit(OscarData *od, const char *name);int aim_ssi_adddeny(OscarData *od, const char *name);int aim_ssi_delbuddy(OscarData *od, const char *name, const char *group);int aim_ssi_delpermit(OscarData *od, const char *name);int aim_ssi_deldeny(OscarData *od, const char *name);int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *sn);int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *sn, const char *alias);int aim_ssi_editcomment(OscarData *od, const char *gn, const char *sn, const char *alias);int aim_ssi_rename_group(OscarData *od, const char *oldgn, const char *newgn);int aim_ssi_cleanlist(OscarData *od);int aim_ssi_deletelist(OscarData *od);int aim_ssi_setpermdeny(OscarData *od, guint8 permdeny, guint32 vismask);int aim_ssi_setpresence(OscarData *od, guint32 presence);int aim_ssi_seticon(OscarData *od, const guint8 *iconsum, guint8 iconsumlen);int aim_ssi_delicon(OscarData *od);/* 0x0015 - family_icq.c */#define AIM_ICQ_INFO_SIMPLE 0x001#define AIM_ICQ_INFO_SUMMARY 0x002#define AIM_ICQ_INFO_EMAIL 0x004#define AIM_ICQ_INFO_PERSONAL 0x008#define AIM_ICQ_INFO_ADDITIONAL 0x010#define AIM_ICQ_INFO_WORK 0x020#define AIM_ICQ_INFO_INTERESTS 0x040#define AIM_ICQ_INFO_ORGS 0x080#define AIM_ICQ_INFO_UNKNOWN 0x100#define AIM_ICQ_INFO_HAVEALL 0x1ffstruct aim_icq_offlinemsg{ guint32 sender; guint16 year; guint8 month, day, hour, minute; guint8 type; guint8 flags; char *msg; int msglen;};struct aim_icq_info{ guint16 reqid; /* simple */ guint32 uin; /* general and "home" information (0x00c8) */ char *nick; char *first; char *last; char *email; char *homecity; char *homestate; char *homephone; char *homefax; char *homeaddr; char *mobile; char *homezip; guint16 homecountry;/* guint8 timezone; guint8 hideemail; */ /* personal (0x00dc) */ guint8 age; guint8 unknown; guint8 gender; char *personalwebpage; guint16 birthyear; guint8 birthmonth; guint8 birthday; guint8 language1; guint8 language2; guint8 language3; /* work (0x00d2) */ char *workcity; char *workstate; char *workphone; char *workfax; char *workaddr; char *workzip; guint16 workcountry; char *workcompany; char *workdivision; char *workposition; char *workwebpage; /* additional personal information (0x00e6) */ char *info; /* email (0x00eb) */ guint16 numaddresses; char **email2; /* we keep track of these in a linked list because we're 1337 */ struct aim_icq_info *next;};int aim_icq_reqofflinemsgs(OscarData *od);int aim_icq_ackofflinemsgs(OscarData *od);int aim_icq_setsecurity(OscarData *od, gboolean auth_required, gboolean webaware);int aim_icq_changepasswd(OscarData *od, const char *passwd);int aim_icq_getsimpleinfo(OscarData *od, const char *uin);int aim_icq_getalias(OscarData *od, const char *uin);int aim_icq_getallinfo(OscarData *od, const char *uin);/* 0x0017 - family_auth.c */void aim_sendcookie(OscarData *, FlapConnection *, const guint16 length, const guint8 *);int aim_admin_changepasswd(OscarData *, FlapConnection *, const char *newpw, const char *curpw);void aim_admin_reqconfirm(OscarData *od, FlapConnection *conn);int aim_admin_getinfo(OscarData *od, FlapConnection *conn, guint16 info);int aim_admin_setemail(OscarData *od, FlapConnection *conn, const char *newemail);int aim_admin_setnick(OscarData *od, FlapConnection *conn, const char *newnick);/* 0x0018 - family_alert.c */struct aim_emailinfo{ guint8 *cookie16; guint8 *cookie8; char *url; guint16 nummsgs; guint8 unread; char *domain; guint16 flag; struct aim_emailinfo *next;};int aim_email_sendcookies(OscarData *od);int aim_email_activate(OscarData *od);/* tlv.c - TLV handling *//* TLV structure */typedef struct aim_tlv_s{ guint16 type; guint16 length; guint8 *value;} aim_tlv_t;/* TLV handling functions */char *aim_tlv_getvalue_as_string(aim_tlv_t *tlv);aim_tlv_t *aim_tlv_gettlv(GSList *list, guint16 type, const int nth);int aim_tlv_getlength(GSList *list, guint16 type, const int nth);char *aim_tlv_getstr(GSList *list, const guint16 type, const int nth);guint8 aim_tlv_get8(GSList *list, const guint16 type, const int nth);guint16 aim_tlv_get16(GSList *list, const guint16 type, const int nth);guint32 aim_tlv_get32(GSList *list, const guint16 type, const int nth);/* TLV list handling functions */GSList *aim_tlvlist_read(ByteStream *bs);GSList *aim_tlvlist_readnum(ByteStream *bs, guint16 num);GSList *aim_tlvlist_readlen(ByteStream *bs, guint16 len);GSList *aim_tlvlist_copy(GSList *orig);int aim_tlvlist_count(GSList *list);int aim_tlvlist_size(GSList *list);int aim_tlvlist_cmp(GSList *one, GSList *two);int aim_tlvlist_write(ByteStream *bs, GSList **list);void aim_tlvlist_free(GSList *list);int aim_tlvlist_add_raw(GSList **list, const guint16 type, const guint16 length, const guint8 *value);int aim_tlvlist_add_noval(GSList **list, const guint16 type);int aim_tlvlist_add_8(GSList **list, const guint16 type, const guint8 value);int aim_tlvlist_add_16(GSList **list, const guint16 type, const guint16 value);int aim_tlvlist_add_32(GSList **list, const guint16 type, const guint32 value);int aim_tlvlist_add_str(GSList **list, const guint16 type, const char *value);int aim_tlvlist_add_caps(GSList **list, const guint16 type, const guint32 caps);int aim_tlvlist_add_userinfo(GSList **list, guint16 type, aim_userinfo_t *userinfo);int aim_tlvlist_add_chatroom(GSList **list, guint16 type, guint16 exchange, const char *roomname, guint16 instance);int aim_tlvlist_add_frozentlvlist(GSList **list, guint16 type, GSList **tl);int aim_tlvlist_replace_raw(GSList **list, const guint16 type, const guint16 lenth, const guint8 *value);int aim_tlvlist_replace_str(GSList **list, const guint16 type, const char *str);int aim_tlvlist_replace_noval(GSList **list, const guint16 type);int aim_tlvlist_replace_8(GSList **list, const guint16 type, const guint8 value);int aim_tlvlist_replace_16(GSList **list, const guint16 type, const guint16 value);int aim_tlvlist_replace_32(GSList **list, const guint16 type, const guint32 value);void aim_tlvlist_remove(GSList **list, const guint16 type);/* util.c *//* These are really ugly. You'd think this was LISP. I wish it was. */#define aimutil_put8(buf, data) ((*(buf) = (guint8)(data)&0xff),1)#define aimutil_get8(buf) ((*(buf))&0xff)#define aimutil_put16(buf, data) ( \ (*(buf) = (guint8)((data)>>8)&0xff), \ (*((buf)+1) = (guint8)(data)&0xff), \ 2)#define aimutil_get16(buf) ((((*(buf))<<8)&0xff00) + ((*((buf)+1)) & 0xff))#define aimutil_put32(buf, data) ( \ (*((buf)) = (guint8)((data)>>24)&0xff), \ (*((buf)+1) = (guint8)((data)>>16)&0xff), \ (*((buf)+2) = (guint8)((data)>>8)&0xff), \ (*((buf)+3) = (guint8)(data)&0xff), \ 4)#define aimutil_get32(buf) ((((*(buf))<<24)&0xff000000) + \ (((*((buf)+1))<<16)&0x00ff0000) + \ (((*((buf)+2))<< 8)&0x0000ff00) + \ (((*((buf)+3) )&0x000000ff)))/* Little-endian versions (damn ICQ) */#define aimutil_putle8(buf, data) ( \ (*(buf) = (guint8)(data) & 0xff), \ 1)#define aimutil_getle8(buf) ( \ (*(buf)) & 0xff \ )#define aimutil_putle16(buf, data) ( \ (*((buf)+0) = (guint8)((data) >> 0) & 0xff), \ (*((buf)+1) = (guint8)((data) >> 8) & 0xff), \ 2)#define aimutil_getle16(buf) ( \ (((*((buf)+0)) << 0) & 0x00ff) + \ (((*((buf)+1)) << 8) & 0xff00) \ )#define aimutil_putle32(buf, data) ( \ (*((buf)+0) = (guint8)((data) >> 0) & 0xff), \ (*((buf)+1) = (guint8)((data) >> 8) & 0xff), \ (*((buf)+2) = (guint8)((data) >> 16) & 0xff), \ (*((buf)+3) = (guint8)((data) >> 24) & 0xff), \ 4)#define aimutil_getle32(buf) ( \ (((*((buf)+0)) << 0) & 0x000000ff) + \ (((*((buf)+1)) << 8) & 0x0000ff00) + \ (((*((buf)+2)) << 16) & 0x00ff0000) + \ (((*((buf)+3)) << 24) & 0xff000000))guint16 aimutil_iconsum(const guint8 *buf, int buflen);int aimutil_tokslen(char *toSearch, int theindex, char dl);int aimutil_itemcnt(char *toSearch, char dl);char *aimutil_itemindex(char *toSearch, int theindex, char dl);gboolean aim_snvalid(const char *sn);gboolean aim_sn_is_icq(const char *sn);gboolean aim_sn_is_sms(const char *sn);int aim_snlen(const char *sn);int aim_sncmp(const char *sn1, const char *sn2);typedef struct { guint16 family; guint16 subtype; guint16 flags; guint32 id;} aim_modsnac_t;#define AIM_MODULENAME_MAXLEN 16#define AIM_MODFLAG_MULTIFAMILY 0x0001typedef struct aim_module_s{ guint16 family; guint16 version; guint16 toolid; guint16 toolversion; guint16 flags; char name[AIM_MODULENAME_MAXLEN+1]; int (*snachandler)(OscarData *od, FlapConnection *conn, struct aim_module_s *mod, FlapFrame *rx, aim_modsnac_t *snac, ByteStream *bs); void (*shutdown)(OscarData *od, struct aim_module_s *mod); void *priv; struct aim_module_s *next;} aim_module_t;int aim__registermodule(OscarData *od, int (*modfirst)(OscarData *, aim_module_t *));void aim__shutdownmodules(OscarData *od);aim_module_t *aim__findmodulebygroup(OscarData *od, guint16 group);aim_module_t *aim__findmodule(OscarData *od, const char *name);int admin_modfirst(OscarData *od, aim_module_t *mod);int buddylist_modfirst(OscarData *od, aim_module_t *mod);int bos_modfirst(OscarData *od, aim_module_t *mod);int search_modfirst(OscarData *od, aim_module_t *mod);int stats_modfirst(OscarData *od, aim_module_t *mod);int auth_modfirst(OscarData *od, aim_module_t *mod);int msg_modfirst(OscarData *od, aim_module_t *mod);int misc_modfirst(OscarData *od, aim_module_t *mod);int chatnav_modfirst(OscarData *od, aim_module_t *mod);int chat_modfirst(OscarData *od, aim_module_t *mod);int locate_modfirst(OscarData *od, aim_module_t *mod);int service_modfirst(OscarData *od, aim_module_t *mod);int invite_modfirst(OscarData *od, aim_module_t *mod);int translate_modfirst(OscarData *od, aim_module_t *mod);int popups_modfirst(OscarData *od, aim_module_t *mod);int adverts_modfirst(OscarData *od, aim_module_t *mod);int odir_modfirst(OscarData *od, aim_module_t *mod);int bart_modfirst(OscarData *od, aim_module_t *mod);int ssi_modfirst(OscarData *od, aim_module_t *mod);int icq_modfirst(OscarData *od, aim_module_t *mod);int email_modfirst(OscarData *od, aim_module_t *mod);void aim_genericreq_n(OscarData *od, FlapConnection *conn, guint16 family, guint16 subtype);void aim_genericreq_n_snacid(OscarData *od, FlapConnection *conn, guint16 family, guint16 subtype);void aim_genericreq_l(OscarData *od, FlapConnection *conn, guint16 family, guint16 subtype, guint32 *);void aim_genericreq_s(OscarData *od, FlapConnection *conn, guint16 family, guint16 subtype, guint16 *);/* bstream.c */int byte_stream_new(ByteStream *bs, guint32 len);int byte_stream_init(ByteStream *bs, guint8 *data, int len);int byte_stream_empty(ByteStream *bs);int byte_stream_curpos(ByteStream *bs);int byte_stream_setpos(ByteStream *bs, unsigned int off);void byte_stream_rewind(ByteStream *bs);int byte_stream_advance(ByteStream *bs, int n);guint8 byte_stream_get8(ByteStream *bs);guint16 byte_stream_get16(ByteStream *bs);guint32 byte_stream_get32(ByteStream *bs);guint8 byte_stream_getle8(ByteStream *bs);guint16 byte_stream_getle16(ByteStream *bs);guint32 byte_stream_getle32(ByteStream *bs);int byte_stream_getrawbuf(ByteStream *bs, guint8 *buf, int len);guint8 *byte_stream_getraw(ByteStream *bs, int len);char *byte_stream_getstr(ByteStream *bs, int len);int byte_stream_put8(ByteStream *bs, guint8 v);int byte_stream_put16(ByteStream *bs, guint16 v);int byte_stream_put32(ByteStream *bs, guint32 v);int byte_stream_putle8(ByteStream *bs, guint8 v);int byte_stream_putle16(ByteStream *bs, guint16 v);int byte_stream_putle32(ByteStream *bs, guint32 v);int byte_stream_putraw(ByteStream *bs, const guint8 *v, int len);int byte_stream_putstr(ByteStream *bs, const char *str);int byte_stream_putbs(ByteStream *bs, ByteStream *srcbs, int len);int byte_stream_putcaps(ByteStream *bs, guint32 caps);/* * Generic SNAC structure. Rarely if ever used. */typedef struct aim_snac_s { aim_snacid_t id; guint16 family; guint16 type; guint16 flags; void *data; time_t issuetime; struct aim_snac_s *next;} aim_snac_t;/* snac.c */void aim_initsnachash(OscarData *od);aim_snacid_t aim_newsnac(OscarData *, aim_snac_t *newsnac);aim_snacid_t aim_cachesnac(OscarData *od, const guint16 family, const guint16 type, const guint16 flags, const void *data, const int datalen);aim_snac_t *aim_remsnac(OscarData *, aim_snacid_t id);int aim_putsnac(ByteStream *, guint16 family, guint16 type, guint16 flags, aim_snacid_t id);struct chatsnacinfo { guint16 exchange; char name[128]; guint16 instance;};struct rateclass { guint16 classid; guint32 windowsize; guint32 clear; guint32 alert; guint32 limit; guint32 disconnect; guint32 current; guint32 max; guint8 unknown[5]; /* only present in versions >= 3 */ GHashTable *members; /* Key is family and subtype, value is TRUE. */ struct timeval last; /**< The time when we last sent a SNAC of this rate class. */};int aim_cachecookie(OscarData *od, IcbmCookie *cookie);IcbmCookie *aim_uncachecookie(OscarData *od, guint8 *cookie, int type);IcbmCookie *aim_mkcookie(guint8 *, int, void *);IcbmCookie *aim_checkcookie(OscarData *, const unsigned char *, const int);int aim_freecookie(OscarData *od, IcbmCookie *cookie);int aim_msgcookie_gettype(int type);int aim_cookie_free(OscarData *od, IcbmCookie *cookie);int aim_chat_readroominfo(ByteStream *bs, struct aim_chat_roominfo *outinfo);void flap_connection_destroy_chat(OscarData *od, FlapConnection *conn);#ifdef __cplusplus}#endif#endif /* _OSCAR_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -