toxcore implementation in Rust
Clone or download
kpp Merge pull request #263 from suhr/logo
Add logo to the documentation
Latest commit 9113d04 Nov 12, 2018

README.md

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 😄. 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 😉

  • 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.