Warning
This project is still in active development and currently not considered stable, please take this into consideration!
Additionally, changes are planned to be made in the next few days so keep an eye out!
PolyMSNP is a lightweight web-based client for the MSNP instant messaging protocol!
This repository contains the Rust-based source code for the server.
Note
If you are hosting your own instance of PolyMSNP, please let me know!
As of right now, there are 2 websites hosting this server:
- http://pmsnp.kooper.online | https://pmsnp.kooper.online (not 24/7, only for testing)
- If you get an error (e.g. 1033) when trying to access, 99% chance it is down!
- https://msn.rawrr.dev (24/7, updates weekly per cronjob)
Even so, it is highly recommended to host PolyMSNP yourself!
The legacy UI requires at least Internet Explorer 9 to function correctly.
The modern UI has not been extensively tested, however any modern browser should just work.
Currently, the main JS script used to communicate between the device and the server is compliant with ECMAScript 3.
This means support for some browsers from 1999/2000 onwards (Firefox 1, Chrome 1, Safari 1).
The following browsers are confirmed not working:
- Internet Explorer 8 and earlier (support will come soon!)
- Opera Mini (will probably never work)
The following browsers have not been tested, please try them out and let me know:
- Opera (Mobile)
- Netscape Navigator
- Safari 1
- Chrome 1
- Firefox 1
- Specify your own (or use predefined) MSNP11-compatible third-party servers
- Send and receive messages, nudges, and emoticons.1
- Add and remove contacts from your contact list
- View and change your own username, personal message and status (online, offline/invisible, away, etc.)
- View contact's status and personal message
Next build:
- Dark mode support for the generic UI
Next release:
- View profile pictures
- Proper versioning system that's implemented into the program
- Have PolyMSNP display a build version and complain if its not the latest
Maybe:
- Sending images (this is gonna be a pain to implement but hopefully it'll be worth it)
- Winks (requires Adobe Flash which is discontinued)
- Desktop users can still view Flash content via Ruffle or Clean Flash Player
- File transfers (not sure how to implement, also this is not meant to be a feature-complete client):
- As a workaround you can use something like Litterbox instead.
- Voice/video calling (No clue how to implement this and also this probably wouldn't work on mobile devices)
Anyone is welcome to contribute to PolyMSNP! All you need to do is:
- Fork the repository
- Make your changes
- Submit a pull request Make sure to read CONTRIBUTING.md first!
- The Rust programming language, downloadable from here.
- By association, any operating system that is still supported by Rust.
Once installed, you can do the following:
- Linux and macOS:
git clone https://github.com/dskooper/PolyMSNP cd PolyMSNP chmod +x build-release.sh && ./build-release.sh - Windows:
- Download the entire repository by clicking on this link
- Extract the repository into a folder and enter it.
- Right click on
build-release.ps1and press on "Run with PowerShell`
If successful, there should now be a build-rel folder containing an executable.
Once compiled, you can launch the server executable to immediately start hosting on 0.0.0.0 port 76592.
To create a new emoticon pack for PolyMSNP, do the following:
- Inside your PolyMSNP executable's folder, navigate to
static/emoticons - Inside
packs.json, insert a new entry:[ ..., { "id": "example", "name": "Example Name", "description": "A short sentence meant to summarise the emoticons used." } ] - Create a new folder with the same name as the pack ID (e.g. "example")
- Inside that folder, place all of your raw emoticon images (ideally transparent) and create a new file called
<Pack ID>.json. Replace<Pack ID>with your pack's ID (e.g. "example") - Inside the new JSON file, create a reference to all of your emoticons:
{ "emoticons": { ":)": "happy.png", ":(": "sad.png", ">:(": "angry.png", ... } }
- campos02 for creating the MSNP11 SDK which this project uses
- CrossTalk for a great MSN Messenger revival.
This project is open-source and provided under the GNU GPL v3 license: you can view the license contents here
