Skip to content

dskooper/PolyMSNP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 logo

PolyMSNP is a lightweight web-based client for the MSNP instant messaging protocol!

This repository contains the Rust-based source code for the server.

Servers

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:

Even so, it is highly recommended to host PolyMSNP yourself!

Compatibility

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.

JavaScript/ECMAScript

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

Features

  • 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

Todo

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)

Current list of "wontfix" features

  • 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)

Contributions

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!

Building

Prerequisites

  • 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:
    1. Download the entire repository by clicking on this link
    2. Extract the repository into a folder and enter it.
    3. Right click on build-release.ps1 and press on "Run with PowerShell`

If successful, there should now be a build-rel folder containing an executable.

Usage

Once compiled, you can launch the server executable to immediately start hosting on 0.0.0.0 port 76592.

Adding new emoticon packs

To create a new emoticon pack for PolyMSNP, do the following:

  1. Inside your PolyMSNP executable's folder, navigate to static/emoticons
  2. Inside packs.json, insert a new entry:
    [
      ...,
      {
        "id": "example",
        "name": "Example Name",
        "description": "A short sentence meant to summarise the emoticons used."
      }
    ]
    
  3. Create a new folder with the same name as the pack ID (e.g. "example")
  4. 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")
  5. Inside the new JSON file, create a reference to all of your emoticons:
    {
      "emoticons": {
        ":)": "happy.png",
        ":(": "sad.png",
        ">:(": "angry.png",
        ...
      }
    }
    

Credits/Thanks

License

gplv3-with-text-136x68

This project is open-source and provided under the GNU GPL v3 license: you can view the license contents here

Footnotes

  1. For legal reasons, PolyMSNP does not use the official MSN Messenger emoticons by default. You must provide them yourself.

  2. Make sure that this port is not blocked by your firewall or in use by another process.

About

Web-based backend/frontend for the MSNP messaging protocol

Resources

License

Contributing

Stars

Watchers

Forks

Contributors