summaryrefslogtreecommitdiffhomepage
path: root/tunnel-obfuscation/src/main.rs
blob: e91ad0d9fac4eb4027df6400636ef70a360af900 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use std::{env::args, net::SocketAddr};
use tunnel_obfuscation::{Obfuscator, Settings, create_obfuscator, udp2tcp};

#[tokio::main]
async fn main() {
    if args().len() != 2 {
        println!("Missing arguments");
    }

    let obfuscator = instantiate_requested(&args().next_back().unwrap()).await;

    println!("endpoint() returns {:?}", obfuscator.endpoint());

    if let Err(err) = obfuscator.run().await {
        println!("obfuscator.run() failed: {err:?}");
    }
}

async fn instantiate_requested(obfuscator_type: &str) -> Box<dyn Obfuscator> {
    match obfuscator_type {
        "udp2tcp" => {
            let settings = udp2tcp::Settings {
                peer: SocketAddr::new("127.0.0.1".parse().unwrap(), 3030),
                #[cfg(target_os = "linux")]
                fwmark: Some(1337),
            };

            create_obfuscator(&Settings::Udp2Tcp(settings))
                .await
                .expect("Creating obfuscator failed")
        }
        _ => {
            unimplemented!()
        }
    }
}