#p2p #instant-messaging #networking #tox #toxcore

tox

Implementation of toxcore in pure Rust - P2P, distributed, encrypted, easy to use DHT-based network

6 releases

0.0.6 Sep 7, 2018
0.0.5 Jun 27, 2018
0.0.4 Apr 27, 2018
0.0.3 Mar 27, 2018
0.0.1 Dec 31, 2014

#27 in Multimedia

Download history 10/week @ 2018-06-15 6/week @ 2018-06-22 52/week @ 2018-06-29 11/week @ 2018-07-06 1/week @ 2018-07-13 15/week @ 2018-07-20 6/week @ 2018-07-27 9/week @ 2018-08-03 27/week @ 2018-08-10 1/week @ 2018-08-17 6/week @ 2018-08-24 2/week @ 2018-08-31 10/week @ 2018-09-07

52 downloads per month
Used in 1 crate

MIT OR GPL-3.0+

1MB
17K SLoC

Tox

Travis Build Status Appveyor Build Status Coverage Status Docs Current Crates.io Version Join Gitter

This library is an implementation of toxcore in Rust - P2P, distributed, encrypted, easy to use DHT-based network.

Reference

The Tox Reference should be used for implementing toxcore in Rust. Reference source repository.

If existing documentation appears to not be complete, or is not clear enough, issue / pull request should be filled on the reference repository.

Contributions

... are welcome :smile:. For details, look at CONTRIBUTING.md.

Dependencies

Name Version
libsodium >=1.0.13

Building

Fairly simple. You'll need Rust >= 1.26.0 and libsodium.

When you'll have deps, build debug version with

cargo build

To run tests:

cargo test

To build docs:

cargo doc

They will be located under target/doc/

With clippy

To check for clippy warnings (linting), you need nightly Rust with clippy-preview component.

To check:

cargo clippy --all

To check with tests:

cargo clippy --all --tests

Goals

  • improved toxcore implementation in Rust
  • Rust API
  • documentation
  • tests
  • more

Progress

Not listed items are on TODO. If you're interested in them arriving sooner, consider helping :wink:

  • implementing toxcore

    • DHT Node
      • ping requests & responses
      • nodes requests & responses
      • CookieRequest
      • CookieResponse
      • CryptoHandshake
      • CryptoData
      • LanDiscovery
      • OnionRequest[0,1,2]
      • OnionResponse[3,2,1]
      • OnionAnnounceRequest & OnionDataRequest
      • OnionAnnounceResponse & OnionDataResponse (need onion client)
      • BootstrapInfo
      • NAT ping requests & responses
    • TCP Relay
      • Handshake
      • RouteRequest
      • RouteResponse
      • ConnectNotification
      • DisconnectNotification
      • PingRequest
      • PongResponse
      • OobSend
      • OobReceive
      • OnionRequest
      • OnionResponse
      • Data
    • toxencryptsave (aka TES)
  • Rust API

    It will be a subject to changes, and most likely parts that are currently public will at later point become hidden. That though depends on the needs.

  • Documentation

    • Simply great. Further improvements in progress.
  • tests

    • tests cover almost all functionality

License

Dual licensed under the MIT or GPLv3+ licenses. You may use this project under the terms of either the MIT License or the GNU General Public License (GPL) Version 3+.

For details, see LICENSE-MIT and LICENSE-GPL.

Dependencies

~7MB
~89K SLoC