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