comparison src/protocols/oscar/aim.h @ 4230:9f729d6d88a6

[gaim-migrate @ 4475] This is 128KB of raw kickassyness. AKA ICQ SSI. I've rewritten all the important parts of ssi.c. Things should be better. One thing I like a lot is that gaim will store the alias you assign to buddies in your server list for both AIM and ICQ. WinICQ supports this, but WinAIM doesn't. However, it doesn't seem to interfere with WinAIM, and Gaim can still use it. I dunno, I just think it's neat. Anyway, go nuts. Let me know if something doesn't work, because that's bad. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Tue, 07 Jan 2003 21:19:05 +0000
parents 9325df841a40
children 0e4be672f516
comparison
equal deleted inserted replaced
4229:c1857c9c912d 4230:9f729d6d88a6
368 /* ---- Internal Use Only ------------------------ */ 368 /* ---- Internal Use Only ------------------------ */
369 369
370 /* Server-stored information (ssi) */ 370 /* Server-stored information (ssi) */
371 struct { 371 struct {
372 int received_data; 372 int received_data;
373 fu16_t revision; 373 fu16_t numitems;
374 struct aim_ssi_item *items; 374 struct aim_ssi_item *official;
375 struct aim_ssi_item *local;
376 struct aim_ssi_tmp *pending;
375 time_t timestamp; 377 time_t timestamp;
376 int waiting_for_ack; 378 int waiting_for_ack;
377 aim_frame_t *holding_queue;
378 } ssi; 379 } ssi;
379 380
380 struct aim_authresp_info *authinfo; 381 struct aim_authresp_info *authinfo;
381 struct aim_emailinfo *emailinfo; 382 struct aim_emailinfo *emailinfo;
382 383
532 #endif 533 #endif
533 534
534 /* TLV list handling. */ 535 /* TLV list handling. */
535 faim_internal aim_tlvlist_t *aim_readtlvchain(aim_bstream_t *bs); 536 faim_internal aim_tlvlist_t *aim_readtlvchain(aim_bstream_t *bs);
536 faim_internal aim_tlvlist_t *aim_readtlvchain_num(aim_bstream_t *bs, fu16_t num); 537 faim_internal aim_tlvlist_t *aim_readtlvchain_num(aim_bstream_t *bs, fu16_t num);
538 faim_internal aim_tlvlist_t *aim_readtlvchain_len(aim_bstream_t *bs, fu16_t len);
539 faim_internal aim_tlvlist_t *aim_tlvlist_copy(aim_tlvlist_t *orig);
537 faim_internal void aim_freetlvchain(aim_tlvlist_t **list); 540 faim_internal void aim_freetlvchain(aim_tlvlist_t **list);
538 faim_internal aim_tlv_t *aim_gettlv(aim_tlvlist_t *, fu16_t t, const int n); 541 faim_internal aim_tlv_t *aim_gettlv(aim_tlvlist_t *, fu16_t t, const int n);
539 faim_internal char *aim_gettlv_str(aim_tlvlist_t *, const fu16_t t, const int n); 542 faim_internal char *aim_gettlv_str(aim_tlvlist_t *, const fu16_t t, const int n);
540 faim_internal fu8_t aim_gettlv8(aim_tlvlist_t *list, const fu16_t type, const int num); 543 faim_internal fu8_t aim_gettlv8(aim_tlvlist_t *list, const fu16_t type, const int num);
541 faim_internal fu16_t aim_gettlv16(aim_tlvlist_t *list, const fu16_t t, const int n); 544 faim_internal fu16_t aim_gettlv16(aim_tlvlist_t *list, const fu16_t t, const int n);
1120 1123
1121 faim_export int aim_chatnav_createroom(aim_session_t *sess, aim_conn_t *conn, const char *name, fu16_t exchange); 1124 faim_export int aim_chatnav_createroom(aim_session_t *sess, aim_conn_t *conn, const char *name, fu16_t exchange);
1122 faim_export int aim_chat_leaveroom(aim_session_t *sess, const char *name); 1125 faim_export int aim_chat_leaveroom(aim_session_t *sess, const char *name);
1123 1126
1124 1127
1128
1129 /* ssi.c */
1125 #define AIM_SSI_TYPE_BUDDY 0x0000 1130 #define AIM_SSI_TYPE_BUDDY 0x0000
1126 #define AIM_SSI_TYPE_GROUP 0x0001 1131 #define AIM_SSI_TYPE_GROUP 0x0001
1127 #define AIM_SSI_TYPE_PERMIT 0x0002 1132 #define AIM_SSI_TYPE_PERMIT 0x0002
1128 #define AIM_SSI_TYPE_DENY 0x0003 1133 #define AIM_SSI_TYPE_DENY 0x0003
1129 #define AIM_SSI_TYPE_PDINFO 0x0004 1134 #define AIM_SSI_TYPE_PDINFO 0x0004
1130 #define AIM_SSI_TYPE_PRESENCEPREFS 0x0005 1135 #define AIM_SSI_TYPE_PRESENCEPREFS 0x0005
1131 1136
1137 #define AIM_SSI_ACK_SUCCESS 0x0000
1138 #define AIM_SSI_ACK_ITEMNOTFOUND 0x0002
1139 #define AIM_SSI_ACK_IDNUMINUSE 0x000a
1140 #define AIM_SSI_ACK_ATMAX 0x000c
1141 #define AIM_SSI_ACK_INVALIDNAME 0x000d
1142 #define AIM_SSI_ACK_AUTHREQUIRED 0x000e
1143
1132 struct aim_ssi_item { 1144 struct aim_ssi_item {
1133 char *name; 1145 char *name;
1134 fu16_t gid; 1146 fu16_t gid;
1135 fu16_t bid; 1147 fu16_t bid;
1136 fu16_t type; 1148 fu16_t type;
1137 void *data; 1149 struct aim_tlvlist_s *data;
1138 struct aim_ssi_item *next; 1150 struct aim_ssi_item *next;
1139 }; 1151 };
1140 1152
1153 struct aim_ssi_tmp {
1154 fu16_t action;
1155 fu16_t ack;
1156 char *name;
1157 struct aim_ssi_item *item;
1158 struct aim_ssi_tmp *next;
1159 };
1160
1141 /* These build the actual SNACs and queue them to be sent */ 1161 /* These build the actual SNACs and queue them to be sent */
1142 faim_export int aim_ssi_reqrights(aim_session_t *sess, aim_conn_t *conn); 1162 /* 0x0002 */ faim_export int aim_ssi_reqrights(aim_session_t *sess, aim_conn_t *conn);
1143 faim_export int aim_ssi_reqdata(aim_session_t *sess, aim_conn_t *conn, time_t localstamp, fu16_t localrev); 1163 /* 0x0005 */ faim_export int aim_ssi_reqdata(aim_session_t *sess, aim_conn_t *conn, time_t localstamp, fu16_t localrev);
1144 faim_export int aim_ssi_enable(aim_session_t *sess, aim_conn_t *conn); 1164 /* 0x0007 */ faim_export int aim_ssi_enable(aim_session_t *sess, aim_conn_t *conn);
1145 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); 1165 /* 0x0008 */ faim_export int aim_ssi_addmoddel(aim_session_t *sess, aim_conn_t *conn);
1146 faim_export int aim_ssi_modbegin(aim_session_t *sess, aim_conn_t *conn); 1166 /* 0x0011 */ faim_export int aim_ssi_modbegin(aim_session_t *sess, aim_conn_t *conn);
1147 faim_export int aim_ssi_modend(aim_session_t *sess, aim_conn_t *conn); 1167 /* 0x0012 */ faim_export int aim_ssi_modend(aim_session_t *sess, aim_conn_t *conn);
1148 1168 /* 0x0014 */ faim_export int aim_ssi_sendauth(aim_session_t *sess, aim_conn_t *conn, char *sn, char *msg);
1149 /* These handle the local variables */ 1169 /* 0x0018 */ faim_export int aim_ssi_sendauthrequest(aim_session_t *sess, aim_conn_t *conn, char *sn, char *msg);
1170 /* 0x001a */ faim_export int aim_ssi_sendauthreply(aim_session_t *sess, aim_conn_t *conn, char *sn, fu8_t reply, char *msg);
1171
1172 /* Client functions for retrieving SSI data */
1150 faim_export struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, fu16_t gid, fu16_t bid); 1173 faim_export struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, fu16_t gid, fu16_t bid);
1151 faim_export struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, fu16_t type); 1174 faim_export struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, fu16_t type);
1152 faim_export struct aim_ssi_item *aim_ssi_itemlist_findparent(struct aim_ssi_item *list, char *sn); 1175 faim_export struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn);
1176 faim_export char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn);
1153 faim_export int aim_ssi_getpermdeny(struct aim_ssi_item *list); 1177 faim_export int aim_ssi_getpermdeny(struct aim_ssi_item *list);
1154 faim_export fu32_t aim_ssi_getpresence(struct aim_ssi_item *list); 1178 faim_export fu32_t aim_ssi_getpresence(struct aim_ssi_item *list);
1155 faim_export int aim_ssi_cleanlist(aim_session_t *sess, aim_conn_t *conn); 1179 faim_export char *aim_ssi_getalias(struct aim_ssi_item *list, char *gn, char *sn);
1156 faim_export int aim_ssi_addbuddies(aim_session_t *sess, aim_conn_t *conn, const char *gn, const char **sn, unsigned int num); 1180
1157 faim_export int aim_ssi_addmastergroup(aim_session_t *sess, aim_conn_t *conn); 1181 /* Client functions for changing SSI data */
1158 faim_export int aim_ssi_addgroups(aim_session_t *sess, aim_conn_t *conn, const char **gn, unsigned int num); 1182 faim_export int aim_ssi_addbuddy(aim_session_t *sess, aim_conn_t *conn, const char *name, const char *group, const char *alias, const char *comment, const char *smsnum, int needauth);
1159 faim_export int aim_ssi_addpord(aim_session_t *sess, aim_conn_t *conn, const char **sn, unsigned int num, fu16_t type); 1183 faim_export int aim_ssi_addpermit(aim_session_t *sess, aim_conn_t *conn, const char *name);
1184 faim_export int aim_ssi_adddeny(aim_session_t *sess, aim_conn_t *conn, const char *name);
1185 faim_export int aim_ssi_delbuddy(aim_session_t *sess, aim_conn_t *conn, const char *name, const char *group);
1186 faim_export int aim_ssi_delpermit(aim_session_t *sess, aim_conn_t *conn, const char *name);
1187 faim_export int aim_ssi_deldeny(aim_session_t *sess, aim_conn_t *conn, const char *name);
1160 faim_export int aim_ssi_movebuddy(aim_session_t *sess, aim_conn_t *conn, const char *oldgn, const char *newgn, const char *sn); 1188 faim_export int aim_ssi_movebuddy(aim_session_t *sess, aim_conn_t *conn, const char *oldgn, const char *newgn, const char *sn);
1161 faim_export int aim_ssi_rename_group(aim_session_t *sess, aim_conn_t *conn, const char *oldgn, const char *newgn); 1189 faim_export int aim_ssi_rename_group(aim_session_t *sess, aim_conn_t *conn, const char *oldgn, const char *newgn);
1162 faim_export int aim_ssi_delbuddies(aim_session_t *sess, aim_conn_t *conn, const char *gn, char **sn, unsigned int num); 1190 faim_export int aim_ssi_cleanlist(aim_session_t *sess, aim_conn_t *conn);
1163 faim_export int aim_ssi_delmastergroup(aim_session_t *sess, aim_conn_t *conn);
1164 faim_export int aim_ssi_delgroups(aim_session_t *sess, aim_conn_t *conn, char **gn, unsigned int num);
1165 faim_export int aim_ssi_deletelist(aim_session_t *sess, aim_conn_t *conn); 1191 faim_export int aim_ssi_deletelist(aim_session_t *sess, aim_conn_t *conn);
1166 faim_export int aim_ssi_delpord(aim_session_t *sess, aim_conn_t *conn, const char **sn, unsigned int num, fu16_t type);
1167 faim_export int aim_ssi_setpermdeny(aim_session_t *sess, aim_conn_t *conn, fu8_t permdeny, fu32_t vismask); 1192 faim_export int aim_ssi_setpermdeny(aim_session_t *sess, aim_conn_t *conn, fu8_t permdeny, fu32_t vismask);
1168 faim_export int aim_ssi_setpresence(aim_session_t *sess, aim_conn_t *conn, fu32_t presence); 1193 faim_export int aim_ssi_setpresence(aim_session_t *sess, aim_conn_t *conn, fu32_t presence);
1169 1194
1195
1196
1197 /* icq.c */
1170 struct aim_icq_offlinemsg { 1198 struct aim_icq_offlinemsg {
1171 fu32_t sender; 1199 fu32_t sender;
1172 fu16_t year; 1200 fu16_t year;
1173 fu8_t month, day, hour, minute; 1201 fu8_t month, day, hour, minute;
1174 fu8_t type; 1202 fu8_t type;