Skip to main content

Securely transfer data between computers

Project description

Magic Wormhole Mailbox Server

PyPI Tests codecov.io

This repository holds the code for the main server that Magic-Wormhole clients connect to. The server performs store-and-forward delivery for small key-exchange and control messages. Bulk data is sent over a direct TCP connection, or through a transit-relay.

Clients connect with WebSockets, for low-latency delivery in the happy case where both clients are attached at the same time. Message are stored to enable non-simultaneous clients to make forward progress. The server uses a small SQLite database for persistence (and clients will reconnect automatically, allowing the server to be rebooted without losing state). An optional "usage DB" tracks historical activity for status monitoring and operational maintenance.

Installation

pip install magic-wormhole-mailbox-server

You either want to do this into a "user" environment (putting the twist and twistd executables in ~/.local/bin/) like this:

pip install --user magic-wormhole-mailbox-server

or put it into a virtualenv, to avoid modifying the system python's libraries, like this:

virtualenv venv
source venv/bin/activate
pip install magic-wormhole-mailbox-server

You probably don't want to use sudo when you run pip, since the dependencies that get installed may conflict with other python programs on your computer. pipsi is usually a good way to install into isolated environments, but unfortunately it doesn't work for magic-wormhole-mailbox-server, because we don't have a dedicated command to start the server (twist, described below, comes from the twisted package, and pipsi doesn't expose executables from dependencies).

For the installation from source, clone this repo, cd into the folder, create and activate a virtualenv, and run pip install ..

Running A Server

Note that the standard Magic-Wormhole command-line tool is preconfigured to use a mailbox server hosted by the project, so running your own server is only necessary for custom applications that use magic-wormhole as a library.

The mailbox server is deployed as a twist/twistd plugin. Running a basic server looks like this:

twist wormhole-mailbox --usage-db=usage.sqlite

Use twist wormhole-mailbox --help for more details.

If you use the default --port=tcp:4000, on a machine named example.com, then clients can reach your server with the following option:

wormhole --relay-url=ws://example.com:4000/v1 send FILENAME

Using Docker

Dockerfile content:

FROM python:3.11
RUN pip install magic-wormhole-mailbox-server
CMD [ "twist", "wormhole-mailbox","--usage-db=usage.sqlite" ]

Note: This will be running as root, you should adjust it to be in user space for production.

Build and run:

docker build -t magicwormhole Dockerfile
docker run -p 4000:4000 -d magicwormhole

Connect:

wormhole --relay-url=ws://localhost:4000/v1 send FILENAME

License, Compatibility

This library is released under the MIT license, see LICENSE for details.

This library is compatible with python3 (3.9 and higher).

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

magic_wormhole_mailbox_server-0.6.0.tar.gz (70.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

magic_wormhole_mailbox_server-0.6.0-py3-none-any.whl (44.2 kB view details)

Uploaded Python 3

File details

Details for the file magic_wormhole_mailbox_server-0.6.0.tar.gz.

File metadata

File hashes

Hashes for magic_wormhole_mailbox_server-0.6.0.tar.gz
Algorithm Hash digest
SHA256 b1bf145f3a26d905ebff6820407976d57614f1ad8b9806210e9c4e36579a1f79
MD5 29a3ab90583e6858a74f11c3f485a77c
BLAKE2b-256 ac7a22c1d5c94793e3efe9e7fecc807490911f21b640680e9e104ec2734576cd

See more details on using hashes here.

File details

Details for the file magic_wormhole_mailbox_server-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for magic_wormhole_mailbox_server-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 245edafe547053f5e3a0b82a82391738ee4fc3ed60643beb5d19b2684dfff7af
MD5 e3db37432cc85deb102ad1e2eefe3cba
BLAKE2b-256 e972f3f6fc342bccee6f7f4d03d367290e6bd6651063af90161734fe398a1d2c

See more details on using hashes here.

Supported by

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