mirror of
https://github.com/chipsenkbeil/distant.git
synced 2024-11-15 06:12:56 +00:00
.. | ||
src | ||
Cargo.toml | ||
README.md |
distant core
Library that powers the distant
binary.
🚧 (Alpha stage software) This library is in rapid development and may break or change frequently! 🚧
Details
The distant
library supplies a mixture of functionality and data to run
servers that operate on remote machines and clients that talk to them.
- Asynchronous in nature, powered by
tokio
- Data is serialized to send across the wire via
CBOR
- Encryption & authentication are handled via XChaCha20Poly1305 for an authenticated encryption scheme via RustCrypto/ChaCha20Poly1305
Installation
You can import the dependency by adding the following to your Cargo.toml
:
[dependencies]
distant-core = "0.15"
Features
Currently, the library supports the following features:
structopt
: generatesStructOpt
bindings forRequestData
(used by cli to expose request actions)
By default, no features are enabled on the library.
Examples
Below is an example of connecting to a distant server over TCP:
use distant_core::{Session, SessionChannelExt, SecretKey32, XChaCha20Poly1305Codec};
use std::net::SocketAddr;
// 32-byte secret key paresd from hex, used for a specific codec
let key: SecretKey32 = "DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF".parse().unwrap();
let codec = XChaCha20Poly1305Codec::from(key);
let addr: SocketAddr = "example.com:8080".parse().unwrap();
let mut session = Session::tcp_connect(addr, codec).await.unwrap();
// Append text to a file, representing request as <tenant>
// NOTE: This method comes from SessionChannelExt
session.append_file_text(
"<tenant>",
"path/to/file.txt".to_string(),
"new contents"
).await.expect("Failed to append to file");
License
This project is licensed under either of
Apache License, Version 2.0, (LICENSE-APACHE or apache-license) MIT license (LICENSE-MIT or mit-license) at your option.