diff options
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | TODO | 14 |
2 files changed, 10 insertions, 12 deletions
@@ -9,7 +9,7 @@ this is a poor / partial / non-compliant dat implementation in rust. -it will eat-your-data. +it will eat-your-data! ### Status @@ -18,10 +18,10 @@ it will eat-your-data. - [ ] SLEEP v2 files and registers - [x] read/write file headers - [x] read/write file chunks as raw bytes - - [ ] pread/pwrite file chunks without seeking + - [x] pread/pwrite file chunks without seeking - [x] read data entries by index - [x] append data entries - - [ ] verify entire register (signatures and merkel tree) + - [x] verify entire register (signatures and merkel tree) - [ ] bitfields - [ ] Drive metadata and files - [x] read full history ("log") @@ -54,6 +54,7 @@ A few simplifications were made compared to the regular dat client: - Tracking of remote node state (bitfields) is minimized as much as possible. - Almost everything is synchronous and single-threaded, so only a single remote node connection at a time is allowed. +- discovery (DHT, multicast-DNS, etc) is not implemented. ### Dependencies @@ -62,7 +63,6 @@ Notable Rust Libraries: - `sodiumoxide` signing (Ed25519) and network stream encryption (XSalsa20) - `integer-encoding` for simple "varints" - `rust-protobuf` for protobuf messages -- ??? for Kademlia Mainline DHT While (temporarily?) using Cargo's `[patch]` feature to patch sodiumoxide, builds require Rust 1.21 (stable circa Oct 2017). @@ -1,11 +1,9 @@ next: -- worked (manual) example of signature generation with 3x nodes -- verifying register (sans bitfield) +- file check in/out +- drive children/tree stuff - bitfield stuff (un-indexed) https://docs.rs/bit_field/0.8.0/bit_field/trait.BitArray -- appending to drive -- network infra - secret_key-in-home helpers (read/write) - 'geniza clone' command - 'geniza checkout' command @@ -44,15 +42,14 @@ geniza: command line, swarm Backburner: -- man +- manpage - slog for logging - disable sodiumoxide serde feature -- sodiumoxcide static link +- sodiumoxide static link https://safenetforum.org/t/building-a-non-dynamically-linked-executable-of-safe-vault/9811/6 - SLEEP API: should just be empty string for algo-name, not Option<> - I have the SLEEP/register naming wrong... sleep refers to the directory? -- refactor to something pwrite based for file I/O - https://doc.rust-lang.org/std/os/unix/fs/trait.FileExt.html +- portable positional file I/O https://github.com/vasi/positioned-io - mmap https://docs.rs/scroll/0.7.0/scroll/ @@ -63,3 +60,4 @@ Backburner: - refactor key generation into generic/re-usable function - turn magic numbers in tree nodes into declared (public?) constants - root_nodes as an iterator? (vs returning a Vec) +- pretty terminal output: https://crates.io/crates/colored |