mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-02-08 12:20:10 +00:00
38 lines
1.0 KiB
Rust
38 lines
1.0 KiB
Rust
extern crate native_tls;
|
|
|
|
use native_tls::{Identity, TlsAcceptor, TlsStream};
|
|
use std::fs::File;
|
|
use std::io::Read;
|
|
use std::net::{TcpListener, TcpStream};
|
|
use std::sync::Arc;
|
|
use std::thread;
|
|
|
|
fn main() {
|
|
let mut file = File::open("identity.pfx").unwrap();
|
|
let mut pkcs12 = vec![];
|
|
file.read_to_end(&mut pkcs12).unwrap();
|
|
let pkcs12 = Identity::from_pkcs12(&pkcs12, "hunter2").unwrap();
|
|
|
|
let acceptor = TlsAcceptor::new(pkcs12).unwrap();
|
|
let acceptor = Arc::new(acceptor);
|
|
|
|
let listener = TcpListener::bind("0.0.0.0:8443").unwrap();
|
|
|
|
fn handle_client(_stream: TlsStream<TcpStream>) {
|
|
// ...
|
|
}
|
|
|
|
for stream in listener.incoming() {
|
|
match stream {
|
|
Ok(stream) => {
|
|
let acceptor = acceptor.clone();
|
|
thread::spawn(move || {
|
|
let stream = acceptor.accept(stream).unwrap();
|
|
handle_client(stream);
|
|
});
|
|
}
|
|
Err(_e) => { /* connection failed */ }
|
|
}
|
|
}
|
|
}
|