All Projects → Laverna → laverna-server

Laverna / laverna-server

Licence: MPL-2.0 License
Signaling Server for Laverna's P2P Differential Synchronization

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to laverna-server

Vynchronize
Watch videos with friends online with the new real time video synchronization platform
Stars: ✭ 1,072 (+4772.73%)
Mutual labels:  synchronization, socket-io
SAVY
SAVY Player provides service to watch local videos with in a synchronized way.
Stars: ✭ 15 (-31.82%)
Mutual labels:  synchronization, socket-io
syncwatch
Browser extension to watch videos together
Stars: ✭ 48 (+118.18%)
Mutual labels:  synchronization, socket-io
myChat
MyChat es una aplicación de mensajería en tiempo real con servidores de Discord (similar a un canal de Discord).
Stars: ✭ 30 (+36.36%)
Mutual labels:  socket-io
boltly
Boltly: The complete Socket.io test client!
Stars: ✭ 16 (-27.27%)
Mutual labels:  socket-io
video-group-meeting
WebRTC video chat for multi users using React and Node Express.
Stars: ✭ 40 (+81.82%)
Mutual labels:  socket-io
S4
🔄 Fast and cheap synchronisation of files using Amazon S3
Stars: ✭ 69 (+213.64%)
Mutual labels:  synchronization
boss
React+express+sock.io+mongodb build a boss
Stars: ✭ 25 (+13.64%)
Mutual labels:  socket-io
quantum-face-register
face register with three.js and tracking.js
Stars: ✭ 44 (+100%)
Mutual labels:  socket-io
chattt-backend
🖥 Backend for chattt
Stars: ✭ 17 (-22.73%)
Mutual labels:  socket-io
Whatsapp-Clone-Flutter
The Repository of Chat App development UI PART using Flutter (Youtube Series)
Stars: ✭ 275 (+1150%)
Mutual labels:  socket-io
React-Native-Chat-App
A simple chatting app built with React Native, Socket.io, ExpressJS and MongoDB. The server app provides APIs for authentication, message sending and receiving. In the client app React-Native-Gifted-Chat is used for the chat interface.
Stars: ✭ 22 (+0%)
Mutual labels:  socket-io
cells-sync
Sync Client for Pydio Cells
Stars: ✭ 21 (-4.55%)
Mutual labels:  synchronization
vue-element-admin-fastapi
vue-element-admin-fastapi
Stars: ✭ 145 (+559.09%)
Mutual labels:  socket-io
Project12-B-Slack-Web
Project12-B-Slack-Web
Stars: ✭ 21 (-4.55%)
Mutual labels:  socket-io
v chat sdk
official sdk for v chat this is a complete chat ecosystem use flutter for clint node js and socket io for server side flutter chat v chat sdk and flutter group chat
Stars: ✭ 25 (+13.64%)
Mutual labels:  socket-io
paichat
a simple chat with socket.io 🍱
Stars: ✭ 17 (-22.73%)
Mutual labels:  socket-io
node-v
🔒 Secure ❄️ Synchronized ⚡️ Realtime ☁️ Cloud 🌈 Native JavaScript Variables & Events
Stars: ✭ 27 (+22.73%)
Mutual labels:  synchronization
socket.io-msgpack-parser
socket.io parser based on msgpack
Stars: ✭ 39 (+77.27%)
Mutual labels:  socket-io
Cavemen-GGJ2019
A multiplayer survival game developed during Global Game Jam 2019.
Stars: ✭ 21 (-4.55%)
Mutual labels:  socket-io

Signaling Server for Laverna's P2P Differential Synchronization

Wiki | IRC | Gitter Chat

Build Status Coverage Status Code Climate

Dependencies

  1. Git
  2. Node.js v8 or higher
  3. MongoDB

Installation


  1. Clone the repository
$ git clone [email protected]:Laverna/server.git
# navigate to the project directory
cd server
  1. Install dependencies
$ npm install
  1. Configure the signal server Copy .env.example to .env and change configs in the new file.

  2. Start the server

$ npm start

Security


Authentication

To authenticate a client on the server it uses token based authentication by using JSON Web Tokens and OpenPGP signatures.

The authentication method is based on public key authentication method where the possession of the private key serves as authentication.

How does it work?

  1. A client requests a session token by sending a GET request to /api/token/username/:username
  2. The server generates and sends a JWT token (HS256 algorithm) for the client which will expire after 8 minutes
  3. The client signs the session token with their private OpenPGP key and sends a POST request to /api/auth
  4. The server:
    1. Checks the authenticity of the signature
    2. Checks the signed JWT session token
    3. If there is no error, it generates an authentication token using JWT. The token will expire after 24 hours
  5. The authentication token is used to authenticate the client on the signaling socket server.

What Personal Information is Stored on the Server?

The server stores a minimum amount of information which includes your username and public OpenPGP key and fingerprint. Keep in mind if your OpenPGP key includes your email, it can be easily extracted.

Personal Information which is Publicly Available

Some of your personal information will be available to the public. It is necessary for our REST API.

The following data should be considered public:

  1. Your username
  2. Your public OpenPGP key
  3. Your OpenPGP key fingerprint

Security Audit


The authentication method used in this project was implemented by us and it hasn't been vetted nor audited by security experts. Use it at your own risk.

License


Published under MPL-2.0 License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].