Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO: Difference between revisions
No edit summary |
No edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
Due to the common nature and detailed information for the USERINFO datatype, it was separated here. It largely is in use within the [[Protocols/OSCAR/Foodgroups/OSERVICE|OSERVICE]] foodgroup. | Due to the common nature and detailed information for the USERINFO datatype, it was separated here. It largely is in use within the [[Protocols/OSCAR/Foodgroups/OSERVICE|OSERVICE]] foodgroup. | ||
== Usages == | === 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. | |||
{| class="wikitable" | |||
! Name | |||
! Type | |||
! Notes | |||
|- | |||
| displayId | |||
| string08 | |||
| Formated username | |||
|- | |||
| evil | |||
| uint16 (word) | |||
| Warning level of user | |||
|- | |||
| userAttributes | |||
| [[Protocols/OSCAR/TLV|tlvBlock]] | |||
| ''[Class: [[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#TLV_Class:_OSERVICE_USER_INFO_TAGS|OSERVICE__USER_INFO_TAGS]]]'' TLV Block of user attributes | |||
|} | |||
==== From Aleksandr Shutko: Basic OSCAR information (Online userinfo block) ==== | |||
<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=#4040FF> | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0><tr><td><b> | |||
<font color="white"> Basic OSCAR information (Userinfo block) </font> | |||
</b></td><td width=40% align=right><b><font color="white"> </font></b> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
<table width=640 cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<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"> | |||
Online userinfo block </font></b></td> | |||
</tr></table> | |||
</td></tr><tr><td bgcolor=#E9E9E9> | |||
<table width=100% cellSpacing=0 cellPadding=0 border=0> | |||
<tr><td width=5> </td><td><br> | |||
| |||
Many usefull SNACs contain special block with online user information. This block | |||
allways contain screenname (uin), warning level and number of TLVs in TLV chain. | |||
TLV chain contain additional user information like DC info, status, user class, | |||
idle time, online time, external ip address, account registration time, etc... | |||
<br><br> | |||
| |||
Here is the list of SNACs that contain userinfo block: SNAC(03,0B), SNAC(04,07), | |||
SNAC(0E,06), SNAC(01,0F), SNAC(01,10), SNAC(02,06), ... Most of them contain just | |||
three TLVs: user class, idle time, online time. | |||
<br><br> | |||
| |||
Note that you may find TLV not listed here in userinfo block. If you have such | |||
new TLV, please send it to author of this documentation. Here is the format of | |||
the online userinfo block (all TLVs are optional): | |||
<br><br> | |||
<table width=620 cellSpacing=0 cellPadding=0 align=center border=0><tr><td width=20></td><td> | |||
<table width=600 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 border=0><tr><td bgcolor=#FAFAFA> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=20></td> | |||
<td width=125> xx</td> | |||
<td width=5> </td> | |||
<td>byte</td> | |||
<td width=5> </td> | |||
<td width=330>screenname (uin) length</td> | |||
</tr> | |||
<tr> | |||
<td></td> | |||
<td> xx ..</td> | |||
<td> </td> | |||
<td>ascii</td> | |||
<td> </td> | |||
<td>screenname (uin) string</td> | |||
</tr> | |||
<tr> | |||
<td></td> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>warning level</td> | |||
</tr> | |||
<tr> | |||
<td></td> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>number of tlvs in tlv-chain</td> | |||
</tr> | |||
</table> | |||
</td></tr><tr><td bgcolor=#FAFAFA> | |||
<!-- nested tlv(0x01) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> 00 01</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x01) - user class <span >(nick flags)</span></td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=324>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS|User class]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x01) end--> | |||
<!-- nested tlv(0x02) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0 > | |||
<tr> | |||
<td width=125> 00 02</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x02) - create time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0 > | |||
<tr> | |||
<td width=125> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=324>create time (unix time_t format)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x02) end--> | |||
<!-- nested tlv(0x03) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> 00 03</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x03) - signon time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=324>signon time (unix time_t format)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x03) end--> | |||
<!-- nested tlv(0x04) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0 > | |||
<tr> | |||
<td width=125> 00 04</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x04) - idle time</td> | |||
</tr> | |||
<tr> | |||
<td> 00 02</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0 > | |||
<tr> | |||
<td width=125> xx xx</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>idle time (in seconds)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x04) end--> | |||
<!-- nested tlv(0x05) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> 00 05</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x05) - account creation time <span><br>(member since)</span></td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=324>time when this account was registered</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x05) end--> | |||
<!-- nested tlv(0x06) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> 00 06</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x06) - user status [ICQ only]</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=324>[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_STATUS|User status]]</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x06) end--> | |||
<!-- nested tlv(0x0A) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> 00 0A</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x0A) - external ip addr [ICQ only]</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=324>External ip address</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x0A) end--> | |||
<!-- nested tlv(0x0C) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> 00 0C</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x0C) - user DC info [ICQ only]</td> | |||
</tr> | |||
<tr> | |||
<td> 00 25</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=324>DC internal ip address</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>DC tcp port</td> | |||
</tr> | |||
<tr> | |||
<td> xx</td> | |||
<td> </td> | |||
<td>byte</td> | |||
<td> </td> | |||
<td>[[Protocols/OSCAR/Foodgroups/ICQ#Types|DC type]]</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>DC protocol version</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>DC auth cookie</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>Web front port</td> | |||
</tr> | |||
<tr> | |||
<td> 00 00 00 03</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>Client futures</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>last info update time</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>last ext info update time (i.e. icqphone status)</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx xx xx</td> | |||
<td> </td> | |||
<td>dword</td> | |||
<td> </td> | |||
<td>last ext status update time (i.e. phonebook)</td> | |||
</tr> | |||
<tr> | |||
<td> xx xx</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>unknown</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x0C) end--> | |||
<!-- nested tlv(0x0D) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> 00 0D</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x0D) - client capabilities list</td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> xx ..</td> | |||
<td width=5> </td> | |||
<td>CLSIDs</td> | |||
<td width=5> </td> | |||
<td width=324>Client [[Protocols/OSCAR/UUIDs|capabilities]] list</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x0A) end--> | |||
<!-- nested tlv(0x0F) begin --> | |||
<table width=592 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr><td height=8 colspan=4></td></tr><tr><td width=20></td><td> | |||
<table width=564 bgcolor=darkred cellSpacing=0 cellPadding=0 border=0><tr><td> | |||
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0><tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> 00 0F</td> | |||
<td width=5> </td> | |||
<td>word</td> | |||
<td width=5> </td> | |||
<td width=324>TLV.Type(0x0F) - <span>online time</span></td> | |||
</tr> | |||
<tr> | |||
<td> 00 04</td> | |||
<td> </td> | |||
<td>word</td> | |||
<td> </td> | |||
<td>TLV.Length</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
<tr><td bgcolor=#E9E9E9> | |||
<table width=564 cellSpacing=0 cellPadding=0 align=center border=0> | |||
<tr> | |||
<td width=125> xx xx xx xx</td> | |||
<td width=5> </td> | |||
<td>dword</td> | |||
<td width=5> </td> | |||
<td width=324>client online time (in seconds)</td> | |||
</tr> | |||
</table> | |||
</td></tr> | |||
</table> | |||
</td></tr></table> | |||
</td><td width=5></td></tr> | |||
<tr><td height=5 colspan=3> | |||
</td></tr></table> | |||
<!-- nested tlv(0x01) end--> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
<br> | |||
</td><td width=5> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
</td></tr></table> | |||
=== 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: <code>userFlags = USER_FLAG | (USER_FLAGS2 << 0x10)</code> | |||
{| class="wikitable" | |||
! 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 ==== | |||
<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_class"></a>User classes </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="m0003"></a> | |||
AOL users are divided into several classes. User class field is a 2 byte bitmask. | |||
For example ICQ non-commercial account with away status has user-class=0x0070 | |||
(OSERVICE__USER_FLAG_OSCAR_FREE (@RUS CLASS_FREE) | OSERVICE__USER_FLAG_UNAVAILABLE (@RUS CLASS_AWAY) | OSERVICE__USER_FLAG_ICQ (@RUS CLASS_ICQ) = 0x0070). Here is the list of known bit | |||
values in user class bitmask: | |||
<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_FLAG_DAMNED_TRANSIENT (@RUS CLASS_UNCONFIRMED) </td> | |||
<td bgcolor=#f9f9f9 width=350 valign=top> AOL unconfirmed user flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0002</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_FLAG_ADMINISTRATOR (@RUS CLASS_ADMINISTRATOR) </td> | |||
<td bgcolor=#f9f9f9 valign=top> AOL administrator flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0004</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_FLAG_AOL (@RUS CLASS_AOL) </td> | |||
<td bgcolor=#f9f9f9 valign=top> AOL staff user flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0008</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_FLAG_OSCAR_PAY (@RUS CLASS_COMMERCIAL) </td> | |||
<td bgcolor=#f9f9f9 valign=top> AOL commercial account flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0010</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_FLAG_OSCAR_FREE (@RUS CLASS_FREE) </td> | |||
<td bgcolor=#f9f9f9 valign=top> ICQ non-commercial account flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0020</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_FLAG_UNAVAILABLE (@RUS CLASS_AWAY) </td> | |||
<td bgcolor=#f9f9f9 valign=top> Away status flag</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0040</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_FLAG_ICQ (@RUS CLASS_ICQ) </td> | |||
<td bgcolor=#f9f9f9 valign=top> ICQ user sign</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0080</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> OSERVICE__USER_FLAG_WIRELESS (@RUS CLASS_WIRELESS) </td> | |||
<td bgcolor=#f9f9f9 valign=top> AOL wireless user</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0100</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> CLASS_UNKNOWN100 </td> | |||
<td bgcolor=#f9f9f9 valign=top> Unknown bit</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0200</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> CLASS_UNKNOWN200 </td> | |||
<td bgcolor=#f9f9f9 valign=top> Unknown bit</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0400</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> CLASS_UNKNOWN400 </td> | |||
<td bgcolor=#f9f9f9 valign=top> Unknown bit</td> | |||
</tr> | |||
<tr> | |||
<td bgcolor=#f9f9f9 valign=top> <b>0x0800</b></td> | |||
<td bgcolor=#f9f9f9 valign=top> CLASS_UNKNOWN800 </td> | |||
<td bgcolor=#f9f9f9 valign=top> Unknown bit</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> | |||
===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 === | ||
Line 18: | Line 996: | ||
| 0x01 | | 0x01 | ||
| uint16 (word) | | uint16 (word) | ||
| ''[Class:[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS OSERVICE__USER_FLAGS]]'' Flags that represent the user's state | | ''[Class: [[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS|OSERVICE__USER_FLAGS]]]'' Flags that represent the user's state | ||
|- | |- | ||
| OSERVICE__USER_INFO_CREATE_TOD | | OSERVICE__USER_INFO_CREATE_TOD | ||
Line 67: | Line 1,045: | ||
| OSERVICE__USER_INFO_OSCAR_CAPS | | OSERVICE__USER_INFO_OSCAR_CAPS | ||
| 0x0D | | 0x0D | ||
| | | Array of [[Protocols/OSCAR/UUIDs|UUID]] | ||
Array of [Protocols/OSCAR/UUIDs UUID] | |||
| Client capabilities - if not present use the previous values received; if present but empty, clear previous values | | Client capabilities - if not present use the previous values received; if present but empty, clear previous values | ||
|- | |- | ||
Line 79: | Line 1,056: | ||
| 0x0F | | 0x0F | ||
| uint32 (dword) | | uint32 (dword) | ||
| Online time in seconds | | Online time in seconds, if user is using OSCAR | ||
|- | |- | ||
| OSERVICE__USER_INFO_AOL_OT | | OSERVICE__USER_INFO_AOL_OT | ||
| 0x10 | | 0x10 | ||
| | | uint32 (dword) | ||
| | | Online time in seconds, if user is using P3 | ||
|- | |- | ||
| OSERVICE__USER_INFO_ICQ_BROAD_BLOB | | OSERVICE__USER_INFO_ICQ_BROAD_BLOB | ||
Line 143: | Line 1,120: | ||
| OSERVICE__USER_INFO_BART_INFO | | OSERVICE__USER_INFO_BART_INFO | ||
| 0x1D | | 0x1D | ||
| | | Array of [[Protocols/OSCAR/Foodgroups/BART#Datatype:_BART_ID|BART__ID]] | ||
Array of [Protocols/OSCAR/Foodgroups/BART#Datatype:_BART_ID BART__ID] | |||
| Expressions | | Expressions | ||
|- | |- | ||
Line 155: | Line 1,131: | ||
| 0x1F | | 0x1F | ||
| Array of uint8 (byte) | | Array of uint8 (byte) | ||
| ''[Class:[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS OSERVICE__USER_FLAGS]]'' Upper bytes of user flags, can be any size. userFlags = USER_FLAG | (USER_FLAGS2 << 16) | | ''[Class: [[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Class:_OSERVICE_USER_FLAGS|OSERVICE__USER_FLAGS]]]'' Upper bytes of user flags, can be any size. userFlags = USER_FLAG | (USER_FLAGS2 << 16) | ||
|- | |- | ||
| OSERVICE__USER_INFO_UNKNOWN_22 | | OSERVICE__USER_INFO_UNKNOWN_22 | ||
Line 213: | Line 1,189: | ||
|} | |} | ||
[[Category:With_Contrib]] | |||
[[Category:Stub]] | [[Category:Stub]] | ||
[[Category:AOL]] | [[Category:AOL]] |
Latest revision as of 11:03, 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 |
From Aleksandr Shutko: Basic OSCAR information (Online userinfo block)
|
|
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 |