add lots of 'client to node' request types
This commit is contained in:
commit
23d8c57102
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
/target
|
||||||
|
Cargo.lock
|
9
Cargo.toml
Normal file
9
Cargo.toml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[package]
|
||||||
|
name = "FCPv2"
|
||||||
|
version = "0.0.1"
|
||||||
|
authors = ["Horhik <horhik@tuta.io>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
9
src/lib.rs
Normal file
9
src/lib.rs
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
mod types;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
assert_eq!(2 + 2, 4);
|
||||||
|
}
|
||||||
|
}
|
2
src/types/client/mod.rs
Normal file
2
src/types/client/mod.rs
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
mod types;
|
||||||
|
pub use types::*;
|
198
src/types/client/types.rs
Normal file
198
src/types/client/types.rs
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
use std::ffi::OsStr;
|
||||||
|
use std::net::Ipv4Addr;
|
||||||
|
use std::path::Path;
|
||||||
|
pub enum NodeIdentifier {
|
||||||
|
Name(String),
|
||||||
|
Identity(String),
|
||||||
|
Addr(Ipv4Addr),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum TrustLevel {
|
||||||
|
Low,
|
||||||
|
Normal,
|
||||||
|
High,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum VisibilityLevel {
|
||||||
|
No,
|
||||||
|
NameOnly,
|
||||||
|
Yes,
|
||||||
|
}
|
||||||
|
pub enum VerbosityPut {
|
||||||
|
SimpleProgress,
|
||||||
|
ExpectedHashes,
|
||||||
|
PutFetchable,
|
||||||
|
StartedCompressionANDFinishedCompression,
|
||||||
|
}
|
||||||
|
pub enum VerbosityGet {
|
||||||
|
SimpleProgress,
|
||||||
|
SendingToNetwork,
|
||||||
|
CompatibilityMode,
|
||||||
|
ExpectedHashes,
|
||||||
|
ExpectedMIME,
|
||||||
|
ExpectedDataLength,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum Retry {
|
||||||
|
None,
|
||||||
|
Forever,
|
||||||
|
Num(i32),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum Persistence {
|
||||||
|
Connection,
|
||||||
|
Reboot,
|
||||||
|
Forever,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum UploadForm {
|
||||||
|
Direct,
|
||||||
|
Disk,
|
||||||
|
Redirect,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum ReturnType {
|
||||||
|
Direct,
|
||||||
|
None,
|
||||||
|
Disk,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum NumOrNone {
|
||||||
|
None,
|
||||||
|
Num(u32),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum Priority {
|
||||||
|
A, // 0
|
||||||
|
B, // 1
|
||||||
|
C, // 2
|
||||||
|
D, // 3
|
||||||
|
E, // 4
|
||||||
|
F, // 5
|
||||||
|
G, // 6
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct ClientHello {
|
||||||
|
message_name: String,
|
||||||
|
name: String,
|
||||||
|
expected_version: f32,
|
||||||
|
}
|
||||||
|
// TODO not implemented ListPeer
|
||||||
|
pub struct ListPeer {
|
||||||
|
message_name: String,
|
||||||
|
node_identifier: NodeIdentifier,
|
||||||
|
with_volatile: Option<bool>,
|
||||||
|
with_metadata: Option<bool>,
|
||||||
|
}
|
||||||
|
pub struct ListPeers {
|
||||||
|
message_name: String,
|
||||||
|
with_volatile: Option<bool>,
|
||||||
|
with_metadata: Option<bool>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct ListPeerNotes {
|
||||||
|
message_name: String,
|
||||||
|
node_identifier: NodeIdentifier,
|
||||||
|
}
|
||||||
|
pub struct AddPeer {
|
||||||
|
message_name: String,
|
||||||
|
trust: TrustLevel,
|
||||||
|
visibility: VisibilityLevel,
|
||||||
|
file: Option<String>,
|
||||||
|
url: Option<String>,
|
||||||
|
raw: Option<String>,
|
||||||
|
}
|
||||||
|
pub struct ModifyPeer {
|
||||||
|
message_name: String,
|
||||||
|
node_identifier: NodeIdentifier,
|
||||||
|
allow_local_addresses: Option<bool>,
|
||||||
|
is_disabled: Option<bool>,
|
||||||
|
is_listen_only: Option<bool>,
|
||||||
|
is_burst_only: Option<bool>,
|
||||||
|
ignore_source_port: Option<bool>,
|
||||||
|
}
|
||||||
|
pub struct ModifyPeerNote {
|
||||||
|
message_name: String,
|
||||||
|
node_text: String,
|
||||||
|
peer_note_type: i32,
|
||||||
|
}
|
||||||
|
pub struct RemovePeer {
|
||||||
|
message_name: String,
|
||||||
|
node_identifier: NodeIdentifier,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct GetNode {
|
||||||
|
message_name: String,
|
||||||
|
identifier: Option<bool>,
|
||||||
|
give_opennet_ref: Option<bool>,
|
||||||
|
with_private: Option<bool>,
|
||||||
|
with_volatile: Option<bool>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct GenerateSSK {
|
||||||
|
message_name: String,
|
||||||
|
identifier: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct ClientPut {
|
||||||
|
message_name: String,
|
||||||
|
uri: String, //TODO create key type
|
||||||
|
content_type: Option<String>,
|
||||||
|
identifier: Option<String>,
|
||||||
|
verbosity: Option<VerbosityPut>,
|
||||||
|
max_retries: Option<Retry>,
|
||||||
|
priority_class: Option<i8>,
|
||||||
|
get_chk_only: Option<bool>,
|
||||||
|
global: Option<bool>,
|
||||||
|
dont_compress: Option<bool>,
|
||||||
|
codecs: Option<Vec<String>>,
|
||||||
|
client_token: Option<String>,
|
||||||
|
persistence: Option<Box<OsStr>>,
|
||||||
|
early_encode: Option<bool>,
|
||||||
|
upload_ffrom: Option<UploadForm>,
|
||||||
|
data_length: u64,
|
||||||
|
filename: String,
|
||||||
|
target_uri: Option<String>, // cloning uri if does not exists
|
||||||
|
file_hash: Option<String>, //TODO SHAA256 type
|
||||||
|
binary_blob: Option<bool>,
|
||||||
|
fork_on_cacheable: Option<bool>,
|
||||||
|
extra_inserts_single_block: Option<u32>,
|
||||||
|
extra_inserts_splitfile_header_block: Option<u32>,
|
||||||
|
compatibility_mode: Option<String>, //TODO create enum???
|
||||||
|
local_request_only: Option<bool>,
|
||||||
|
override_splitfile_crypto_key: Option<String>, //key in hex
|
||||||
|
real_time_flag: Option<String>,
|
||||||
|
metadata_threshold: Option<i64>,
|
||||||
|
data: Option<String>, // Data fromdirect
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct ClientGet {
|
||||||
|
message_name: String,
|
||||||
|
ignore_ds: Option<bool>,
|
||||||
|
ds_only: Option<bool>,
|
||||||
|
uri: String, //FIXME freenet uri type
|
||||||
|
identifier: String,
|
||||||
|
verbosity: Option<VerbosityGet>,
|
||||||
|
max_size: Option<u32>,
|
||||||
|
max_retries: Option<NumOrNone>,
|
||||||
|
priority_class: Option<Priority>,
|
||||||
|
persistence: Option<Persistence>,
|
||||||
|
client_token: Option<String>,
|
||||||
|
global: Option<bool>,
|
||||||
|
return_type: Option<ReturnType>,
|
||||||
|
binary_blob: Option<bool>,
|
||||||
|
filter_data: Option<bool>,
|
||||||
|
allowed_mime_types: Option<Vec<String>>,
|
||||||
|
filename: Option<Box<Path>>,
|
||||||
|
temp_filename: Option<Box<Path>>,
|
||||||
|
real_time_flag: Option<bool>,
|
||||||
|
initial_metadata_data_length: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Disconnect {
|
||||||
|
message_name: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Shutdown {
|
||||||
|
message_name: String,
|
||||||
|
}
|
4
src/types/mod.rs
Normal file
4
src/types/mod.rs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
mod client;
|
||||||
|
mod node;
|
||||||
|
|
||||||
|
pub use client::*;
|
0
src/types/node/mod.rs
Normal file
0
src/types/node/mod.rs
Normal file
Loading…
Reference in a new issue