Compare commits

..

No commits in common. "main" and "main" have entirely different histories.
main ... main

3 changed files with 10 additions and 49 deletions

3
Cargo.lock generated
View file

@ -1035,7 +1035,8 @@ checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
[[package]]
name = "reticulum"
version = "0.1.0"
source = "git+https://github.com/BeechatNetworkSystemsLtd/Reticulum-rs.git#5012cf2c48044034775207ab7ee2c67d285276bb"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d838809ab28f9bfa5354b3397bcfc2b4a7a7258e98d9ed2b18a6e39437b00202"
dependencies = [
"aes",
"cbc",

View file

@ -15,8 +15,7 @@ tokio-util = "0.7.15"
# Logging
log = "0.4.27"
env_logger = "0.10"
reticulum = { git = "https://github.com/BeechatNetworkSystemsLtd/Reticulum-rs.git" }
# reticulum = "0.1.0"
reticulum = "0.1.0"
clap = { version = "4.5.53", features = ["derive"] }
serde = { version = "1.0.228", features = ["derive"] }
bincode = { version = "2.0.1", features = ["serde"] }

View file

@ -1,6 +1,3 @@
use rand_core::OsRng;
use reticulum::destination::DestinationName;
use reticulum::identity::PrivateIdentity;
use tokio::fs;
use clap::Parser;
@ -9,9 +6,7 @@ use serde::{Deserialize, Serialize};
// RETICULUM INCLUDES
use reticulum::iface::tcp_client::TcpClient;
use reticulum::iface::tcp_server::TcpServer;
use reticulum::iface::udp::UdpInterface;
use reticulum::transport::{Transport, TransportConfig};
use tokio::time::{Duration, interval};
#[derive(Serialize, Deserialize, Debug, Clone)]
struct TcpServerConfig {
@ -23,24 +18,15 @@ struct TcpClientConfig {
bind_addr: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
struct UdpConfig {
bind_addr: String,
forward_addr: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
enum InterfaceConfig {
TcpServer(TcpServerConfig),
TcpClient(TcpClientConfig),
Udp(UdpConfig),
}
#[derive(Serialize, Deserialize, Debug, Clone)]
struct Config {
interfaces: Vec<InterfaceConfig>,
broadcast: bool,
retransmit: bool,
}
#[derive(Parser)]
@ -51,7 +37,7 @@ struct Cli {
#[tokio::main]
async fn main() {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("trace")).init();
log::info!(">>> TRANSPORT NODE <<<");
@ -63,18 +49,10 @@ async fn main() {
println!("{config:?}");
let mut transport_config = TransportConfig::default();
transport_config.set_retransmit(config.retransmit);
transport_config.set_broadcast(config.broadcast);
transport_config.set_retransmit(false);
transport_config.set_broadcast(true);
// set up the reticulum transport
let mut transport = Transport::new(transport_config);
// set up destination
let id = PrivateIdentity::new_from_rand(OsRng);
let hb_destination = transport
.add_destination(id, DestinationName::new("transport node", "heartbeat"))
.await;
log::info!("dest ID: {}", hb_destination.lock().await.desc.address_hash);
let transport = Transport::new(transport_config);
// set up interfaces
for iface_config in config.interfaces {
@ -92,28 +70,11 @@ async fn main() {
.await
.spawn(TcpClient::new(cfg.bind_addr), TcpClient::spawn);
}
InterfaceConfig::Udp(cfg) => {
let _ = transport.iface_manager().lock().await.spawn(
UdpInterface::new(cfg.bind_addr, cfg.forward_addr),
UdpInterface::spawn,
);
}
}
}
let mut heartbeat_interval = interval(Duration::from_secs(5));
// run until exit
let _ = tokio::signal::ctrl_c().await;
loop {
tokio::select! {
_ = tokio::signal::ctrl_c() => {
break;
}
_ = heartbeat_interval.tick() => {
log::trace!("send heartbeat");
transport.send_announce(&hb_destination, None).await;
}
}
}
log::info!("exit!");
log::info!("exit");
}