diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-24 14:48:12 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-24 14:48:12 +0200 |
| commit | 5d6b5049c2a34a3f8abe725d4a871ba84a0dd714 (patch) | |
| tree | 57cb03bf59b3358a96742f455d38c21f4f645396 /src/bin/server/main.rs | |
| parent | stable and working, both platforms (diff) | |
| download | zagan-bet-5d6b5049c2a34a3f8abe725d4a871ba84a0dd714.tar.gz zagan-bet-5d6b5049c2a34a3f8abe725d4a871ba84a0dd714.zip | |
TLS transport and games framework on client and server
Diffstat (limited to 'src/bin/server/main.rs')
| -rw-r--r-- | src/bin/server/main.rs | 34 |
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 @@ | |||
| 1 | mod args; | 1 | mod args; |
| 2 | mod handler; | ||
| 3 | mod database; | 2 | mod database; |
| 3 | mod games; | ||
| 4 | mod handler; | ||
| 5 | mod tls; | ||
| 4 | 6 | ||
| 5 | use std::net::TcpListener; | 7 | use std::net::TcpListener; |
| 8 | use std::sync::Arc; | ||
| 6 | use std::thread; | 9 | use std::thread; |
| 7 | 10 | ||
| 8 | fn main() { | 11 | fn 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 | } |
