Code Monkey home page Code Monkey logo

tachyon's Introduction

Tachyon

Tachyon is a translation layer between MSNP18 & the Matrix API.

What's sort of working now

  • Redirection to localhost
  • User/Password login
  • Profile pics
  • Display names
  • Presence (kinda working, WLM is not really compatible with the Matrix way of handling presence currently)
  • 1v1 DM Rooms
  • Text messages
  • File upload
  • Multiple Points of Presence (showing all your logged in sessions)
  • E2E encryption (kinda, no client validation)
  • Vocal messages
  • Group dms (they appear when someone else talks in them)

What's next

  • Photo sharing
  • Contact management (Add, remove, etc)
  • Handle all the default matrix messages types (m.notice, etc)
  • Presence updates when presence disabled on homeserver
  • Add & Delete contacts
  • Font Styling for text messages
  • Custom events for WLM's specific messages (like nudges & winks)
  • Try to map Circles to non DM Rooms
  • Handle DM rooms with more than two people
  • Contacts recent activity
  • MSNToday
  • MSNObject stores (Emoticon packs, winks, etc)
  • Custom Games & Activities

Components

There are three distinct components making Tachyon tick:

  1. Notification Server - TCP Server listening on port 1863: This server handles the meat of MSNP18.
  2. Switchboard Server (or Mixer) - TCP Server listening on port 1864: This server handles rooms. One room per TCP connection.
  3. HTTP Server: This server handles all the SOAP Services used by the client (and various bits and bops)
    • The Address Book: Handles the Contact List
    • Sharing Service: Handles the membership lists (Who has added you back, Who did you add in your contact list)
    • Storage Service: Handles updating and getting your profile
    • RST2, Request Security Token: The SOAP Service responsible for authenticating the client

Special Thanks

  • The Escargot Project
  • Luis Mariano Guerra and his project Emesene
  • Pang Wu, Ethem Evlice, Scott Werndorfer & The MSNPSharp Team
  • All the people that saved documentation and packet capture from the time
  • The Matrix Foundation & the team behind the Rust SDK
  • The team behind Windows Live Messenger, especially 14.0: thanks for all my childhood memories and friendships that still carried on to this day

tachyon's People

Contributors

aeoncl avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

tachyon's Issues

Code quality improvements

Currently, the code is a mess. There are a lot of begginer mistakes and POC shortcuts:

  • Some classes have a lot more responsibility than they should (CommandParsers).
  • The MSNClient repository system is kinda dumb since we only support 1 client at a time.
  • Helpers are dumb, especially the matrix_sync_helper
  • Project structure needs to be overhauled: moving MSNP specific classes in a separate crate
  • Some code is duplicated and can be made more generic (TCPServer -> NotificationServer & Switchboard Server)
  • P2PSession must be moved to Switchboard

Add logs in handle message

Intermittent behaviour where the switchboard is not initialized on a new message.
Maybe the switchboards don't get cleaned as planned

Implement contacts Display Pictures

The trick with this one is that MSNP18 uses P2P transfert for the display pictures:

  • First we need to generate a correct msnobj and add it to the presence event, this serve as change notification
  • Then we will receive an SLP invite through the switchboard
  • After the SLP session is established, we need to prepare the P2P packets and send them.

This will probably require changing out how we manage P2P sessions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.