blob: c304f23bc53bf6e0391f1fc3287b2e1dd8340839 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
_
__ _ ___ _ __ (_)______ _
/ _` |/ _ \ '_ \| |_ / _` |
| (_| | __/ | | | |/ / (_| |
\__, |\___|_| |_|_/___\__,_|
|___/
this is a very poor / partial / non-compliant dat implementation in rust.
it will eat-your-data.
### Progress
- [ ] SLEEP v2 Files
- [x] read/write file headers
- [x] read/write file chunks as raw bytes
- [ ] pread/pwrite file chunks without seeking
- [x] read data entries by index
- [ ] append data entries
- [ ] verify entire register (signatures and merkel tree)
- [ ] bitfields
- [ ] Drive metadata and files
- [ ] add file to register
- [ ] checkout file from register
- [ ] print file tree ("ls")
- [ ] add directory recursively
- [ ] checkout directory recursively
- [ ] Networking
- [ ] send/receive encrypted messages to a known host
- [ ] pull register from a known host
- [ ] sync register to a known host
- [ ] lookup hosts in DHT swarm by discovery key
- [ ] Wrapper command
- [ ] clone
- [ ] share
- [ ] log
- [ ] status
- [ ] add
### Dependencies
While (temporarily?) using Cargo's `[patch]` feature to patch sodiumoxide,
builds require Rust 1.21 (stable circa Oct 2017).
Requires libsodium-dev system-wide (for now).
Notable Rust Libraries:
- rust-crypto for blake2b
- sodiumoxide Ed25519 (signing) and XSalsa20 (stream)
- integer-encoding for simple varints (network protocol)
- rust-protobuf for protobuf (network protocol)
- ??? for Kademlia Mainline DHT
protobuf code generated with `rust-protobuf`; the `protoc` tool (`sudo apt
install protobuf-compiler`) and rust plugin `protoc-gen-rust` (`cargo install
protobuf`) are only needed when changing .proto files, eg:
protoc --rust_out . network_proto.proto
|