all of switchboard except USR

USR is very big and would consider a break here

... Why does the spec imply that Switchboard has INF? Is that why every client implements it after MSNP8?
This commit is contained in:
Declan B. 2024-10-14 21:13:21 +01:00
parent be1cdb1155
commit f38cb78dd8
Signed by: yellows111
SSH key fingerprint: SHA256:ynw5IJBU1pb7fZfHgLihKu9gHHA8FVpixZbB6IEB3r8
15 changed files with 545 additions and 18 deletions

View file

@ -14,8 +14,16 @@ This is a list of all known MSNP commands and their originating version.
| [`FND`](commands/fnd.md) | N | Y | N | [MSNP2](versions/msnp2.md) | [MSNP5](versions/msnp5.md) (uses SDC instead of SND), July 2003 (not really any specific MSNP update, just soft-removed with a 502.) | | [`FND`](commands/fnd.md) | N | Y | N | [MSNP2](versions/msnp2.md) | [MSNP5](versions/msnp5.md) (uses SDC instead of SND), July 2003 (not really any specific MSNP update, just soft-removed with a 502.) |
| [`BLP`](commands/blp.md) | N | Y | Y\*| [MSNP2](versions/msnp2.md) | [MSNP10](versions/msnp10.md) (Removed List Version if `ABCHMigrated: 1`), [MSNP13](versions/msnp13.md) (removed: automatic disconnect) | | [`BLP`](commands/blp.md) | N | Y | Y\*| [MSNP2](versions/msnp2.md) | [MSNP10](versions/msnp10.md) (Removed List Version if `ABCHMigrated: 1`), [MSNP13](versions/msnp13.md) (removed: automatic disconnect) |
| [`GTC`](commands/gtc.md) | N | Y | Y\* | [MSNP2](versions/msnp2.md) | [MSNP10](versions/msnp10.md) (Removed List Version if `ABCHMigrated: 1`), [MSNP13](versions/msnp13.md) (removed: automatic disconnect) | | [`GTC`](commands/gtc.md) | N | Y | Y\* | [MSNP2](versions/msnp2.md) | [MSNP10](versions/msnp10.md) (Removed List Version if `ABCHMigrated: 1`), [MSNP13](versions/msnp13.md) (removed: automatic disconnect) |
| [`CHG`](commands/chg.md) | N | Y | Y | [MSNP2](versions/msnp2.md) | [MSNP8](versions/msnp8.md) (Client Capability flags support as parameter 2), [MSNP9](versions/msnp9.md) (MSNObject support as parameter 3) | | [`CHG`](commands/chg.md) | N | Y | Y | [MSNP2](versions/msnp2.md) | [MSNP8](versions/msnp8.md) (Added Client Capability flags support as parameter 2), [MSNP9](versions/msnp9.md) (MSNObject support as parameter 3) |
| [`IMS`](commands/ims.md) | N | Y | N | [MSNP3](versions/msnp3.md) | | | [`IMS`](commands/ims.md) | N | Y | N | [MSNP3](versions/msnp3.md) | |
| [`ACK`](commands/ack.md) | N | N | Y | [MSNP2](versions/msnp2.md) | [MSNP9](versions/msnp9.md) (Now can happen as a response to [MSG](commands/msg.md) D.) |
| [`NAK`](commands/nak.md) | N | N | Y | [MSNP2](versions/msnp2.md) | |
| [`BYE`](commands/bye.md) | N | N | Y | [MSNP2](versions/msnp2.md) | |
| [`ANS`](commands/iro.md) | N | Y | Y | [MSNP2](versions/msnp2.md) | [MSNP16](versions/msnp16.md) (Added MPOP Machine ID appended to the local user's handle parameter, delimited by a semi-colon) |
| [`MSG`](commands/msg.md) | Y | Y | Y | [MSNP2](versions/msnp2.md) | [MSNP9](versions/msnp9.md) (Added Acknoledgement Type D) |
| [`IRO`](commands/iro.md) | N | N | Y | [MSNP2](versions/msnp2.md) | [MSNP12](versions/msnp12.md) (Added Client Capability flags support as parameter 5) |
| [`JOI`](commands/joi.md) | N | N | Y | [MSNP2](versions/msnp2.md) | [MSNP12](versions/msnp12.md) (Added Client Capability flags support as parameter 3) |
| [`CAL`](commands/cal.md) | N | Y | N | [MSNP2](versions/msnp2.md) | |
# Modifiers: # Modifiers:
* `*`: Only in `SYN`. * `*`: Only in `SYN`.

46
docs/commands/ack.md Normal file
View file

@ -0,0 +1,46 @@
# Introduction
`ACK` is a command introduced with [MSNP2](../versions/msnp2.md).
It is a Switchboard Server command, without a response payload.
Used as a positive response to [MSG](msg.md) A, and later [MSG](msg.md) D commands.
# Client/Request
This command can not be sent from the client.
# Server/Response
`ACK TrID`
# Examples
## As a response to MSG A
```
C: MSG 1 A 68
MIME-Version: 1.0
Content-Type: text/plain;charset=UTF-8
message
S: ACK 1
```
## As a response to MSG D
*This only happens in [MSNP9](../versions/msnp9.md).*
```
C: MSG 2 D 73
MIME-Version: 1.0
Content-Type: application/octet-stream
data message
S: ACK 2
```
## Invalid context
*Inherited from being an unimplemented command.*
```
C: ACK 3
```
Server disconnects client.
# Known changes
* [MSNP9](../versions/msnp9.md): Now happens as a response to MSG D.

50
docs/commands/ans.md Normal file
View file

@ -0,0 +1,50 @@
# Introduction
`ANS` is a command introduced with [MSNP2](../commands/msnp2.md).
It is a Switchboard Server command, without either a request or response payload.
Used to join ("answer") a Switchboard session ("call").
The response of this command sent after the [IRO](iro.md) list has been sent.
# Client/Request
`ANS TrID my-handle cookie session-id`
Where `my-handle` is the current user's handle.
In [MSNP16](../versions/msnp16.md), a UUID is appended after a semi-colon, which is your MPOP Machine ID.
Where `cookie` is the `cookie` from the RNG command sent to you.
Where `session-id` is the `session-id` from the RNG command sent to you.
# Server/Response
`ANS TrID OK`
Where `OK` is always `OK`.
# Examples
## Answering a RNG
```
C: ANS 1 example@hotmail.com 123456789.123456789.123456789 987654321
S: IRO 1 1 1 anotheruser@hotmail.com another%20user
S: ANS 1 OK
```
## Invalid session
*NOTE: There is no defined behavour for this command specificially."
```
C: ANS 2 example@hotmail.com bad data
```
Server disconnects client.
## Invalid context (Notification Server)
*Inherited from being an unimplemented command.*
```
C: ANS 3 example@hotmail.com wrong server
```
Server disconnects client.
# Known changes
* [MSNP16](../versions/msnp16.md): Added the current MPOP Machine ID to the `my-handle` parameter.

39
docs/commands/bye.md Normal file
View file

@ -0,0 +1,39 @@
# Introduction
`BYE` is a command introduced with [MSNP2](../versions/msnp2.md).
It is a Switchboard Server command, without a response payload.
Used when a client leaves the current switchboard session.
# Client/Request
This client can not be sent from the client.
# Server/Response
`BYE user-handle {timeout}`
Where `user-handle` is the parting user's handle.
Where `timeout` is `1` if the server disconnected this user automatically. This parameter is optional.
# Examples
## User quit manually
```
S: BYE anotheruser@hotmail.com
```
## User timed out
```
S: BYE anotheruser@hotmail.com 1
```
## Invalid context
*Inherited from being an unimplemented command.*
```
C: BYE 1
```
Server disconnects client.
# Known changes
None.

78
docs/commands/cal.md Normal file
View file

@ -0,0 +1,78 @@
# Introduction
`CAL` is a command introduced with [MSNP2](../versions/msnp2.md).
It is a Switchboard Server command, without a response payload.
It invites a user to a Switchboard session.
# Client/Request
`CAL TrID user-handle`
Where `user-handle` is the user that you'd like to invite.
# Server/Response
`CAL TrID RINGING session-id`
Where `RINGING` is always `RINGING`, as there are no other states avaliable.
Where `session-id` is the Switchboard session identification number.
# Examples
## Inviting a user successfully
```
C: CAL 1 anotheruser@hotmail.com
S: CAL 1 RINGING 987654321
```
## User already invited
```
C: CAL 2 anotheruser@hotmail.com
S: 215 2
```
## User to invite was invalid
```
C: CAL 3 hello
S: 208 3
```
## User is offline
```
C: CAL 4 anotheruser@hotmail.com
S: 217 4
```
## User does not allow you to contact them
*All instances that returned this have been changed to a 217. This response is deprecated.*
```
C: CAL 5 anotheruser@hotmail.com
S: 216 5
```
## Rate limited
```
C: CAL 6 anotheruser@hotmail.com
S: 217 6
C: CAL 7 anotheruser@hotmail.com
S: 217 7
C: CAL 8 anotheruser@hotmail.com
S: 217 8
C: CAL 9 anotheruser@hotmail.com
S: 217 9
C: CAL 10 anotheruser@hotmail.com
S: 217 10
C: CAL 11 anotheruser@hotmail.com
S: 713 11
```
## Invalid context (Notification Server)
*Inherited from being an unimplemented command.*
```
C: CAL 12 anotheruser@hotmail.com
```
Server disconnects client.
# Known changes
None.

50
docs/commands/iro.md Normal file
View file

@ -0,0 +1,50 @@
# Introduction
`IRO` is a command introduced with [MSNP2](../versions/msnp2.md).
It is a Switchboard Server command, without a response payload.
Used to specify what users in are in the Switchboard session after a [ANS](ans.md) request.
# Client/Request
This command can not be sent from the client.
# Server/Response
`IRO TrID index total-participants participant-handle participant-friendly-name {client-capabilities}`
Where `index` is the current indice of the list.
Where `total-participants` is the length of the list.
Where `participant-handle` is the related user's handle.
Where `participant-friendly-name` is the related user's Friendly Name.
Where `client-capabilities` is the related user's Client Capabilities, only in [MSNP12](../versions/msnp12.md) and above.
# Examples
## Without Client Capabilities
```
C: ANS 1 example@hotmail.com 123456789.123456789.123456789 987654321
S: IRO 1 1 1 anotheruser@hotmail.com another%20user
S: ANS 1 OK
```
## With Client Capabilities
*Only in [MSNP12](../versions/msnp12.md) and above.*
```
C: ANS 2 example@hotmail.com 123456789.123456789.123456789 987654321
S: IRO 2 1 1 anotheruser@hotmail.com another%20user 1342554172
S: ANS 2 OK
```
## Invalid context
*Inherited from being an unimplemented command.*
```
C: IRO 3
```
Server disconnects client.
# Known changes
* [MSNP12](../versions/msnp12.md): Added the Client Capabilities parameter (parameter 5).

41
docs/commands/joi.md Normal file
View file

@ -0,0 +1,41 @@
# Introduction
`JOI` is a command introduced with [MSNP2](../versions/msnp2.md).
It is a Switchboard Server command, without a response payload.
Notifies that a new user has joined the Switchboard session.
# Client/Request
This command can not be sent from the client.
# Server/Response
`JOI user-handle friendly-name {client-capabilities}`
Where `user-handle` is the joined user's handle.
Where `friendly-name` is the joined user's Friendly Name.
Where `client-capabilities` is the related user's Client Capabilities, only in [MSNP12](../versions/msnp12.md) and above.
# Examples
## Without Client Capabilities
```
S: JOI anotheruser@hotmail.com another%20user
```
## With Client Capabilities
```
S: JOI anotheruser@hotmail.com another%20user 1342554172
```
## Invalid context
*Inherited from being an unimplemented command.*
```
C: JOI 2
```
Server disconnects client.
# Known changes
* [MSNP12](../versions/msnp12.md): Added the Client Capabilities parameter (parameter 3).

176
docs/commands/msg.md Normal file
View file

@ -0,0 +1,176 @@
# Introduction
`MSG` is a command introduced with [MSNP2](../versions/msnp2.md).
It is a Notification and Switchboard Server command, WITH a request and WITH a response payload.
Used to transfer MIME-headered data to other parties, whenever that be you or other users.
# Client/Request
```
MSG TrID [ U | N | A | D ] length
data
```
## Acknowledgement Types
* U: Unacknowledged, no response is sent.
* A: Acknowledged, a [ACK](ack.md) response is sent if the message is sent successfully.
* N: Negative-Acknowledged, a [NAK](nak.md) response is sent if the messaged failed to send successfully.
* D: Data, a version of Acknowledged that also has a response of error 282 if the message was poorly formatted.
Acknowledgement Type `D` is only defined in [MSNP9](../versions/msnp9.md) and above.
Where `length` is the `length` in bytes of `data`.
Where `data` is the body of the message,
usually containing a `MIME-Version` header and a `Content-Type`.
*This can only be sent from Switchboard.*
# Server/Response
```
MSG user-handle friendly-name length
data
```
Where `user-handle` is either the senders's handle,
or `Hotmail`, if sent from the Notification Server itself.
Where `friendly-name` is either the URL-encoded Friendly Name of the sender,
or `Hotmail`, if sent from the Notification Server itself.
Where `length` is the `length` in bytes of `data`.
Where `data` is the body of the message,
usually containing a `MIME-Version` header and a `Content-Type`.
# Examples
## Client initated
### Unacknowledged message
```
C: MSG 1 U 75
MIME-Version: 1.0
Content-Type: text/plain;charset=UTF-8
unacknowledged
```
### Acknowledged message
```
C: MSG A 2 73
MIME-Version: 1.0
Content-Type: text/plain;charset=UTF-8
acknowledged
S: ACK 2
```
### Negative-Acknowledged message
```
C: MSG 3 2 85
MIME-Version: 1.0
Content-Type: text/plain;charset=UTF-8
negatively acknowledged?
S: NAK 3
```
### Data message
*This only happens in [MSNP9](../versions/msnp9.md).*
```
C: MSG 4 D 73
MIME-Version: 1.0
Content-Type: application/octet-stream
data message
S: ACK 4
```
### Poorly formatted data message
```
C: MSG 5 D 74
MIME-Version: 1.0
Content-Type: text/plain;charset=UTF-8
data message?
S: 282 5
```
### Invalid context (Notification Server)
*Inherited from being an unimplemented command.*
```
C: MSG 6 U 0
```
Server disconnects client.
## Server initated
### Notification Server
#### Initial profile
*NOTE: This profile is from [MSNP2](../versions/msnp2.md), later versions have longer initial profiles.*
```
S: MSG Hotmail Hotmail 95
MIME-Version: 1.0
Content-Type: text/x-msmsgsprofile; charset=UTF-8
LoginTime: 1726321960
```
#### Initial e-mail configuration
*NOTE: This message is from [MSNP3](../versions/msnp3.md), the [MSNP2](../versions/msnp2.md) version of this is unknown.*
```
S: MSG Hotmail Hotmail 221
MIME-Version: 1.0
Content-Type: text/x-msmsgsinitialemailnotification; charset=UTF-8
Inbox-Unread: 1
Folders-Unread: 0
Inbox-URL: /cgi-bin/HoTMaiL
Folders-URL: /cgi-bin/folders
Post-URL: http://www.hotmail.com
```
#### New e-mail
```
S: MSG Hotmail Hotmail 342
MIME-Version: 1.0
Content-Type: text/x-msmsgsemailnotification; charset=UTF-8
From: Example User
Message-URL: /cgi-bin/getmsg?msg=MSG1728932553.00&start=1&len=12&curmbox=ACTIVE
Post-URL: https://loginnet.passport.com/ppsecure/md5auth.srf?lc=1033
Subject: Just saying hello.
Dest-Folder: ACTIVE
From-Addr: example@hotmail.com
id: 2
```
The `id` header is only added for [MSNP3](../versions/msnp3.md) and above for Passport automatic authentication support.
#### Mailbox activity
```
S: MSG Hotmail Hotmail 146
MIME-Version: 1.0
Content-Type: text/x-msmsgsactivemailnotification; charset=UTF-8
Src-Folder: ACTIVE
Dest-Folder: ACTIVE
Message-Delta: 1
```
### Switchboard Server
```
S: MSG example@hotmail.com example%20user 73
MIME-Version: 1.0
Content-Type: text/plain;charset=UTF-8
acknowledged
```
# Known changes
* [MSNP9](../versions/msnp9.md): Added acknoledgement type D.

35
docs/commands/nak.md Normal file
View file

@ -0,0 +1,35 @@
# Introduction
`NAK` is a command introduced with [MSNP2](../versions/msnp2.md).
It is a Switchboard Server command, without a response payload.
Used as a negative response to [MSG](msg.md) N.
# Client/Request
This command can not be sent from the client.
# Server/Response
`NAK TrID`
# Examples
## As a response to MSG N
```
C: MSG 1 N 68
MIME-Version: 1.0
Content-Type: text/plain;charset=UTF-8
message
S: NAK 1
```
## Invalid context
*Inherited from being an unimplemented command.*
```
C: NAK 2
```
Server disconnects client.
# Known changes
None.

View file

@ -82,5 +82,5 @@ Client disconnects from server
Client opens a connection to 10.0.0.5:1863 Client opens a connection to 10.0.0.5:1863
# Known changes # Known changes
* [MSNP3](..versions/msnp3.md) adds a new parameter that is always 0. * [MSNP3](..versions/msnp3.md) adds a new parameter that is always 0 to XFR NS.
* [MSNP7](..versions/msnp7.md) adds a new parameter that is the current server you are connected to. * [MSNP7](..versions/msnp7.md) adds a new parameter that is the current server you are communicating with to XFR NS.

View file

@ -35,6 +35,9 @@ More is to come soon! Hopefully!
* [FND command](commands/fnd.md): What was returned when this was disabled in 2003 in [MSNP2](versions/msnp2.md) to [MSNP6](versions/msnp6.md)? * [FND command](commands/fnd.md): What was returned when this was disabled in 2003 in [MSNP2](versions/msnp2.md) to [MSNP6](versions/msnp6.md)?
* [FND command](commands/fnd.md): How did sending an invitation work in [MSNP2](versions/msnp2.md)-[MSNP4](versions/msnp4.md)? Client Version 3.0 using [MSNP4](versions/msnp4.md) just uses SND instead, but what about Client Version 1.0 to 2.2? * [FND command](commands/fnd.md): How did sending an invitation work in [MSNP2](versions/msnp2.md)-[MSNP4](versions/msnp4.md)? Client Version 3.0 using [MSNP4](versions/msnp4.md) just uses SND instead, but what about Client Version 1.0 to 2.2?
* [IMS command](commands/ims.md): What is the unknown number (that is usually `0`) in the response? * [IMS command](commands/ims.md): What is the unknown number (that is usually `0`) in the response?
* [NAK command](commands/nak.md): This isn't used ever as a response for MSG D right?
* [MSG command](commands/msg.md): What can return from MSG D?
* [INF command](commands/inf.md): ***Why*** does the [MSNP2](versions/msnp2.md) [draft](https://datatracker.ietf.org/doc/html/draft-movva-msn-messenger-protocol-00#section-7.2) have this in Switchboard? It's not used by any client as far as i'm aware.
# Common (or not) Terms # Common (or not) Terms
* Official Client: MSN Messenger (Service) or Windows Live Messenger. * Official Client: MSN Messenger (Service) or Windows Live Messenger.

View file

@ -17,7 +17,7 @@ It introduces the notification service commands:
# Known changes # Known changes
(from [MSNP11](msnp11.md)): (from [MSNP11](msnp11.md)):
* Network IDs are introduced, each bit represents a contact's service, with bit 0/decimal 1 being MSNP. * Network IDs are introduced, each bit represents a contact's service, with bit 0/decimal 1 being MSNP.
* Switchboard commands JOI and IRO have a new parameter for the Client Capabilities of the relevant user. * Switchboard commands [JOI](../commands/joi.md) and [IRO](../commands/iro.md) have a new parameter for the Client Capabilities of the relevant user.
* LST has the Network ID after the list bits (on any list), but before the Group ID (if on FL). * LST has the Network ID after the list bits (on any list), but before the Group ID (if on FL).
* Official Client: Uses Passport 3.0 (via the Microsoft Identity Common Runtime Library). * Official Client: Uses Passport 3.0 (via the Microsoft Identity Common Runtime Library).
* Official Client: Dropped support for older operating systems, Now requires Windows XP or higher. * Official Client: Dropped support for older operating systems, Now requires Windows XP or higher.

View file

@ -22,7 +22,7 @@ It introduces the notification service commands:
* [INF](../commands/inf.md) * [INF](../commands/inf.md)
* ILN * ILN
* LST * LST
* MSG * [MSG](../commands/msg.md)
* NLN * NLN
* [OUT](../commands/out.md) * [OUT](../commands/out.md)
* PNG (not in draft) * PNG (not in draft)
@ -38,14 +38,14 @@ It introduces the notification service commands:
* [XFR](../commands/xfr.md) * [XFR](../commands/xfr.md)
It introduces the switchboard service commands: It introduces the switchboard service commands:
* ACK * [ACK](../commands/ack.md)
* ANS * [ANS](../commands/ans.md)
* BYE * [BYE](../commands/bye.md)
* CAL * [CAL](../commands/cal.md)
* IRO * [IRO](../commands/iro.md)
* JOI * [JOI](../commands/joi.md)
* MSG * [MSG](../commands/msg.md)
* NAK * [NAK](../commands/nak.md)
* [OUT](../commands/out.md) * [OUT](../commands/out.md)
* USR * USR

View file

@ -10,8 +10,8 @@ It was introduced officially in Client Version 5.0.0537.
*No error codes were known to be introduced in this version* *No error codes were known to be introduced in this version*
The following commands were removed in this version: The following commands were removed in this version:
* INF (automatic disconnection) * [INF](../commands/inf.md) (automatic disconnection)
* FND (`502` by July 2003, see Known changes for client details.) * [FND](../commands/fnd.md) (`502` by July 2003, see Known changes for client details.)
# Known changes # Known changes
(from [MSNP7](msnp7.md)): (from [MSNP7](msnp7.md)):

View file

@ -20,8 +20,9 @@ The following commands were removed in this version:
(from [MSNP8](msnp8.md)): (from [MSNP8](msnp8.md)):
* [CHG](../commands/chg.md), ILN, NLN: Added a MSNObject parameter. * [CHG](../commands/chg.md), ILN, NLN: Added a MSNObject parameter.
Now you can tell other clients about image data associated with your account. Now you can tell other clients about image data associated with your account.
* QNG: Added a "next ping" time (in seconds) parameter * QNG: Added a "next ping" time (in seconds) parameter.
* Switchboard MSG: Acknowledgement type D added * Switchboard MSG: Acknowledgement type D added.
Can respond with either [ACK](../commands/ack.md), error 282, or possibly any other error codes.
* Official Client: Error 603 is handled again after being removed in Client Version 5.0. * Official Client: Error 603 is handled again after being removed in Client Version 5.0.
Error code 711 is no longer handled after being implemented in Client Version 5.0. Error code 711 is no longer handled after being implemented in Client Version 5.0.
* Official Client: Supports the Messenger Config XML service, replacing `svcs.microsoft.com`. * Official Client: Supports the Messenger Config XML service, replacing `svcs.microsoft.com`.