Protocols/OSCAR/Foodgroups/OSERVICE/Datatypes/USERINFO

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


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

 <a name="user_class"></a>User classes 
 

<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:

  0x0001   OSERVICE__USER_FLAG_DAMNED_TRANSIENT (@RUS CLASS_UNCONFIRMED)     AOL unconfirmed user flag
  0x0002   OSERVICE__USER_FLAG_ADMINISTRATOR (@RUS CLASS_ADMINISTRATOR)     AOL administrator flag
  0x0004   OSERVICE__USER_FLAG_AOL (@RUS CLASS_AOL)     AOL staff user flag
  0x0008   OSERVICE__USER_FLAG_OSCAR_PAY (@RUS CLASS_COMMERCIAL)     AOL commercial account flag
  0x0010   OSERVICE__USER_FLAG_OSCAR_FREE (@RUS CLASS_FREE)     ICQ non-commercial account flag
  0x0020   OSERVICE__USER_FLAG_UNAVAILABLE (@RUS CLASS_AWAY)     Away status flag
  0x0040   OSERVICE__USER_FLAG_ICQ (@RUS CLASS_ICQ)     ICQ user sign
  0x0080   OSERVICE__USER_FLAG_WIRELESS (@RUS CLASS_WIRELESS)     AOL wireless user
  0x0100   CLASS_UNKNOWN100     Unknown bit
  0x0200   CLASS_UNKNOWN200     Unknown bit
  0x0400   CLASS_UNKNOWN400     Unknown bit
  0x0800   CLASS_UNKNOWN800     Unknown bit


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