|
|
(9 intermediate revisions by the same user not shown) |
Line 4: |
Line 4: |
| |name=OSERVICE__CLIENT_ONLINE | | |name=OSERVICE__CLIENT_ONLINE |
| |id=0x0001, 0x0002 | | |id=0x0001, 0x0002 |
| | |foodgroup=OSERVICE |
| |service={{Protocols/OSCAR/Foodgroups/OSERVICE/Service}} | | |service={{Protocols/OSCAR/Foodgroups/OSERVICE/Service}} |
| |status={{Protocols/OSCAR/Foodgroups/OSERVICE/Status}} | | |status={{Protocols/OSCAR/Foodgroups/OSERVICE/Status}} |
Line 18: |
Line 19: |
|
| |
|
| == SNAC Data == | | == SNAC Data == |
| @SRC: C
| | The client may have used groups not in groupVersions during initialization, but once this SNAC has been received by the server, SNACs in groups not specified in groupVersions will be rejected. Other users will not see this user online until this SNAC is sent. |
| @DESC: Notifies the server that we're on-line and ready to receive messages. I have no idea what any of this means at the moment...
| |
|
| |
|
| | {| class="wikitable" |
| | ! Name |
| | ! Type |
| | ! Notes |
| | |- |
| | | groupVersions |
| | | Rest of SNAC array of [[Protocols/OSCAR/SNAC/OSERVICE_CLIENT_ONLINE#Datatype:_OSERVICE_CLIENT_VERSIONS|OSERVICE__CLIENT_VERSIONS]] |
| | | All foodgroups the client wants to support |
| | |} |
|
| |
|
| Unconfirmed:
| | === Datatype: OSERVICE__CLIENT_VERSIONS === |
| Container Data TLV Type
| |
| RAW SNAC Header
| |
| RAW 0x0001
| |
| RAW 0x0003
| |
| RAW 0x0004
| |
| RAW 0x0686
| |
| RAW 0x0002
| |
| RAW 0x0001
| |
| RAW 0x0004
| |
| RAW 0x0001
| |
| RAW 0x0003
| |
| RAW 0x0001
| |
| RAW 0x0004
| |
| RAW 0x0001
| |
| RAW 0x0004
| |
| RAW 0x0001
| |
| RAW 0x0004
| |
| RAW 0x0001
| |
| RAW 0x0009
| |
| RAW 0x0001
| |
| RAW 0x0004
| |
| RAW 0x0001
| |
| RAW 0x000a
| |
| RAW 0x0001
| |
| RAW 0x0004
| |
| RAW 0x0001
| |
| RAW 0x000b
| |
| RAW 0x0001
| |
| RAW 0x0004
| |
| RAW 0x0001
| |
| --------------------------------------
| |
| * SnacCommand family 0x0001, type 0x0002
| |
| * SnacFamilyVersionsBlock: {{{family1}}}
| |
| * SnacFamilyVersionsBlock: {{{family2}}}
| |
| * SnacFamilyVersionsBlock: {{{family3}}}...
| |
| ---------------------------------------
| |
| -------------------------------------------
| |
| The client-is-ready SNAC is sent by the OSCAR client as the final
| |
| step of LoggingIn. The format of this packet is:
| |
|
| |
|
| [[Include(/Format)]]
| | Description of a foodgroup and the version of that foodgroup the client wants to use when communicating with the backend. |
|
| |
|
| The SNAC contains a series of SnacFamilyVersionsBlock``s, one for
| | {| class="wikitable" |
| each SNAC family supported.
| | ! Name |
| | ! Type |
| | ! Notes |
| | |- |
| | | foodgroup |
| | | uint16 (word) |
| | | Foodgroup that the version represents |
| | |- |
| | | version |
| | | uint16 (word) |
| | | Version of the foodgroup implementation; Currently 0x04 for OSERVICE, 0x03 for FEEDBAG, and 0x01 for all others |
| | |- |
| | | tool_id |
| | | uint16 (word) |
| | | Should be 41 for all Open AIM clients |
| | |- |
| | | tool_version |
| | | uint16 (word) |
| | | Any version number the developer would like, usually the build number |
| | |} |
|
| |
|
| Since your client does not use the AIM modules ("tools"), it should
| | ==== Example ==== |
| probably emulate the values sent by the official AIM clients. See
| |
| ClientReadySnac for details. As of AIM 5.5.3415 beta, the SNAC
| |
| family versions and tool versions sent are as follows:
| |
|
| |
|
| || Family || Version || Tool ID || Tool version ||
| | Here is an example, as seen with BOS sign on, of the raw SNAC data split up to demonstrate the otherwise in-line data. |
| || 0x0001 || 0x0004 || 0x0010 || 0x0801 ||
| |
| || 0x0002 || 0x0001 || 0x0110 || 0x0801 ||
| |
| || 0x0003 || 0x0001 || 0x0110 || 0x0801 ||
| |
| || 0x0004 || 0x0001 || 0x0110 || 0x0801 ||
| |
| || 0x0006 || 0x0001 || 0x0110 || 0x0801 ||
| |
| || 0x0008 || 0x0001 || 0x0104 || 0x0001 ||
| |
| || 0x0009 || 0x0001 || 0x0110 || 0x0801 ||
| |
| || 0x000a || 0x0001 || 0x0110 || 0x0801 ||
| |
| || 0x000b || 0x0001 || 0x0104 || 0x0001 ||
| |
| || 0x0013 || 0x0003 || 0x0110 || 0x0801 ||
| |
| ------------------------------------------------- | |
| * UnsignedShort: {{{family}}}
| |
| * UnsignedShort: {{{version}}}
| |
| * UnsignedShort: {{{toolID}}}
| |
| * UnsignedShort: {{{toolVersion}}}
| |
|
| |
|
| | {| class="wikitable" |
| | ! Foodgroup |
| | ! Version |
| | ! Tool ID |
| | ! Tool version |
| | |- |
| | | [[Protocols/OSCAR/SNAC_01|0x0001]] |
| | | 0x0004 |
| | | 0x0010 |
| | | 0x0801 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_02|0x0002]] |
| | | 0x0001 |
| | | 0x0110 |
| | | 0x0801 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_03|0x0003]] |
| | | 0x0001 |
| | | 0x0110 |
| | | 0x0801 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_04|0x0004]] |
| | | 0x0001 |
| | | 0x0110 |
| | | 0x0801 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_06|0x0006]] |
| | | 0x0001 |
| | | 0x0110 |
| | | 0x0801 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_08|0x0008]] |
| | | 0x0001 |
| | | 0x0104 |
| | | 0x0001 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_09|0x0009]] |
| | | 0x0001 |
| | | 0x0110 |
| | | 0x0801 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_0A|0x000A]] |
| | | 0x0001 |
| | | 0x0110 |
| | | 0x0801 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_0B|0x000B]] |
| | | 0x0001 |
| | | 0x0104 |
| | | 0x0001 |
| | |- |
| | | [[Protocols/OSCAR/SNAC_13|0x0013]] |
| | | 0x0003 |
| | | 0x0110 |
| | | 0x0801 |
| | |} |
|
| |
|
| ---------------------------------
| | ==== Client Version Map ==== |
|
| |
|
| The SNAC family versions block is used to store version information for a SNAC family. This structure is used solely in the ClientReadySnac. The format of this data structure is as follows:
| | A list of clients and their corresponding foodgroups, versions, and tool IDs and tool versions. |
|
| |
|
| [[Include(/Format)]] | | [[Protocols/OSCAR/Clients/Version_Map|See More]] |
| | |
| {{{family}}} is the SNAC family ID. {{{version}}} is the version of that family supported. {{{toolID}}} describes which AIM module is being used to communicate with the family; {{{toolVersion}}} is the version of that module.
| |
| | |
| Since your client does not use the AIM modules, it should probably emulate the values sent by the official AIM clients. See ClientReadySnac for details.
| |
| | |
| | |
| | |
| === Datatype: OSERVICE__VERSIONS ==
| |
|
| |
|
| == OSERVICE SNACs == | | == OSERVICE SNACs == |
| {{Protocols/OSCAR/Foodgroups/OSERVICE/SNACs/Simple}} | | {{Protocols/OSCAR/Foodgroups/OSERVICE/SNACs/Simple}} |
|
| |
|
| [[Category:Stub]]
| |
| [[Category:AOL]] | | [[Category:AOL]] |
| [[Category:AIM]] | | [[Category:AIM]] |
| [[Category:Protocols/OSCAR]] | | [[Category:Protocols/OSCAR]] |
| [[Category:Protocols/OSCAR/SNACs]] | | [[Category:Protocols/OSCAR/SNACs]] |
| [[Category:Work_In_Progress]] | | [[Category:Functionally_Complete]] |
ID
|
Origin
|
Name
|
Foodgroup
|
Service
|
Status
|
Version
|
0x0001, 0x0002
|
Client
|
OSERVICE__CLIENT_ONLINE
|
OSERVICE
|
All
|
Active
|
4.0
|
This message is sent by the client once it has initialized the host state (set preferences, Buddy Lists, locate information, capabilities) and is ready to be announced as being online by the host.
Foodgroup
|
uint16 (word)
|
00 01
|
Subgroup
|
uint16 (word)
|
00 02
|
Flags
|
uint16 (word)
|
00 00
|
Request ID
|
uint32 (dword)
|
00 00 00 00
|
SNAC Data
The client may have used groups not in groupVersions during initialization, but once this SNAC has been received by the server, SNACs in groups not specified in groupVersions will be rejected. Other users will not see this user online until this SNAC is sent.
Datatype: OSERVICE__CLIENT_VERSIONS
Description of a foodgroup and the version of that foodgroup the client wants to use when communicating with the backend.
Name
|
Type
|
Notes
|
foodgroup
|
uint16 (word)
|
Foodgroup that the version represents
|
version
|
uint16 (word)
|
Version of the foodgroup implementation; Currently 0x04 for OSERVICE, 0x03 for FEEDBAG, and 0x01 for all others
|
tool_id
|
uint16 (word)
|
Should be 41 for all Open AIM clients
|
tool_version
|
uint16 (word)
|
Any version number the developer would like, usually the build number
|
Example
Here is an example, as seen with BOS sign on, of the raw SNAC data split up to demonstrate the otherwise in-line data.
Foodgroup
|
Version
|
Tool ID
|
Tool version
|
0x0001
|
0x0004
|
0x0010
|
0x0801
|
0x0002
|
0x0001
|
0x0110
|
0x0801
|
0x0003
|
0x0001
|
0x0110
|
0x0801
|
0x0004
|
0x0001
|
0x0110
|
0x0801
|
0x0006
|
0x0001
|
0x0110
|
0x0801
|
0x0008
|
0x0001
|
0x0104
|
0x0001
|
0x0009
|
0x0001
|
0x0110
|
0x0801
|
0x000A
|
0x0001
|
0x0110
|
0x0801
|
0x000B
|
0x0001
|
0x0104
|
0x0001
|
0x0013
|
0x0003
|
0x0110
|
0x0801
|
Client Version Map
A list of clients and their corresponding foodgroups, versions, and tool IDs and tool versions.
See More
OSERVICE SNACs
SNAC List
Subgroup
|
Origin
|
Name
|
0x0001
|
Any
|
OSERVICE__ERR
|
This is the error SNAC for the OSERVICE foodgroup.
|
0x0002
|
Client
|
OSERVICE__CLIENT_ONLINE
|
This message is sent by the client once it has initialized the host state (set preferences, Buddy Lists, locate information, capabilities) and is ready to be announced as being online by the host.
|
0x0003
|
Host
|
OSERVICE__HOST_ONLINE
|
This is the very first SNAC sent from the host to the client after the FLAP signon frames are sent. It contains an array of all of the foodgroups the service supports.
|
0x0004
|
Client
|
OSERVICE__SERVICE_REQUEST
|
This SNAC requests that the specified service (foodgroup) be provided to it in a way further specified by qualifying parameters.
|
0x0005
|
Host
|
OSERVICE__SERVICE_RESPONSE
|
This SNAC contains information about connecting to the new server. It is the response from the server to a service request.
|
0x0006
|
Client
|
OSERVICE__RATE_PARAMS_QUERY
|
This SNAC is sent by the client to query for the current rate limit parameters.
|
0x0007
|
Host
|
OSERVICE__RATE_PARAMS_REPLY
|
Contains response to the OSERVICE__RATE_PARAMS_QUERY.
|
0x0008
|
Client
|
OSERVICE__RATE_PARAMS_SUB_ADD
|
Subscribe to any rate parameter changes among the specified class IDs. If there was no prior subscription for a given class ID, an immediate notification will be queued.
|
0x0009
|
Client
|
OSERVICE__RATE_DEL_PARAM_SUB
|
Cancels any rate parameter subscriptions for the specified class IDs.
|
0x000A
|
Host
|
OSERVICE__RATE_PARAM_CHANGE
|
This contains an array of class rate parameters that have changed since last query or notification.
|
0x000B
|
Host
|
OSERVICE__PAUSE_REQ
|
This is sent by the server when it needs to migrate the client.
|
0x000C
|
Client
|
OSERVICE__PAUSE_ACK
|
This is sent by the client to acknowledge the receipt and processing of a OSERVICE__PAUSE_REQ SNAC request.
|
0x000D
|
Host
|
OSERVICE__RESUME
|
In certain situations the server may abort a migration after having told the client to PAUSE.
|
0x000E
|
Client
|
OSERVICE__USER_INFO_QUERY
|
This is a query to find out one's current info. The server will send a OSERVICE__USER_INFO_UPDATE.
|
0x000F
|
Host
|
OSERVICE__USER_INFO_UPDATE
|
This SNAC is sent by the server whenever significant parts of a user's info change.
|
0x0010
|
Host
|
OSERVICE__EVIL_NOTIFICATION
|
This is a notice that the user's evil level has changed.
|
0x0011
|
Client
|
OSERVICE__IDLE_NOTIFICATION
|
This SNAC is sent by the client to inform the server of the user's idle state.
|
0x0012
|
Host
|
OSERVICE__MIGRATE_GROUPS
|
This SNAC commands the client to reconnect to the server specified by the included OSERVICE__TLV_TAGS_RECONNECT_HERE TLV.
|
0x0013
|
Host
|
OSERVICE__MOTD
|
Message of the day (MOTD). Often contains upgrade information for clients as well as notices about clients.
|
0x0014
|
Client
|
OSERVICE__SET_PRIVACY_FLAGS
|
Set privacy flags.
|
0x0015
|
Host
|
OSERVICE__WELL_KNOWN_URLS
|
Service related URLs for the client to use or provide to the user.
|
0x0016
|
Client
|
OSERVICE__NOOP
|
Legacy SNAC keepalive, replaced in large part with FLAP level keepalive.
|
0x0017
|
Client
|
OSERVICE__CLIENT_VERSIONS
|
Sent after OSERVICE__HOST_ONLINE, it contains the client's foodgroup version list so the host knows what functionality the client is capable of.
|
0x0018
|
Host
|
OSERVICE__HOST_VERSIONS
|
The host responds to OSERVICE__CLIENT_VERSIONS with its foodgroup version list so that the client knows what this host provides and its capabilities.
|
0x0019
|
NCD
|
OSERVICE__MAX_CONFIG_QUERY
|
This is not currently documented. Want to contribute?
|
0x001A
|
NCD
|
OSERVICE__MAX_CONFIG_REPLY
|
This is not currently documented. Want to contribute?
|
0x001B
|
NCD
|
OSERVICE__STORE_CONFIG
|
This is not currently documented. Want to contribute?
|
0x001C
|
NCD
|
OSERVICE__CONFIG_QUERY
|
This is not currently documented. Want to contribute?
|
0x001D
|
NCD
|
OSERVICE__CONFIG_REPLY
|
This is not currently documented. Want to contribute?
|
0x001E
|
Client
|
OSERVICE__SET_USERINFO_FIELDS
|
This allows the client to set some of the fields in user info that are sent to every client.
|
0x001F
|
Host
|
OSERVICE__PROBE_REQ
|
Client verification request.
|
0x0020
|
Client
|
OSERVICE__PROBE_ACK
|
Client verification reply.
|
0x0021
|
Host
|
OSERVICE__BART_REPLY
|
This reply is used to tell the client that a BART item needs to be uploaded or changed.
|
0x0022
|
Client
|
OSERVICE__BART_QUERY2
|
This query sees if the BART IDs are available; OSERVICE__BART_REPLY2 is sent as a response.
|
0x0023
|
Host
|
OSERVICE__BART_REPLY2
|
This SNAC is sent on initial login about items in the personality section of the Feedbag. It is also used in response to a OSERVICE__BART_QUERY2.
|
|