Menu
Public repository / ef1dedb723e55f2ba5cf19e1d9b20b07f4a2c591
AkurAI-VPN / crates/akurai-relay/src/main.rs
Latest change cc029b11b1de07576e9017b960da31d9143666d4 - feat(dataplane): working encrypted overlay mesh (akurai-sys TUN + node pump + relay) by Claude Code
//! `akurai-relay` — the AkurAI VPN relay fallback.
//!
//! When two nodes cannot establish a direct path, their traffic is relayed
//! through `vpn.olibuijr.com`. **The relay sees only ciphertext** — it forwards
//! opaque, end-to-end-encrypted packets between peers and never possesses
//! payload keys. In 0.0.1 the forward loop is a stub. Argument parsing is
//! hand-rolled to keep the zero-dependency promise.
mod forward;
use std::process::ExitCode;
const NAME: &str = "akurai-relay";
const VERSION: &str = env!("CARGO_PKG_VERSION");
fn main() -> ExitCode {
let args: Vec<String> = std::env::args().skip(1).collect();
match run(&args) {
Ok(()) => ExitCode::SUCCESS,
Err(msg) => {
eprintln!("error: {msg}");
ExitCode::FAILURE
}
}
}
fn run(args: &[String]) -> Result<(), String> {
match args.first().map(String::as_str) {
Some("version" | "--version" | "-V") => {
println!("{NAME} {VERSION}");
Ok(())
}
Some("serve") => forward::run().map_err(|e| e.to_string()),
Some("help" | "--help" | "-h") | None => {
print_usage();
Ok(())
}
Some(other) => {
eprintln!("unknown command: {other}\n");
print_usage();
Err("unknown command".to_string())
}
}
}
fn print_usage() {
println!("{NAME} {VERSION} — AkurAI VPN relay (ciphertext-only fallback)");
println!();
println!("USAGE:");
println!(" {NAME} <command>");
println!();
println!("COMMANDS:");
println!(" serve Start the ciphertext-only forward loop on RELAY_PORT (default 51820)");
println!(" version Print version and exit");
println!(" help Show this help");
}