This is an ultra-basic MSNP2 server suite (Dispatch, Notification, and Switchboard). There are a few known bugs that need sorting out, but in the meanwhile it provides the core functionality needed to chat with other people using the official version 1.0 of the client.
- Run the program W3b.MsnpServer.ConsoleHost.exe
- Run the 'h' command to register the server in the hosts file
- Start the MSN Messenger Service 1.0 client, or any other MSNP2-compatible client. See this wiki page for a table showing client compatibility: http://msnpiki.msnfanatic.com/index.php/Reference:ProtocolTable
- There exist three users in the database, here are their usernames and passwords respectively:
- 'email@example.com' / 'a'
- 'firstname.lastname@example.org' / 'b'
- 'email@example.com' / 'c'
- To open a second instance of MSN Messenger, use ProcessExplorer to find the "MSMSGS" Global Event and close all handles pointing to it, you can then open a second instance.
- Have fun talking to yourself or any sad friends on your LAN who happen to be using really old software.
- Hotmail Member Directory search and Invitation Emails
- When renaming oneself the others on the user's Forward List are not informed of the new username ("REA" async command issue)
- Switchboard message authentication
- Switchboard session invitation system (right now it performs no validation on invitations, so anyone can join any SB session regardless of being invited)
- Removing users from lists (this was implemented, but I commented it out whilst I refactored the code, I haven't uncommented it yet)
- Messages sent to other users in a Switchboard session are echoed to the user who sent them
- When adding a user, the status of the added user isn't given unless they change their status
- The BLP and GTC settings are confused within the server (It's using GTC when it should be using BLP)
- The users' passwords are stored as plaintext in the database due to how CRAM-MD5 (the authentication system used by Messenger) works. The only alternative is machine-key based encryption but this would stop the database from being portable. Given this is solely used for testing purposes this isn't an issue.
It shouldn't be too hard to fix these issues to provide a solid MSNP2 experience that implements the entire protocol (or what of it we can document and understand). MSNP7 through 18 are all well-documented, but I'd like to learn of the differences from MSNP3 through 6, a lot of which you can infer from documentation for MSNP7 and things like Gaim's archived source-code going back to the early 00s when MSNP5 was the current protocol version.
It should be easy enough to figure out how the Protocol and Server classes work together.
Have fun reliving 1999!