use chaussette::{start, Config};
use clap::Parser;
use url::Url;
#[derive(Debug, Parser)]
pub struct Opt {
#[arg(short, long)]
pub listen_addr: String,
#[arg(short, long, default_value_t = Url::parse("https://masque-relay.cloudflare.com").unwrap())]
pub proxy: Url,
#[arg(short, long, default_value_t = String::from("xn76cvs0-JP"))]
pub geohash: String,
#[arg(long = "timeout")]
pub request_timeout: Option<u64>,
#[arg(env)]
pub masque_preshared_key: Option<String>,
#[arg(long)]
pub proxy_ca: Option<String>,
#[arg(env)]
pub client_cert: Option<String>,
#[arg(env)]
pub client_key: Option<String>,
}
#[tokio::main]
async fn main() -> anyhow::Result<()> {
tracing_subscriber::fmt::init();
let opt = Opt::parse();
let config = Config {
proxy: opt.proxy,
geohash: opt.geohash,
request_timeout: opt.request_timeout,
masque_preshared_key: opt.masque_preshared_key,
proxy_ca: opt.proxy_ca,
client_cert: opt.client_cert,
client_key: opt.client_key,
};
start(config, &opt.listen_addr).await?.await
}