Protocols/OSCAR/SNAC/LOCATE SET INFO

From NINA Wiki
Jump to navigation Jump to search
OSCAR Protocol
IntroductionTermsClients
Basic
DatatypesFLAPSNACTLV
UUIDsErrorsTool IDs
Host Interaction
Rate LimitsMigrationMessages
Other Services
ADMINADVERTALERT
BARTBOSBUCPCHAT
CHAT_NAV
Tutorials
Sign OnBARTRendezvous
ICBMLocateBuddies
Foodgroups
OSERVICE (0x0001)
LOCATE (0x0002)
BUDDY (0x0003)
ICBM (0x0004)
ADVERT (0x0005)
INVITE (0x0006)
ADMIN (0x0007)
POPUP (0x0008)
PD (0x0009)
USER_LOOKUP (0x000A)
STATS (0x000B)
TRANSLATE (0x000C)
CHAT_NAV (0x000D)
CHAT (0x000E)
ODIR (0x000F)
BART (0x0010)
FEEDBAG (0x0013)
ICQ (0x0015)
BUCP (0x0017)
ALERT (0x0018)
PLUGIN (0x0022)
UNNAMED_FG_24 (0x0024)
MDIR (0x0025)
ARS (0x044A)
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.

SNAC Header

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
 xx ..... xx   array   Client capabilities list


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.