Skip to main content

A SaltyRTC compliant signalling server.

Project description

SaltyRTC Signalling Server
==========================

|Travis| |codecov| |PyPI| |Gitter|

This is a SaltyRTC server implementation for Python 3.4+ using
`asyncio`_.

Note
****

On machines where Python 3 is not the default Python runtime, you should
use ``pip3`` instead of ``pip``.

Prerequisites
*************

.. code-block:: bash

$ sudo apt-get install python3 python3-pip

We recommend using `venv`_ to create an isolated Python environment:

.. code-block:: bash

$ pyvenv venv

You can switch into the created virtual environment *venv* by running
this command:

.. code-block:: bash

$ source venv/bin/activate

While the virtual environment is active, all packages installed using
``pip`` will be installed into this environment.

To deactivate the virtual environment, just run:

.. code-block:: bash

$ deactivate

If you want easier handling of your virtualenvs, you might also want to
take a look at `virtualenvwrapper`_.

Installation
************

If you are using a virtual environment, activate it first.

Install the module by running:

.. code-block:: bash

$ pip install saltyrtc.server

The dependency ``libnacl`` will be installed automatically. However, you
may need to install `libsodium`_ for ``libnacl`` to work.

Command Line Usage
******************

The script ``saltyrtc-server`` will be automatically installed and
provides a command line interface for the server. Run the following
command to see usage information:

.. code-block:: bash

$ saltyrtc-server --help

Contributing
************

If you want to contribute to this project, you should install the
optional ``dev`` requirements of the project in an editable environment:

.. code-block:: bash

$ git clone https://github.com/saltyrtc/saltyrtc-server-python.git
$ cd saltyrtc-server-python
$ pip install -e .[dev]

Before creating a pull request, it is recommended to run the following
commands to check for code style violations (``flake8``), optimise
imports (``isort``) and run the project's tests:

.. code-block:: bash

$ flake8 .
$ isort -rc .
$ py.test

Reporting Security Issues
*************************

Please report security issues directly to one or both of the following
contacts:

- Danilo Bargen

- Email: mail@dbrgn.ch
- Threema: EBEP4UCA
- GPG: `EA456E8BAF0109429583EED83578F667F2F3A5FA`_

- Lennart Grahl

- Email: lennart.grahl@gmail.com
- Threema: MSFVEW6C
- GPG: `3FDB14868A2B36D638F3C495F98FBED10482ABA6`_

.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _venv: https://docs.python.org/3/library/venv.html
.. _virtualenvwrapper: https://virtualenvwrapper.readthedocs.io/
.. _libsodium: https://download.libsodium.org/doc/installation/

.. |Travis| image:: https://travis-ci.org/saltyrtc/saltyrtc-server-python.svg?branch=master
:target: https://travis-ci.org/saltyrtc/saltyrtc-server-python
.. |codecov| image:: https://codecov.io/gh/saltyrtc/saltyrtc-server-python/branch/master/graph/badge.svg
:target: https://codecov.io/gh/saltyrtc/saltyrtc-server-python
.. |PyPI| image:: https://badge.fury.io/py/saltyrtc.server.svg
:target: https://badge.fury.io/py/saltyrtc.server
.. |Gitter| image:: https://badges.gitter.im/saltyrtc/Lobby.svg
:target: https://gitter.im/saltyrtc/Lobby
.. _EA456E8BAF0109429583EED83578F667F2F3A5FA: https://keybase.io/dbrgn
.. _3FDB14868A2B36D638F3C495F98FBED10482ABA6: https://keybase.io/lgrahl

Changelog
*********

`3.1.0`_ (2019-01-07)
--------------------------

- Event callback arguments now always need to provide a `data` argument

`3.0.1`_ (2019-01-02)
---------------------

- Fix forward the `timeout` close code as an `int` to event callbacks

`3.0.0`_ (2018-12-18)
---------------------

- Use the `timeout` close code (`3008`) when a client does not respond to a
*ping* message (major)
- Add support for Python 3.7
- Various task queue improvements resulting in more robust client handling
- Fix to not send a 'disconnected' message when a responder has been dropped
via 'drop-responder'
- Fix to prevent the initiator from relaying messages to a responder client
which is in the process of being dropped
- Fix to not accept new incoming connections when closing the server

