From 36df226f113151fe3c18831a082fea64ba8a0c03 Mon Sep 17 00:00:00 2001 From: natrixaeria Date: Sun, 19 May 2019 18:25:29 +0200 Subject: Validate tokens successfully --- game_server/src/backend_connection.rs | 18 +++++++++++++++--- game_server/src/server.rs | 9 +++++++-- game_server/src/ws_test.html | 3 ++- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/game_server/src/backend_connection.rs b/game_server/src/backend_connection.rs index fa41791..4a12439 100644 --- a/game_server/src/backend_connection.rs +++ b/game_server/src/backend_connection.rs @@ -15,6 +15,11 @@ pub enum BackendError { RequestError(ReqError), InvalidTokenFormat, InvalidToken, + BadResponse(Response), +} + +struct TokenResponseStruct { + } pub type TokenValidity = Result<(), BackendError>; @@ -61,8 +66,15 @@ impl BackendConnection { pub fn validate_token(&self, token: &Token) -> TokenValidity { let location = format!("/api/lobby/tokens/{}", token); self.request(&location).map_err(|err| BackendError::UrlError(err))?; - let response = self.get_response(); - println!("backend response: {:?}", response); - Ok(()) + let mut response = self.get_response().map_err(|err| BackendError::RequestError(err))?; + if response.status().is_success() { + Ok(()) + } else if response.status() == reqwest::StatusCode::NOT_FOUND { + Err(BackendError::InvalidToken) + } else if response.status().is_client_error() { + Err(BackendError::InvalidTokenFormat) + } else { + Err(BackendError::BadResponse(response)) + } } } diff --git a/game_server/src/server.rs b/game_server/src/server.rs index a4b1ed5..79cd322 100644 --- a/game_server/src/server.rs +++ b/game_server/src/server.rs @@ -55,6 +55,10 @@ impl GameClient { None } } + + fn host_name(&self) -> SocketAddr { + self.addr + } } type ClientConnection = Result; @@ -90,12 +94,13 @@ impl GameServer { std::thread::spawn(move || { let token = client.require_token(); if let Some(token) = token { - println!("Token: {}", token); let locked_backend = backend.lock().unwrap(); let result = locked_backend.validate_token(&token); if let Err(err) = result { - warn!("token {} is invalid: '{:?}'", token, err); + warn!("client's token {} is not valid: '{:?}'", token, err); } else { + debug!("client validation was successfull"); + debug!("add client: ({}, {})", token, client.host_name()); clients.lock().unwrap().insert(token, client); } } else { diff --git a/game_server/src/ws_test.html b/game_server/src/ws_test.html index ea259b7..f802327 100644 --- a/game_server/src/ws_test.html +++ b/game_server/src/ws_test.html @@ -26,7 +26,8 @@ function test_connection() { ws.addEventListener('open', function (event) { add_text('connection established'); toggle_connected(true); - ws.send('1230123'); + // send token + ws.send('42'); }); ws.addEventListener('error', function (event) { add_text('ws error occured: "' + event + '"'); -- cgit v1.2.3-54-g00ecf