diff --git a/peach-web/src/main.rs b/peach-web/src/main.rs index a054e85..ce2785c 100644 --- a/peach-web/src/main.rs +++ b/peach-web/src/main.rs @@ -29,10 +29,9 @@ pub mod routes; #[cfg(test)] mod tests; pub mod utils; -mod ws; -use std::{env, thread}; -use log::{debug, error, info}; +use log::{info, error}; +use std::process; use rocket::{catchers, routes, Rocket, Build, fs::FileServer}; use rocket_dyn_templates::Template; @@ -47,7 +46,7 @@ use crate::routes::scuttlebutt::*; use crate::routes::settings::admin::*; use crate::routes::settings::dns::*; use crate::routes::settings::network::*; -use crate::ws::*; + pub type BoxError = Box; @@ -140,5 +139,8 @@ async fn main() { // launch rocket info!("Launching Rocket"); - rocket.launch().await; + if let Err(e) = rocket.launch().await { + error!("Error in Rocket application: {}", e); + process::exit(1); + } } diff --git a/peach-web/src/tests.rs b/peach-web/src/tests.rs index 17558c2..0dde736 100644 --- a/peach-web/src/tests.rs +++ b/peach-web/src/tests.rs @@ -3,9 +3,9 @@ use std::io::Read; use rocket::http::{ContentType, Status}; use rocket::local::blocking::Client; -use rocket::serde::json::{json, Json, Value}; -use crate::utils::build_json_response; + + use super::init_rocket; @@ -15,7 +15,7 @@ where T: Into>, { let client = Client::tracked(init_rocket()).unwrap(); - let mut response = client.get(path).dispatch(); + let response = client.get(path).dispatch(); assert_eq!(response.status(), status); let body_data = response.into_bytes(); @@ -40,7 +40,7 @@ fn read_file_content(path: &str) -> Vec { #[test] fn index_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/").dispatch(); + let response = client.get("/").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -55,7 +55,7 @@ fn index_html() { #[test] fn network_card_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/network").dispatch(); + let response = client.get("/network").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -73,7 +73,7 @@ fn network_card_html() { #[test] fn network_list_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/network/wifi").dispatch(); + let response = client.get("/network/wifi").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -95,7 +95,7 @@ fn network_detail_html() { #[test] fn network_add_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/network/wifi/add").dispatch(); + let response = client.get("/network/wifi/add").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -109,7 +109,7 @@ fn network_add_html() { #[test] fn network_add_ssid_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/network/wifi/add?ssid=Home").dispatch(); + let response = client.get("/network/wifi/add?ssid=Home").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -123,7 +123,7 @@ fn network_add_ssid_html() { #[test] fn device_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/device").dispatch(); + let response = client.get("/device").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -136,7 +136,7 @@ fn device_html() { #[test] fn help_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/help").dispatch(); + let response = client.get("/help").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -146,7 +146,7 @@ fn help_html() { #[test] fn login_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/login").dispatch(); + let response = client.get("/login").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -156,7 +156,7 @@ fn login_html() { #[test] fn messages_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/messages").dispatch(); + let response = client.get("/messages").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -166,7 +166,7 @@ fn messages_html() { #[test] fn peers_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/peers").dispatch(); + let response = client.get("/peers").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -176,7 +176,7 @@ fn peers_html() { #[test] fn profile_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/profile").dispatch(); + let response = client.get("/profile").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -186,7 +186,7 @@ fn profile_html() { #[test] fn shutdown_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/shutdown").dispatch(); + let response = client.get("/shutdown").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -196,7 +196,7 @@ fn shutdown_html() { #[test] fn network_usage_html() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client.get("/network/wifi/usage").dispatch(); + let response = client.get("/network/wifi/usage").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.content_type(), Some(ContentType::HTML)); let body = response.into_string().unwrap(); @@ -287,7 +287,7 @@ fn activate_client() { #[test] fn return_ip() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .get("/api/v1/network/ip") .header(ContentType::JSON) .dispatch(); @@ -301,7 +301,7 @@ fn return_ip() { #[test] fn return_rssi() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .get("/api/v1/network/rssi") .header(ContentType::JSON) .dispatch(); @@ -314,7 +314,7 @@ fn return_rssi() { #[test] fn return_ssid() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .get("/api/v1/network/ssid") .header(ContentType::JSON) .dispatch(); @@ -327,7 +327,7 @@ fn return_ssid() { #[test] fn return_state() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .get("/api/v1/network/state") .header(ContentType::JSON) .dispatch(); @@ -342,7 +342,7 @@ fn return_state() { #[test] fn return_status() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .get("/api/v1/network/status") .header(ContentType::JSON) .dispatch(); @@ -355,7 +355,7 @@ fn return_status() { #[test] fn scan_networks() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .get("/api/v1/network/wifi") .header(ContentType::JSON) .dispatch(); @@ -368,7 +368,7 @@ fn scan_networks() { #[test] fn add_wifi() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .post("/api/v1/network/wifi") .header(ContentType::JSON) .body(r#"{ "ssid": "Home", "pass": "Password" }"#) @@ -382,7 +382,7 @@ fn add_wifi() { #[test] fn remove_wifi() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .post("/api/v1/network/wifi/forget") .header(ContentType::JSON) .body(r#"{ "ssid": "Home" }"#) @@ -396,7 +396,7 @@ fn remove_wifi() { #[test] fn new_password() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .post("/api/v1/network/wifi/modify") .header(ContentType::JSON) .body(r#"{ "ssid": "Home", "pass": "Password" }"#) @@ -410,7 +410,7 @@ fn new_password() { #[test] fn ping_pong() { let client = Client::tracked(init_rocket()).expect("valid rocket instance"); - let mut response = client + let response = client .get("/api/v1/ping") .header(ContentType::JSON) .dispatch(); @@ -474,7 +474,7 @@ fn invalid_get_request() { let client = Client::tracked(init_rocket()).unwrap(); // try to get a path that doesn't exist - let mut res = client + let res = client .get("/message/99") .header(ContentType::JSON) .dispatch(); diff --git a/peach-web/src/ws.rs b/peach-web/src/ws.rs deleted file mode 100644 index fb83b89..0000000 --- a/peach-web/src/ws.rs +++ /dev/null @@ -1,65 +0,0 @@ -// NOTE: websockets are not currently in use for PeachCloud but may be in the -// future. - -use std::io; -use std::thread; - -use log::{debug, info}; -use websocket::sync::Server; -use websocket::{Message, OwnedMessage}; - -pub fn websocket_server(address: String) -> io::Result<()> { - // start listening for WebSocket connections - let ws_server = Server::bind(address)?; - - info!("Listening for WebSocket connections."); - for connection in ws_server.filter_map(Result::ok) { - // spawn a new thread for each connection - thread::spawn(move || { - if !connection - .protocols() - .contains(&"rust-websocket".to_string()) - { - connection.reject().unwrap(); - return; - } - - let mut client = connection.use_protocol("rust-websocket").accept().unwrap(); - - let client_ip = client.peer_addr().unwrap(); - - debug!("Websocket connection from {}.", client_ip); - - let msg_text = "Websocket successfully connected.".to_string(); - let message = Message::text(msg_text); - client.send_message(&message).unwrap(); - - let (mut receiver, mut sender) = client.split().unwrap(); - - for message in receiver.incoming_messages() { - let message = message.unwrap(); - - match message { - OwnedMessage::Close(_) => { - debug!("Received close message."); - let message = Message::close(); - sender.send_message(&message).unwrap(); - debug!("Websocket client {} disconnected.", client_ip); - return; - } - OwnedMessage::Ping(data) => { - debug!("Received ping message."); - let message = Message::pong(data); - sender.send_message(&message).unwrap(); - } - _ => { - sender.send_message(&message).unwrap(); - debug!("Received unknown message: {:?}", message); - } - } - } - }); - } - - Ok(()) -}