diff --git a/peach-web/src/main.rs b/peach-web/src/main.rs index 351ccff..f5cb47b 100644 --- a/peach-web/src/main.rs +++ b/peach-web/src/main.rs @@ -15,7 +15,7 @@ //mod context; mod config; pub mod error; -//mod router; +mod router; mod routes; //#[cfg(test)] //mod tests; @@ -30,11 +30,9 @@ use log::info; //use peach_lib::{config_manager, config_manager::YAML_PATH as PEACH_CONFIG}; //use rocket::{fairing::AdHoc, serde::Deserialize, Build, Rocket}; -use rouille::{router, Response}; - // crate-local dependencies use config::Config; -use utils::{flash::FlashResponse, theme::Theme}; +use utils::theme::Theme; pub type BoxError = Box; @@ -123,101 +121,7 @@ fn main() { return response; } - router!(request, - (GET) (/) => { - Response::html(routes::home::build_template()) - }, - - (GET) (/auth/change) => { - // build the html template - Response::html(routes::authentication::change::build_template(request)) - // reset the flash msg cookies in the response object - .reset_flash() - }, - - (POST) (/auth/change) => { - routes::authentication::change::handle_form(request) - }, - - (GET) (/auth/login) => { - Response::html(routes::authentication::login::build_template(request)) - .reset_flash() - }, - - (POST) (/auth/login) => { - routes::authentication::login::handle_form(request) - }, - - (GET) (/auth/logout) => { - routes::authentication::logout::deauthenticate() - }, - - (GET) (/auth/reset) => { - Response::html(routes::authentication::reset::build_template(request)) - .reset_flash() - }, - - (POST) (/auth/reset) => { - routes::authentication::reset::handle_form(request) - }, - - (GET) (/guide) => { - Response::html(routes::guide::build_template()) - }, - - (GET) (/settings) => { - Response::html(routes::settings::menu::build_template()) - }, - - (GET) (/settings/scuttlebutt) => { - Response::html(routes::settings::scuttlebutt::menu::build_template(request)) - .reset_flash() - }, - - (GET) (/settings/scuttlebutt/restart) => { - routes::settings::scuttlebutt::restart::restart_sbot() - }, - - (GET) (/settings/scuttlebutt/start) => { - routes::settings::scuttlebutt::start::start_sbot() - }, - - (GET) (/settings/scuttlebutt/stop) => { - routes::settings::scuttlebutt::stop::stop_sbot() - }, - - (GET) (/settings/scuttlebutt/configure) => { - Response::html(routes::settings::scuttlebutt::configure::build_template()) - }, - - (GET) (/settings/admin) => { - Response::html(routes::settings::admin::menu::build_template()) - }, - - (POST) (/settings/admin/add) => { - routes::settings::admin::add::handle_form(request) - }, - - (GET) (/settings/admin/configure) => { - Response::html(routes::settings::admin::configure::build_template(request)) - .reset_flash() - }, - - (POST) (/settings/admin/delete) => { - routes::settings::admin::delete::handle_form(request) - }, - - (GET) (/scuttlebutt/peers) => { - Response::html(routes::scuttlebutt::peers::build_template()) - }, - - (GET) (/status/scuttlebutt) => { - Response::html(routes::status::scuttlebutt::build_template()) - }, - - // The code block is called if none of the other blocks matches the request. - // We return an empty response with a 404 status code. - _ => Response::empty_404() - ) + // TODO: mount the blobstore fileserver (see old code in src/router.rs) + router::mount_peachpub_routes(request) }); } diff --git a/peach-web/src/router.rs b/peach-web/src/router.rs index 0872af0..bc35f5a 100644 --- a/peach-web/src/router.rs +++ b/peach-web/src/router.rs @@ -1,3 +1,114 @@ +use rouille::{router, Request, Response}; + +use crate::{routes, utils::flash::FlashResponse}; + +/// Define the PeachPub router. +/// +/// Takes an incoming request and matches on the defined routes, +/// returning either a template or a redirect. +/// +/// Excludes settings and status routes related to networking and the device +/// (memory, hard disk, CPU etc.). +pub fn mount_peachpub_routes(request: &Request) -> Response { + router!(request, + (GET) (/) => { + Response::html(routes::home::build_template()) + }, + + (GET) (/auth/change) => { + // build the html template + Response::html(routes::authentication::change::build_template(request)) + // reset the flash msg cookies in the response object + .reset_flash() + }, + + (POST) (/auth/change) => { + routes::authentication::change::handle_form(request) + }, + + (GET) (/auth/login) => { + Response::html(routes::authentication::login::build_template(request)) + .reset_flash() + }, + + (POST) (/auth/login) => { + routes::authentication::login::handle_form(request) + }, + + (GET) (/auth/logout) => { + routes::authentication::logout::deauthenticate() + }, + + (GET) (/auth/reset) => { + Response::html(routes::authentication::reset::build_template(request)) + .reset_flash() + }, + + (POST) (/auth/reset) => { + routes::authentication::reset::handle_form(request) + }, + + (GET) (/guide) => { + Response::html(routes::guide::build_template()) + }, + + (GET) (/settings) => { + Response::html(routes::settings::menu::build_template()) + }, + + (GET) (/settings/scuttlebutt) => { + Response::html(routes::settings::scuttlebutt::menu::build_template(request)) + .reset_flash() + }, + + (GET) (/settings/scuttlebutt/restart) => { + routes::settings::scuttlebutt::restart::restart_sbot() + }, + + (GET) (/settings/scuttlebutt/start) => { + routes::settings::scuttlebutt::start::start_sbot() + }, + + (GET) (/settings/scuttlebutt/stop) => { + routes::settings::scuttlebutt::stop::stop_sbot() + }, + + (GET) (/settings/scuttlebutt/configure) => { + Response::html(routes::settings::scuttlebutt::configure::build_template()) + }, + + (GET) (/settings/admin) => { + Response::html(routes::settings::admin::menu::build_template()) + }, + + (POST) (/settings/admin/add) => { + routes::settings::admin::add::handle_form(request) + }, + + (GET) (/settings/admin/configure) => { + Response::html(routes::settings::admin::configure::build_template(request)) + .reset_flash() + }, + + (POST) (/settings/admin/delete) => { + routes::settings::admin::delete::handle_form(request) + }, + + (GET) (/scuttlebutt/peers) => { + Response::html(routes::scuttlebutt::peers::build_template()) + }, + + (GET) (/status/scuttlebutt) => { + Response::html(routes::status::scuttlebutt::build_template()) + }, + + // The code block is called if none of the other blocks matches the request. + // We return an empty response with a 404 status code. + _ => Response::empty_404() + ) +} + +/* use rocket::{catchers, fs::FileServer, routes, Build, Rocket}; use rocket_dyn_templates::Template; @@ -123,3 +234,4 @@ pub fn mount_peachcloud_routes(rocket: Rocket) -> Rocket { ) .mount("/status", routes![device_status, network_status]) } +*/