Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO: Difference between revisions
Line 234: | Line 234: | ||
===Class: OSERVICE__USER_STATUS === | ===Class: OSERVICE__USER_STATUS === | ||
==== From Aleksandr Shutko: User status ==== | |||
<table width=640 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=100% cellSpacing=0 cellPadding=0 bgcolor="#4040FF" border=0> | |||
<tr> | |||
<td><b><font size=2 color="white"> <a name="user_status"></a>User status </font></b></td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0> | |||
<tr><td colspan=3 height=5></td></tr> | |||
<tr><td width=5> </td> | |||
<td> | |||
<a name="m0004"></a> | |||
ICQ service presence notifications use user status field which consist of | |||
two parts. First is a various flags (birthday flag, webaware flag, etc). | |||
Second is a user status (online, away, busy, etc) flags. Each part is a two | |||
bytes long. Here is the list of masks for both parts:<br><br> | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td width=20></td> | |||
<td> | |||
<table width=570 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0> | |||
<tr><td bgcolor=#E5E5E5> | |||
<table width=570 cellSpacing=1 cellPadding=1 border=0> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=50 valign=top> <b>0x0001</b></td> | |||
<td bgcolor=#f9f9f9 width=1 valign=top> OSERVICE__USER_STATUS_FLAG_WEBAWARE (@RUS STATUS_WEBAWARE) </td> | |||
<td bgcolor=#f9f9f9 width=350 valign=top> Status webaware flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0002</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_FLAG_SHOWIP (@RUS STATUS_SHOWIP) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Status show ip flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0008</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_FLAG_BIRTHDAY (@RUS STATUS_BIRTHDAY) </td> | |||
<td bgcolor=#f9f9f9 valign=top> User birthday flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0020</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_FLAG_WEBFRONT (@RUS STATUS_WEBFRONT) </td> | |||
<td bgcolor=#f9f9f9 valign=top> User active webfront flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0100</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_FLAG_DCDISABLED (@RUS STATUS_DCDISABLED) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Direct connection not supported</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x1000</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_FLAG_IP_EXPOSE_NONE (@RUS STATUS_DCAUTH) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Direct connection upon authorization</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x2000</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_FLAG_IP_EXPOSE_BL (@RUS STATUS_DCCONT) </td> | |||
<td bgcolor=#f9f9f9 valign=top> DC only with contact users</td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
<table width=100% cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td width=20></td> | |||
<td> | |||
<table width=570 bgcolor=darkblue cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0> | |||
<tr><td bgcolor=#E5E5E5> | |||
<table width=570 cellSpacing=1 cellPadding=1 border=0> | |||
<tr> | |||
<td bgcolor=#f9f9f9 width=50 valign=top> <b>0x0000</b></td> | |||
<td bgcolor=#f9f9f9 width=1 valign=top> OSERVICE__USER_STATUS_MASK_NORMAL (@RUS STATUS_ONLINE) </td> | |||
<td bgcolor=#f9f9f9 width=350 valign=top> Status is online</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0001</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_MASK_AWAY (@RUS STATUS_AWAY) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Status is away</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0002</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_MASK_DND (@RUS STATUS_DND) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Status is no not disturb (DND)</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0004</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_MASK_NA (@RUS STATUS_NA) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Status is not available (N/A)</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0010</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_MASK_BUSY (@RUS STATUS_OCCUPIED) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Status is occupied (BISY)</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0020</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_MASK_FREE4CHAT (@RUS STATUS_FREE4CHAT) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Status is free for chat</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0100</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_STATUS_MASK_INVISIBLE (@RUS STATUS_INVISIBLE) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Status is invisible</td> | |||
</tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
</td> | |||
<td width=15></td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
=== TLV Class: OSERVICE__USER_INFO_TAGS === | === TLV Class: OSERVICE__USER_INFO_TAGS === |
Revision as of 10:07, 14 February 2021
OSCAR Protocol |
Introduction • Terms • Clients |
Basic |
Datatypes • FLAP • SNAC • TLV |
UUIDs • Errors • Tool IDs |
Host Interaction |
Rate Limits • Migration • Messages |
Other Services |
ADMIN • ADVERT • ALERT |
BART • BOS • BUCP • CHAT |
CHAT_NAV |
Tutorials |
Sign On • BART • Rendezvous |
ICBM • Locate • Buddies |
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) |
Due to the common nature and detailed information for the USERINFO datatype, it was separated here. It largely is in use within the OSERVICE foodgroup.
Usages
Protocols/OSCAR/SNAC/OSERVICE_USER_INFO_QUERY
Protocols/OSCAR/SNAC/OSERVICE_USER_INFO_UPDATE
Protocols/OSCAR/SNAC/OSERVICE_SET_USERINFO_FIELDS
Datatype: OSERVICE__USERINFO
Common data structure that contains a user's username and information about their session.
Name | Type | Notes |
---|---|---|
displayId | string08 | Formated username |
evil | uint16 (word) | Warning level of user |
userAttributes | tlvBlock | [Class: OSERVICE__USER_INFO_TAGS] TLV Block of user attributes |
Class: OSERVICE__USER_FLAGS
Bits specifying a user's characteristics; For compatibility reasons the lower 2 bytes of USER_FLAGS are sent in the USER_FLAGS tag, while the upper bytes are sent in the USER_FLAGS2 tag.
To form the full user flags the client needs to combine USER_FLAGS and USER_FLAGS2 shifted to the left 2 bytes. USER_FLAGS is always a uint16 (word), which USER_FLAGS2 can be any size. Another way to express the math: userFlags = USER_FLAG | (USER_FLAGS2 << 0x10)
Name | Value | Notes |
---|---|---|
OSERVICE__USER_FLAG_DAMNED_TRANSIENT | 0x0001 | Unconfirmed account |
OSERVICE__USER_FLAG_ADMINISTRATOR | 0x0002 | NINA Administrator |
OSERVICE__USER_FLAG_AOL | 0x0004 | User is on an AOL client |
OSERVICE__USER_FLAG_OSCAR_PAY | 0x0008 | NINA commercial account |
OSERVICE__USER_FLAG_OSCAR_FREE | 0x0010 | NINA free account, typically AIM |
OSERVICE__USER_FLAG_UNAVAILABLE | 0x0020 | User is away |
OSERVICE__USER_FLAG_ICQ | 0x0040 | ICQ user; AIM bit will also be set |
OSERVICE__USER_FLAG_WIRELESS | 0x0080 | On a mobile device |
OSERVICE__USER_FLAG_INTERNAL | 0x0100 | Account for internal use |
OSERVICE__USER_FLAG_FISH | 0x0200 | Using IM Forwarding |
OSERVICE__USER_FLAG_BOT | 0x0400 | Bot user |
OSERVICE__USER_FLAG_BEAST | 0x0800 | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_FLAG_ONE_WAY_WIRELESS | 0x1000 | One way wireless device |
OSERVICE__USER_FLAG_OFFICIAL | 0x2000 | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_FLAG_BUDDY_MATCH_DIRECT | 0x10000 | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_FLAG_BUDDY_MATCH_INDIRECT | 0x20000 | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_FLAG_NO_KNOCK_KNOCK | 0x00040000 | Do not display the "not on your Buddy List" knock-knock as the server took care of it or the sender is trusted |
FORWARD_MOBILE | 0x00080000 | If no active instances forward to mobile |
From Aleksandr Shutko: User classes
|
Class: OSERVICE__USER_STATUS
From Aleksandr Shutko: User status
|
TLV Class: OSERVICE__USER_INFO_TAGS
These tags contain information about users and their server state.
Name | Tag | Type | Notes |
---|---|---|---|
OSERVICE__USER_INFO_USER_FLAGS | 0x01 | uint16 (word) | [Class: OSERVICE__USER_FLAGS] Flags that represent the user's state |
OSERVICE__USER_INFO_CREATE_TOD | 0x02 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_SIGNON_TOD | 0x03 | t70 | Signon time |
OSERVICE__USER_INFO_IDLE_TIME | 0x04 | uint16 (word) | Idle time in minutes |
OSERVICE__USER_INFO_MEMBER_SINCE | 0x05 | t70 | Approximation of NINA membership |
OSERVICE__USER_INFO_STATUS | 0x06 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_CLIENTTYPE | 0x08 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_REALIPADDRESS | 0x0A | uint32 (dword) | Network byte order IPv4 address |
OSERVICE__USER_INFO_REALIPV6ADDRESS | 0x6A | string | String of IPv6 address |
OSERVICE__USER_INFO_ICQINFO | 0x0C | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_OSCAR_CAPS | 0x0D | Array of UUID | Client capabilities - if not present use the previous values received; if present but empty, clear previous values |
OSERVICE__USER_INFO_AOL_CAPS | 0x0E | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_OSCAR_OT | 0x0F | uint32 (dword) | Online time in seconds, if user is using OSCAR |
OSERVICE__USER_INFO_AOL_OT | 0x10 | uint32 (dword) | Online time in seconds, if user is using P3 |
OSERVICE__USER_INFO_ICQ_BROAD_BLOB | 0x11 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_ICQ_BROAD_TYPE | 0x12 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_INSTANCES | 0x13 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_MY_INSTANCE_NUM | 0x14 | uint8 (byte) | Set in first user info. Identifies the instance number of this client |
OSERVICE__USER_INFO_MY_PARENTAL_CONTROLS | 0x15 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_MY_ZIP | 0x16 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_MY_BOT_INFO | 0x17 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_ALIAS | 0x18 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_SHORT_OSCAR_CAPS | 0x19 | Array of uint16 (word) | Short form of capabilities |
OSERVICE__USER_INFO_SHORT_AOL_CAPS | 0x1A | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_ENCRYPTION_CERT_MD5 | 0x1B | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_BART_INFO | 0x1D | Array of BART__ID | Expressions |
OSERVICE__USER_INFO_MY_SUBSCRIPTIONS | 0x1E | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_USER_FLAGS2 | 0x1F | Array of uint8 (byte) | [Class: OSERVICE__USER_FLAGS] Upper bytes of user flags, can be any size. userFlags = USER_FLAG | (USER_FLAGS2 << 16) |
OSERVICE__USER_INFO_UNKNOWN_22 | 0x22 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_BUDDY_FEED_TIME | 0x23 | t70 | Last Buddy Feed update time |
OSERVICE__USER_INFO_SIG_TIME | 0x26 | t70 | Time that the profile was set |
OSERVICE__USER_INFO_AWAY_TIME | 0x27 | t70 | Time that away was set |
OSERVICE__USER_INFO_PRIMARY_INSTANCE | 0x28 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_UNKNOWN_29_TIME | 0x29 | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_GEO_COUNTRY | 0x2A | string | Two character country code. Sent from host to client if country is known |
OSERVICE__USER_INFO_BUDDY_UPDATE_INDC_URL | 0x2B | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_UNKNOWN_2C | 0x2C | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_UNKNOWN_2D | 0x2D | ? | NOT CURRENTLY DOCUMENTED |
OSERVICE__USER_INFO_UNKNOWN_2F | 0x2F | ? | NOT CURRENTLY DOCUMENTED |