summaryrefslogtreecommitdiffstats
path: root/src/bin/server/main.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/bin/server/main.rs34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/bin/server/main.rs b/src/bin/server/main.rs
index 7693069..4328559 100644
--- a/src/bin/server/main.rs
+++ b/src/bin/server/main.rs
@@ -1,8 +1,11 @@
1mod args; 1mod args;
2mod handler;
3mod database; 2mod database;
3mod games;
4mod handler;
5mod tls;
4 6
5use std::net::TcpListener; 7use std::net::TcpListener;
8use std::sync::Arc;
6use std::thread; 9use std::thread;
7 10
8fn main() { 11fn main() {
@@ -14,11 +17,34 @@ fn main() {
14 std::process::exit(1); 17 std::process::exit(1);
15 } 18 }
16 }; 19 };
17 println!("Server listening on {}", listener.local_addr().unwrap()); 20
21 let tls = match tls::TlsServer::new("identity.p12", "key.pem", args.unsafe_mode) {
22 Ok(t) => Arc::new(t),
23 Err(e) => {
24 eprintln!("Failed to initialize TLS: {}", e);
25 std::process::exit(1);
26 }
27 };
28
29 println!(
30 "Server listening on {} (TLS enabled){}",
31 listener.local_addr().unwrap(),
32 if args.unsafe_mode {
33 " [UNSAFE MODE]"
34 } else {
35 ""
36 }
37 );
18 for stream in listener.incoming() { 38 for stream in listener.incoming() {
19 let stream = stream.unwrap(); 39 let stream = stream.unwrap();
20 thread::spawn(move || { 40 let tls = tls.clone();
21 handler::handle_client(stream); 41 thread::spawn(move || match tls.accept(stream) {
42 Ok(tls_stream) => {
43 handler::handle_client_tls(tls_stream);
44 }
45 Err(e) => {
46 eprintln!("TLS handshake failed: {}", e);
47 }
22 }); 48 });
23 } 49 }
24} 50}