ID
|
Origin
|
Name
|
Foodgroup
|
Service
|
Status
|
Version
|
0x0002, 0x0004
|
Client
|
LOCATE__SET_INFO
|
Unspecified
|
BOS
|
Active
|
1.19
|
The client may set SIG, UNAVAILABLE, and CAPABILITIES type and data tags with this SNAC.
Foodgroup
|
uint16 (word)
|
00 02
|
Subgroup
|
uint16 (word)
|
00 04
|
Flags
|
uint16 (word)
|
00 00
|
Request ID
|
uint32 (dword)
|
00 00 00 00
|
SNAC Data
A tag with no data clears the SIG, UNAVAILABLE message, or CAPABILITIES.
Name
|
Type
|
Notes
|
infoData
|
TLV
|
[Class: LOCATE__TAGS] Information to set or replace - empty tags will cause that data to be cleared; tags not present will cause no change
|
Set user information [Source: Client]
This sends up the intial profile and capability set. It's also used while online to set yourself away and back. Capabilities are represented by blocks of data, 16 bytes long.
The final portion of this packet is the capability set; it's technically a TLV, but it's easier in code to refer to it otherwise, since the value of the TLV differs based on capabilites.
Container
|
Data
|
TLV Type
|
RAW
|
SNAC Header
|
|
TLV
|
TLV containing string: text/x-aolrtf; charset="us-ascii"
|
0x0001
|
TLV
|
Profile string
|
0x0002
|
TLV
|
TLV containing string: text/x-aolrtf; charset="us-ascii"
|
0x0003
|
TLV
|
Away message. TLV value is NULL (and len is 0) if you're not away.
|
0x0004
|
TLV
|
Capability block
|
0x0005
|
The following table illustrates the capability sets; you could easily send up this entire thing and forget about it, but if you want to be specific, send only those that your client supports. This way, other clients will be notified of your capabilites, and be stopped/warned when sending you requests that you're not capable of dealing with. Hence the word "capability".. :)
Container
|
Data
|
Buddy icon
|
0x09, 0x46, 0x13, 0x46, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
|
Voice
|
0x09, 0x46, 0x13, 0x41, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
|
IM image
|
0x09, 0x46, 0x13, 0x45, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54,0x00, 0x00
|
Chat
|
0x74, 0x8f, 0x24, 0x20, 0x62, 0x87, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
|
Get file
|
0x09, 0x46, 0x13, 0x48, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
|
Send file
|
0x09, 0x46, 0x13, 0x43, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
|
From Aleksandr Shutko: SNAC(02,04) LOCATE__SET_INFO
Client use this snac to set its location information (like client profile string,
client directory profile string, client capabilities). Capability - 16 byte array,
also known as CLSID string. Current ICQ versions update only caps info - TLV(0x05).
00 02 |
|
word |
|
SNAC family |
00 04 |
|
word |
|
SNAC subtype |
xx xx |
|
word |
|
SNAC flags |
xx xx xx xx |
|
dword |
|
SNAC request-id |
|
|
|
00 01 |
|
word |
|
TLV.Type(0x01) - mime type |
xx xx |
|
word |
|
TLV.Length |
|
xx ..... xx |
|
string |
|
mime type name |
|
|
| |
|
|
|
00 05 |
|
word |
|
TLV.Type(0x05) - CLSID values |
xx xx |
|
word |
|
TLV.Length |
|
|
|
| |
|
|
|
|
Example SNAC dump with flap header:
2A 02 22 A0 00 4E 00 02 00 04 00 00 00 00 00 04 *."..N..........
00 05 00 40 09 46 13 49 4C 7F 11 D1 82 22 44 45 ...@.F.IL...."DE
53 54 00 00 97 B1 27 51 24 3C 43 34 AD 22 D6 AB ST.....Q$.C4....
F7 3F 14 92 2E 7A 64 75 FA DF 4D C8 88 6F EA 35 .?...zdu..M..o.5
95 FD B6 DF 09 46 13 44 4C 7F 11 D1 82 22 44 45 .....F.DL...."DE
53 54 00 00 ST..
|
|
LOCATE SNACs
SNAC List
Subgroup
|
Origin
|
Name
|
0x0001
|
Any
|
LOCATE__ERR
|
This is the error SNAC for the LOCATE foodgroup.
|
0x0002
|
Client
|
LOCATE__RIGHTS_QUERY
|
This query is sent to the server by the client to discover what some of its rights are with respect to the PD SNAC group.
|
0x0003
|
Host
|
LOCATE__RIGHTS_REPLY
|
This is the response to the LOCATE__RIGHTS_QUERY SNAC.
|
0x0004
|
Client
|
LOCATE__SET_INFO
|
The client may set SIG, UNAVAILABLE, and CAPABILITIES type and data tags with this SNAC.
|
0x0005
|
Client
|
LOCATE__USER_INFO_QUERY
|
Request user information for profiles, capabilities, away message, and certificates.
|
0x0006
|
Host
|
LOCATE__USER_INFO_REPLY
|
This is the usual response to a LOCATE__USER_INFO_QUERY2 SNAC.
|
0x0007
|
Client
|
LOCATE__WATCHER_SUB_REQUEST
|
Watcher sub request.
|
0x0008
|
Host
|
LOCATE__WATCHER_NOTIFICATION
|
Watcher sub notification.
|
0x0009
|
Client
|
LOCATE__SET_DIR_INFO
|
Set directory info. Host will reply LOCATE__SET_DIR_REPLY.
|
0x000A
|
Host
|
LOCATE__SET_DIR_REPLY
|
Reply to LOCATE__SET_DIR_INFO.
|
0x000B
|
Client
|
LOCATE__GET_DIR_INFO
|
Get directory information for user. Host should reply with LOCATE__GET_DIR_REPLY.
|
0x000C
|
Host
|
LOCATE__GET_DIR_REPLY
|
Host reply to LOCATE__GET_DIR_INFO.
|
0x000D
|
NCD
|
LOCATE__GROUP_CAPABILITY_QUERY
|
This is not currently documented. Want to contribute?
|
0x000E
|
NCD
|
LOCATE__GROUP_CAPABILITY_REPLY
|
This is not currently documented. Want to contribute?
|
0x000F
|
Client
|
LOCATE__SET_KEYWORD_INFO
|
Set profile keywords and interests. Host should reply with LOCATE__SET_KEYWORD_REPLY.
|
0x0010
|
Host
|
LOCATE__SET_KEYWORD_REPLY
|
This is the host reply to LOCATE__SET_KEYWORD_REPLY.
|
0x0011
|
Client
|
LOCATE__GET_KEYWORD_INFO
|
Set profile keywords and interests. Host should reply with LOCATE__SET_KEYWORD_REPLY.
|
0x0012
|
Host
|
LOCATE__GET_KEYWORD_REPLY
|
This is the host reply to LOCATE__SET_KEYWORD_REPLY.
|
0x0013
|
Client
|
LOCATE__FIND_LIST_BY_EMAIL
|
This is a query sent to the server that looks up a list of users by their email address and returns one NickwInfo for each email account queried.
|
0x0014
|
Host
|
LOCATE__FIND_LIST_REPLY
|
This SNAC provides the results of the LOCATE__FIND_LIST_BY_EMAIL.
|
0x0015
|
Client
|
LOCATE__USER_INFO_QUERY2
|
This SNAC is sent by the client to perform the basic locate query on a user.
|
|