use rocket::{catchers, fs::FileServer, routes, Build, Rocket}; use rocket_dyn_templates::Template; use crate::{ routes::{ authentication::*, catchers::*, index::*, scuttlebutt::*, settings::{admin::*, dns::*, menu::*, network::*, scuttlebutt::*, theme::*}, status::{device::*, network::*, scuttlebutt::*}, }, utils, }; /// Create a Rocket instance and mount PeachPub routes, fileserver and /// catchers. This gives us everything we need to run PeachPub and excludes /// settings and status routes related to networking and the device (memory, /// hard disk, CPU etc.). pub fn mount_peachpub_routes(rocket: Rocket) -> Rocket { // set the `.ssb-go` path in order to mount the blob fileserver let ssb_path = utils::get_go_ssb_path().expect("define ssb-go dir path"); let blobstore = format!("{}/blobs/sha256", ssb_path); rocket .mount( "/", routes![ help, home, login, login_post, logout, settings_menu, set_theme, ], ) .mount( "/settings/admin", routes![ admin_menu, configure_admin, add_admin_post, delete_admin_post, change_password, change_password_post, reset_password, reset_password_post, forgot_password_page, send_password_reset_post, ], ) .mount( "/settings/scuttlebutt", routes![ ssb_settings_menu, configure_sbot, configure_sbot_default, configure_sbot_post, restart_sbot, start_sbot, stop_sbot ], ) .mount( "/scuttlebutt", routes![ invites, create_invite, peers, search, search_post, friends, follows, blocks, profile, update_profile, update_profile_post, private, private_post, follow, unfollow, block, unblock, publish, ], ) .mount("/status", routes![scuttlebutt_status]) .mount("/", FileServer::from("static")) .mount("/blob", FileServer::from(blobstore).rank(-1)) .register("/", catchers![not_found, internal_error, forbidden]) .attach(Template::fairing()) } /// Create a Rocket instance with PeachPub routes, fileserver and catchers by /// calling `mount_peachpub_routes()` and then mount all additional routes /// required to run a complete PeachCloud build. pub fn mount_peachcloud_routes(rocket: Rocket) -> Rocket { mount_peachpub_routes(rocket) .mount("/", routes![reboot_cmd, shutdown_cmd, power_menu,]) .mount( "/settings/network", routes![ add_credentials, connect_wifi, configure_dns, configure_dns_post, disconnect_wifi, deploy_ap, deploy_client, forget_wifi, network_home, add_ssid, add_wifi, network_detail, wifi_list, wifi_password, wifi_set_password, wifi_usage, wifi_usage_alerts, wifi_usage_reset, ], ) .mount("/status", routes![device_status, network_status]) }