equalitie / ouisync

A secure peer-to-peer file synchronization app.
https://ouisync.net
Mozilla Public License 2.0
36 stars 9 forks source link
bittorrent decentralized-applications file-sharing-application peer-to-peer

Ouisync

CI dependency status

Components

This repository contains two main components: the Ouisync library (lib/) containing the core functionality and a command line utility as a user interface (CLI) for the library (cli/, currently Linux only).

There is also a Graphical User Interface (GUI) app for the library hosted in a separate repository.

Apart from the above, this repository also contains a C Foreign Function Interface (FFI) for use by other languages. An example of its use can be found in the Flutter based Ouisync plugin used by the GUI app.

Building

Note, if you want to build only the CLI application, use the instructions outlined in the README.md document located in the cli/ directory.

Ouisync uses a number of other Rust libraries that are downloaded during the build process. However, to build and use the Ouisync application (as opposed to just the library), one will additionally need to install the FUSE library and development files.

$ sudo apt install pkg-config libfuse-dev

Install Rust using instructions from rust-lang.org.

Build

$ cargo build --release

The results will then be found in the ./target/release/ directory.

Debugging tests

Use the tracing::[level]! macros for easier debugging.

The format for RUST_LOG is either

RUST_LOG=[level]

or

RUST_LOG=[target]=[level],[target]=[level],...

Where level can be one of error, warn, info, debug or trace. The target can be obtained from the list given by cargo test --package and by replacing dashes (-) with underscores (_) in the package names.

Ouisync uses tracing_subscriber to include information where individual output lines originated from. To enable this functionality, set the level to either info, debug or trace.

Testing help acknowlegement

This project is tested with BrowserStack.