MSNLD / Mono-Project

This is the source of truth for all MSNLD projects.
0 stars 0 forks source link

MSN Chat Control documentation #3

Open realJoshByrnes opened 1 year ago

realJoshByrnes commented 1 year ago

It's important we document how the MSN Chat Control works

I'm tasking myself with this one. I'm not sure if I'll write it out here, or start documenting on the Wiki. Screenshots would be a bonus. I only plan on documenting the latest revision of the MSN Chat Control.

realJoshByrnes commented 1 year ago

MSN Chat Control

MSN Chat Control, version #9.02.0310.2401

Directory Server

GUEST MODE

>>> IRCVERS IRC8 MSN-OCX!9.02.0310.2401
>>> AUTH GateKeeper I :GKSSP\0\0\0\0\0\0\0
<<< AUTH GateKeeper S :GKSSP\0\0\0\0\0\0\0<CHLNGE>
>>> AUTH GateKeeper S :GKSSP\0\0\0\0\0\0\0<RSPNCE><USERID>
<<< AUTH GateKeeper * DEADBEEFDEADBEEFDEADBEEFDEADBEEF@GateKeeper 0
>>> NICK >{NickName}
<<< :TK2CHATWBA01 001 >{NickName} :Welcome to the IRC7 Chat Service server, >{NickName}
# If SubscriberInfo is set:
>>> PROP $ SUBSCRIBERINFO: {SubscriberInfo}
# If UserRole is set:
>>> PROP $ ROLE :{UserRole}
# If ChatMode == '1'
>>> CREATE {Category} %#{RoomName} {Topic} {CreationModes} {OWNERKEY} 0
# If ChatMode == '0' (Join) || '2' (Join, Create if it does not exist)
>>> FINDS %#{RoomName}
<<< :TK2CHATWBA01 613 >{NickName} :127.0.0.1 6667

PASSPORT MODE

>>> IRCVERS IRC8 MSN-OCX!9.02.0310.2401
>>> AUTH GateKeeperPassport I :GKSSP\0\0\0\0\0\0\0
<<< AUTH GateKeeperPassport S :GKSSP\0\0\0\0\0\0\0<CHLNGE>
>>> AUTH GateKeeperPassport S :GKSSP\0\0\0\0\0\0\0<RSPNCE>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
<<< AUTH GateKeeperPassport S :OK
>>> AUTH GateKeeperPassport S :{PassportTicket}{PassportProfile}
<<< AUTH GateKeeperPassport * DEADBEEFDEADBEEF@GateKeeperPassport 0
>>> NICK {NickName}
<<< :TK2CHATWBA01 001 {NickName} :Welcome to the IRC7 Chat Service server, {NickName}
# If SubscriberInfo is set:
>>> PROP $ SUBSCRIBERINFO: {SubscriberInfo}
# If UserRole is set:
>>> PROP $ ROLE :{UserRole}
# If ChatMode == '1' (Create)
>>> CREATE {Category} %#{RoomName} {Topic} {CreationModes} {OWNERKEY} 0
# If ChatMode == '0' (Join) || '2' (Join, Create if it does not exist)
>>> FINDS %#{RoomName}
<<< :TK2CHATWBA01 613 {NickName} :127.0.0.1 6667

Notes:

Channel Server

GUEST MODE

PASSPORT MODE

>>> IRCVERS IRC8 MSN-OCX!9.02.0310.2401 {Market}
<<< :TK2CHATCHATA01 800 * 1 0 GateKeeper,NTLM 512 *
>>> AUTH GateKeeperPassport I :GKSSP\0\0\0\0\0\0\0
<<< AUTH GateKeeperPassport S :GKSSP\0\0\0\0\0\0\0<CHLNGE>
>>> AUTH GateKeeperPassport S :GKSSP\0\0\0\0\0\0\0<RSPNCE>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
<<< AUTH GateKeeperPassport S :OK
>>> AUTH GateKeeperPassport S :{PassportTicket}{PassportProfile}
<<< AUTH GateKeeperPassport * DEADBEEFDEADBEEF@GateKeeperPassport 0
>>> PROP $ MSNREGCOOKIE :{MSNRegCookie}
# If MSNProfile is set
>>> PROP $ MSNPROFILE :{MSNProfile}
# If UserRole is set
>>> PROP $ ROLE :{UserRole}
# If SubscriberInfo is set
>>> PROP $ SUBSCRIBERINFO :{SubscriberInfo}
<<< :TK2CHATCHATA01 001 {NickName} :Welcome to the IRC7 Chat Service server, {NickName}
>>> JOIN %#{RoomName} {OWNERKEY}
<<< :{NickName} JOIN H,U,RXB :%#{RoomName}
>>> MODE %#{RoomName}
# If CREATE was sent to Directory Server, and WelcomeMsg is set
<!-- TODO: Check if ChatMode=2 and room not found. -->
>>> PROP %#{RoomName} OnJoin :{WelcomeMsg}
<<< :TK2CHATCHATA01 324 ${NickName} %#{RoomName} +tdnrflS 35

Notes:

Additional notes:

Issues / Notes

CTCP Requests

The MSN Chat Control replies to the following CTCP Requests, but only displays replies it receives to TIME requests.

View Profile

(Non-)Subscribers

The OCX doesn't allow you to interact with Non-subscribers unless you are a channel operator, and then you are only able to kick them. Attempting to whisper a non-subscriber shows a message box stating {NickName} is not an MSN subscriber and cannot receive whisper messages. If voyeur mode is set, the Whisper attempt fails silently. If the non-subscriber is an IRC Operator, or even a channel operator (bug?), they are exempt from the Chat Control restrictions, but will still be subject to server restrictions, if applicable.

Ignore

Banning

It's impossible to ban a user until the internal address list is updated via WHOIS.

IRC Commands

Topic

Notice

Notices do not appear to be shown to the client, with the exception of the TIME CTCP reply (see CTCP Requests).

Privmsg

Whisper

There are two modes of Whisper, one is a Whisper Window (seperate dialog), and the other mode is shown in the channel.