Protocols/OSCAR/SNAC/LOCATE USER INFO REPLY: Difference between revisions

From NINA Wiki
Jump to navigation Jump to search
No edit summary
 
Line 42: Line 42:
| ''[Class: [[Protocols/OSCAR/Foodgroups/LOCATE#TLV_Class:_LOCATE_TAGS|LOCATE__TAGS]]]'' Fields requested in the query
| ''[Class: [[Protocols/OSCAR/Foodgroups/LOCATE#TLV_Class:_LOCATE_TAGS|LOCATE__TAGS]]]'' Fields requested in the query
|}
|}
=== From Aleksandr Shutko: SNAC(02,06) requested user location info SNAC(02,06) LOCATE__USER_INFO_REPLY  ===
<table width=640 cellSpacing=0 cellPadding=0 border=0>
<tr>
<td>
<br>
Server reply via this SNAC to client [[Protocols/OSCAR/SNAC_02_05|SNAC(02,05)]]
request. This snac consists of two parts. The first part constant. The second
part depends on type of the client request and may contain the client profile,
client capabilities or client away message. See also
[[Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO#Datatype:_OSERVICE_USERINFO|additional information]] about online userinfo block.
<br><br>
Request type table:
<table width=100% 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=100% cellSpacing=1 cellPadding=1 border=0>
<tr>
<td bgcolor=#f9f9f9 width=70 valign=top>&nbsp;&nbsp;<b>0x0001&nbsp;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;general info (reply contain TLV(1), TLV(2))</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 width=70 valign=top>&nbsp;&nbsp;<b>0x0002&nbsp;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;online info (reply contain only fixed part)</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 width=70 valign=top>&nbsp;&nbsp;<b>0x0003&nbsp;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;away message (reply contain TLV(3), TLV(4))</td>
</tr>
<tr>
<td bgcolor=#f9f9f9 width=70 valign=top>&nbsp;&nbsp;<b>0x0004&nbsp;</b></td>
<td bgcolor=#f9f9f9 valign=top>&nbsp;&nbsp;client capabilities (reply contain TLV(5))</td>
</tr>
</table>
</td></tr></table>
</td></tr></table>
<br>Here is the packet format:
<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=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr>
<td width=169>&nbsp;00 02</td>
<td width=5>&nbsp;</td>
<td>word</td>
<td width=5>&nbsp;</td>
<td width=55%>SNAC family</td>
</tr>
<tr>
<td>&nbsp;00 06</td>
<td>&nbsp;</td>
<td>word</td>
<td>&nbsp;</td>
<td>SNAC subtype</td>
</tr>
<tr>
<td>&nbsp;00 00</td>
<td>&nbsp;</td>
<td>word</td>
<td>&nbsp;</td>
<td>SNAC flags</td>
</tr>
<tr>
<td>&nbsp;xx xx xx xx</td>
<td>&nbsp;</td>
<td>dword</td>
<td>&nbsp;</td>
<td>SNAC request-id</td>
</tr>
</table>
</td></tr>
<tr><td bgcolor=#E9E9E9>
  <table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=169>&nbsp;xx</td>
  <td width=5>&nbsp;</td>
  <td>char</td>
  <td width=5>&nbsp;</td>
  <td width=55%>uin string length</td>
  </tr>
  <tr>
  <td>&nbsp;xx ..</td>
  <td>&nbsp;</td>
  <td>string</td>
  <td>&nbsp;</td>
  <td>uin string</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>warning level</td>
  </tr>
  <tr>
  <td>&nbsp;00 07</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>Number of TLV in fixed part (user online info)</td>
  </tr>
  </table>
<!-- TLV 0x01 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 01</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x01) - user class</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx xx xx</td>
  <td width=5>&nbsp;</td>
  <td>dword</td>
  <td width=5>&nbsp;</td>
  <td width=57%>[[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>
<!-- TLV 0x06 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 06</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x06) - user status</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx xx xx</td>
  <td width=5>&nbsp;</td>
  <td>dword</td>
  <td width=5>&nbsp;</td>
  <td width=57%>[[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>
<!-- TLV 0x0C -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 0C</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x0C) - dc info (optional)</td>
  </tr>
  <tr>
  <td>&nbsp;00 25</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx xx xx</td>
  <td width=5>&nbsp;</td>
  <td>dword</td>
  <td width=5>&nbsp;</td>
  <td width=57%>DC internal ip address</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx xx xx</td>
  <td>&nbsp;</td>
  <td>dword</td>
  <td>&nbsp;</td>
  <td>DC tcp port</td>
  </tr>
  <tr>
  <td>&nbsp;xx</td>
  <td>&nbsp;</td>
  <td>byte</td>
  <td>&nbsp;</td>
  <td>[[Protocols/OSCAR/Foodgroups/ICQ#Types|DC type]]</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>DC protocol version</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx xx xx</td>
  <td>&nbsp;</td>
  <td>dword</td>
  <td>&nbsp;</td>
  <td>DC auth cookie</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx xx xx</td>
  <td>&nbsp;</td>
  <td>dword</td>
  <td>&nbsp;</td>
  <td>Web front port</td>
  </tr>
  <tr>
  <td>&nbsp;00 00 00 03</td>
  <td>&nbsp;</td>
  <td>dword</td>
  <td>&nbsp;</td>
  <td>Client futures</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx xx xx</td>
  <td>&nbsp;</td>
  <td>dword</td>
  <td>&nbsp;</td>
  <td>last info update time</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx xx xx</td>
  <td>&nbsp;</td>
  <td>dword</td>
  <td>&nbsp;</td>
  <td>last ext info update time (i.e. icqphone status)</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx xx xx</td>
  <td>&nbsp;</td>
  <td>dword</td>
  <td>&nbsp;</td>
  <td>last ext status update time (i.e. phonebook)</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</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>
<!-- TLV 0x0A -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 0A</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x0A) - external ip address</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx xx xx</td>
  <td width=5>&nbsp;</td>
  <td>dword</td>
  <td width=5>&nbsp;</td>
  <td width=57%>External client 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>
<!-- TLV 0x0F -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 0F</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x0F) - client idle time</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx xx xx</td>
  <td width=5>&nbsp;</td>
  <td>dword</td>
  <td width=5>&nbsp;</td>
  <td width=57%>Client idle time</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x03 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 03</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x03) - signon time</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx xx xx</td>
  <td width=5>&nbsp;</td>
  <td>dword</td>
  <td width=5>&nbsp;</td>
  <td width=57%>Time when client gone online</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x05 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 05</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x05) - member since</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx xx xx</td>
  <td width=5>&nbsp;</td>
  <td>dword</td>
  <td width=5>&nbsp;</td>
  <td width=57%>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>
<hr color=darkblue>
<!-- TLV 0x01 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 01</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x01) - encoding type</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>encoding type strlen</td>
  </tr>
  <tr>
  <td>&nbsp;xx ..</td>
  <td>&nbsp;</td>
  <td>string</td>
  <td>&nbsp;</td>
  <td>encoding type string</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x02 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 02</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x02) - client profile string</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>client profile strlen</td>
  </tr>
  <tr>
  <td>&nbsp;xx ..</td>
  <td>&nbsp;</td>
  <td>string</td>
  <td>&nbsp;</td>
  <td>client profile string</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
  <hr color=darkblue>
<!-- TLV 0x03 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 03</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x03) - away msg encoding string</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>encoding type strlen</td>
  </tr>
  <tr>
  <td>&nbsp;xx ..</td>
  <td>&nbsp;</td>
  <td>string</td>
  <td>&nbsp;</td>
  <td>encoding type string</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<!-- TLV 0x04 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 04</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x04) - away msg string</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx xx</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>away message strlen</td>
  </tr>
  <tr>
  <td>&nbsp;xx ..</td>
  <td>&nbsp;</td>
  <td>string</td>
  <td>&nbsp;</td>
  <td>away message string</td>
  </tr>
  </table>
  </td></tr>
  </table>
</td></tr></table>
</td><td width=5> </td>
</tr>
<tr><td height=5 colspan=3> </td></tr>
</table>
<hr color=darkblue>
<!-- TLV 0x05 -->
<table width=640 cellSpacing=0 cellPadding=0 align=center border=0>
<tr><td height=8 colspan=3></td></tr>
<tr><td width=20> </td>
<td>
<table width=610 bgcolor=darkgreen cellSpacing=0 cellPadding=0 border=0><tr><td>
<table width=100% cellSpacing=2 cellPadding=0 align=center border=0>  <tr><td  bgcolor=#f9f9f9 >
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;00 05</td>
  <td width=5>&nbsp;</td>
  <td>word</td>
  <td width=5>&nbsp;</td>
  <td width=57%>TLV.Type(0x05) - user capabilities</td>
  </tr>
  <tr>
  <td>&nbsp;xx xx</td>
  <td>&nbsp;</td>
  <td>word</td>
  <td>&nbsp;</td>
  <td>TLV.Length</td>
  </tr>
  </table>
  </td></tr>
  <tr><td bgcolor=#f9f9f9>
  <table width=610 cellSpacing=0 cellPadding=0 align=center border=0>
  <tr>
  <td width=147>&nbsp;xx ..... xx</td>
  <td width=5>&nbsp;</td>
  <td>CLSID</td>
  <td width=5>&nbsp;</td>
  <td width=57%>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>
</td></tr></table>
</td></tr></table>
</td></tr></table>
<br>Example SNAC dumps with flap header:
<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>
<font size=3><pre style="font-size: 13px">
  No dump yet :( Do you have one ?
</pre></font>
</td></tr></table>
</td></tr></table>
[[Category:With_Contrib]]


=== LOCATE SNACs ===
=== LOCATE SNACs ===

Latest revision as of 11:00, 14 February 2021

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, 0x0006 Host LOCATE__USER_INFO_REPLY Unspecified BOS Active 1.19

This is the usual response to a LOCATE__USER_INFO_QUERY2 SNAC.

SNAC Header

Foodgroup uint16 (word) 00 02
Subgroup uint16 (word) 00 06
Flags uint16 (word) 00 00
Request ID uint32 (dword) 00 00 00 00

SNAC Data

Note that if you've requested 0x0003 instead of 0x0001 in the initial request packet, you'll get 0x0003 and 0x0004 as the return TLVs (and the users away message instead of their profile).

Container       Data                            TLV Type
RAW             FLAP Header (channel 0x02)
SNAC            SNAC Header
LV              Screen Name (no type)
RAW             User info block *
TLV (optional)  Profile Encoding                0x0001
TLV (optional)  Profile                         0x0002
Name Type Notes
info OSERVICE__USERINFO Generic user with info about user
locateInfo Rest of SNAC array of TLV [Class: LOCATE__TAGS] Fields requested in the query

From Aleksandr Shutko: SNAC(02,06) requested user location info SNAC(02,06) LOCATE__USER_INFO_REPLY


Server reply via this SNAC to client SNAC(02,05) request. This snac consists of two parts. The first part constant. The second part depends on type of the client request and may contain the client profile, client capabilities or client away message. See also additional information about online userinfo block.

Request type table:

  0x0001    general info (reply contain TLV(1), TLV(2))
  0x0002    online info (reply contain only fixed part)
  0x0003    away message (reply contain TLV(3), TLV(4))
  0x0004    client capabilities (reply contain TLV(5))


Here is the packet format:

 00 02   word   SNAC family
 00 06   word   SNAC subtype
 00 00   word   SNAC flags
 xx xx xx xx   dword   SNAC request-id
 xx   char   uin string length
 xx ..   string   uin string
 xx xx   word   warning level
 00 07   word   Number of TLV in fixed part (user online info)
 00 01   word   TLV.Type(0x01) - user class
 xx xx   word   TLV.Length
 xx xx xx xx   dword   User class
 00 06   word   TLV.Type(0x06) - user status
 xx xx   word   TLV.Length
 xx xx xx xx   dword   User status
 00 0C   word   TLV.Type(0x0C) - dc info (optional)
 00 25   word   TLV.Length
 xx xx xx xx   dword   DC internal ip address
 xx xx xx xx   dword   DC tcp port
 xx   byte   DC type
 xx xx   word   DC protocol version
 xx xx xx xx   dword   DC auth cookie
 xx xx xx xx   dword   Web front port
 00 00 00 03   dword   Client futures
 xx xx xx xx   dword   last info update time
 xx xx xx xx   dword   last ext info update time (i.e. icqphone status)
 xx xx xx xx   dword   last ext status update time (i.e. phonebook)
 xx xx   word   unknown
 00 0A   word   TLV.Type(0x0A) - external ip address
 xx xx   word   TLV.Length
 xx xx xx xx   dword   External client ip address
 00 0F   word   TLV.Type(0x0F) - client idle time
 xx xx   word   TLV.Length
 xx xx xx xx   dword   Client idle time
 00 03   word   TLV.Type(0x03) - signon time
 xx xx   word   TLV.Length
 xx xx xx xx   dword   Time when client gone online
 00 05   word   TLV.Type(0x05) - member since
 xx xx   word   TLV.Length
 xx xx xx xx   dword   Time when this account was registered

 00 01   word   TLV.Type(0x01) - encoding type
 xx xx   word   TLV.Length
 xx xx   word   encoding type strlen
 xx ..   string   encoding type string
 00 02   word   TLV.Type(0x02) - client profile string
 xx xx   word   TLV.Length
 xx xx   word   client profile strlen
 xx ..   string   client profile string

 00 03   word   TLV.Type(0x03) - away msg encoding string
 xx xx   word   TLV.Length
 xx xx   word   encoding type strlen
 xx ..   string   encoding type string
 00 04   word   TLV.Type(0x04) - away msg string
 xx xx   word   TLV.Length
 xx xx   word   away message strlen
 xx ..   string   away message string

 00 05   word   TLV.Type(0x05) - user capabilities
 xx xx   word   TLV.Length
 xx ..... xx   CLSID   Client capabilities list


Example SNAC dumps with flap header:


  No dump yet :( Do you have one ?


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.