mirror of https://github.com/chipsenkbeil/distant
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1. Implement system_info and spawn_wait for lua session 2. Implement wait and output for remote process 3. Switch mlua to git latest 4. Update core data error to be error type with io error conversions 5. Add proper error reporting when process gets an error response 6. Update lua launch and connect options to have defaults |
3 years ago | |
---|---|---|
.. | ||
src | 3 years ago | |
Cargo.toml | 3 years ago | |
README.md | 3 years ago |
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.14"
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::{Request, RequestData, Session, SessionInfo};
use std::path::PathBuf;
// Load our session using the environment variables
//
// DISTANT_HOST = "..."
// DISTANT_PORT = "..."
// DISTANT_KEY = "..."
let mut session = Session::tcp_connect(SessionInfo::from_environment()?).await.unwrap();
// Send a request under a specific name and wait for a response
let tenant = "my name";
let req = Request::new(
tenant,
vec![RequestData::FileReadText { path: PathBuf::from("some/path") }]
);
let res = session.send(req).await.unwrap();
println!("Response: {:?}", res);
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.