Skip to content

Commit 9173f22

Browse files
committed
Add stuff to the README
1 parent 3bd8576 commit 9173f22

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

README.md

+32
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,34 @@
11
rufs
22
====
3+
4+
RUFS is a filesystem that makes it easy to conveniently shares files with others. RUFS provides a FUSE mount that shows the files shared by everyone in your circles.
5+
6+
RUFS v2 introduced the concept of circles. Your RUFS client only interacts with people in overlapping circles.
7+
8+
In your fuse mount, you'll find three high level directories:
9+
10+
- /all: A combined view of all your circles together
11+
- /$circle/all: A combined view of everyone in this circle
12+
- /$circle/$username: The filesystem of one specific peer.
13+
14+
## Technical
15+
16+
The unique id of each circle is the hostname of the Discovery server. When starting your client, it will connect to the Discovery server of the circles you're in and the Discovery server will tell you how to connect to each of your peers.
17+
18+
Discovery servers are not aware of the files in a circle. Each time you list directory contents a Readdir RPC is sent to all your peers.
19+
20+
### Authentication
21+
22+
Each circle has a self-signed CA with the CommonName being the hostname of the Discovery server. The Discovery server is available over TLS with the CA as its certificate. Administrators can issue tokens (using `create_auth_token`), with which users can later `register` in a circle. Registration signs your public key with the circle's CA. You then use this certificate to talk to everyone else in the circle. This also guarantees you can't talk to people in circles you're not in.
23+
24+
### Configuration
25+
26+
By default, your configuration is stored in ~/.rufs2/. Inside, you'll find a `config.yaml` which lists your circles and which paths to share. You'll also find a folder `pki`, inside which there's one folder per circle you're a member of. For each circle we have the ca certificate of the circle and your private key + personal certificate.
27+
28+
By default your client connects to all circles listed in `config.yaml`. You can use `--config=~/.rufs2-foobar` for another config dir, or if you only want to subset your circles, you can specify a different config file in the same folder with `--config=~/.rufs2/anothercircle.yaml`.
29+
30+
### File transfers
31+
32+
There's two modes of transferring files: simple and fancy. In simple mode, you just send a ReadFile RPC to the peer you want the file from. You specify the offset and read size, and you'll get the data. The server can decide to trigger fancy mode at this point.
33+
34+
In fancy mode, the download is orchestrated through the DownloadOrchestrator. Everyone connects to the orchestrator and indicates which byte ranges they have and want, and the orchestrator tells people what data to send to another when.

0 commit comments

Comments
 (0)