`2.0.1`_ (2018-08-20)
---------------------

- Fix to prevent creating two path instances with the same path string
- Various improvements to logging messages

`2.0.0`_ (2018-07-16)
---------------------

**Important:** Make sure you're using Python >= 3.4.4 and that your clients
support the `disconnected` message before upgrading.

- Add support for the `disconnected` message (major)
- Fix potential invalid order of messages when dispatching a `send-error`
- Fix the *id* field's value in the `send-error` message
- Fix a few potential race conditions

`1.0.2`_ (2017-11-15)
---------------------

- Fix do not accept unencrypted 'client-auth' messages from the initiator

`1.0.1`_ (2017-07-25)
---------------------

- Fix to handle new `libnacl <https://github.com/saltstack/libnacl/pull/91>`_
exceptions

`1.0.0`_ (2017-03-24)
---------------------

- Add server implementation of the `SaltyRTC 1.0 Protocol`_
- Initial publication on PyPI

.. _SaltyRTC 1.0 Protocol: https://github.com/saltyrtc/saltyrtc-meta/blob/protocol-1.0/Protocol.md

.. _4.0.0: https://github.com/saltyrtc/saltyrtc-server-python/compare/v3.0.1...v3.1.0
.. _3.0.1: https://github.com/saltyrtc/saltyrtc-server-python/compare/v3.0.0...v3.0.1
.. _3.0.0: https://github.com/saltyrtc/saltyrtc-server-python/compare/v2.0.1...v3.0.0
.. _2.0.1: https://github.com/saltyrtc/saltyrtc-server-python/compare/v2.0.0...v2.0.1
.. _2.0.0: https://github.com/saltyrtc/saltyrtc-server-python/compare/v1.0.2...v2.0.0
.. _1.0.2: https://github.com/saltyrtc/saltyrtc-server-python/compare/v1.0.1...v1.0.2
.. _1.0.1: https://github.com/saltyrtc/saltyrtc-server-python/compare/v1.0.0...v1.0.1
.. _1.0.0: https://github.com/saltyrtc/saltyrtc-server-python/compare/aa3aceba46cc8683e640499936a6eaa406819ef8...v1.0.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

saltyrtc.server-3.1.0.tar.gz (55.1 kB view details)

Uploaded Source

Built Distribution

saltyrtc.server-3.1.0-py34.py35.py36.py37-none-any.whl (34.6 kB view details)

Uploaded Python 3.4 Python 3.5 Python 3.6 Python 3.7

File details

Details for the file saltyrtc.server-3.1.0.tar.gz.

File metadata

  • Download URL: saltyrtc.server-3.1.0.tar.gz
  • Upload date:
  • Size: 55.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.2

File hashes

Hashes for saltyrtc.server-3.1.0.tar.gz
Algorithm Hash digest
SHA256 39afc161f4c17dc05f5f69a29c2981887ae6feafa47fd2bd6840ea137ec9bd04
MD5 c8fadbf6021c11555ffbb4000b0864c4
BLAKE2b-256 94c04d2d6c73afaf03959686cf36fbe9f751a3ba0daddddf7e7b53e700203af4

See more details on using hashes here.

File details

Details for the file saltyrtc.server-3.1.0-py34.py35.py36.py37-none-any.whl.

File metadata

  • Download URL: saltyrtc.server-3.1.0-py34.py35.py36.py37-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3.4, Python 3.5, Python 3.6, Python 3.7
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.1.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.2

File hashes

Hashes for saltyrtc.server-3.1.0-py34.py35.py36.py37-none-any.whl
Algorithm Hash digest
SHA256 fc13e81e54e2525c388332ca891f57b966394e15e01b7dae350dca9b74dae8a4
MD5 8caa8c0c8013a473d1ce7c3a88286cd7
BLAKE2b-256 dd1da090d92734ef6cbda17f1ec30e2b6db4e758ca635ca03b92a6116d38306a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page