50 lines
1.2 KiB
Rust
50 lines
1.2 KiB
Rust
use clap::{Parser, Subcommand};
|
|
|
|
use tcp_over_http::tcp_relay_client::client_config::ClientConfig;
|
|
use tcp_over_http::tcp_relay_server::server_config::ServerConfig;
|
|
|
|
#[derive(Parser, Debug)]
|
|
#[clap(
|
|
author,
|
|
version,
|
|
about,
|
|
long_about = "Encapsulate TCP sockets inside HTTP WebSockets\nSource code: https://gitea.communiquons.org/pierre/tcp-over-http"
|
|
)]
|
|
struct CliArgs {
|
|
#[clap(subcommand)]
|
|
command: SubCommands,
|
|
}
|
|
|
|
#[derive(Subcommand, Debug)]
|
|
enum SubCommands {
|
|
/// Run as server
|
|
Server(ServerConfig),
|
|
|
|
/// Run as client
|
|
Client(ClientConfig),
|
|
}
|
|
|
|
#[actix_web::main]
|
|
async fn main() -> std::io::Result<()> {
|
|
env_logger::init_from_env(env_logger::Env::new().default_filter_or("info"));
|
|
|
|
let args: CliArgs = CliArgs::parse();
|
|
|
|
// Dispatch the request to the appropriate part of the program
|
|
match args.command {
|
|
SubCommands::Server(c) => tcp_over_http::tcp_relay_server::run_app(c).await,
|
|
SubCommands::Client(c) => tcp_over_http::tcp_relay_client::run_app(c).await,
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod test {
|
|
use crate::CliArgs;
|
|
|
|
#[test]
|
|
fn verify_cli() {
|
|
use clap::CommandFactory;
|
|
CliArgs::command().debug_assert()
|
|
}
|
|
}
|