Browse Source
Merge branch 'stefan0xC-catch-404-errors'
pull/2772/head
Daniel García
2 years ago
No known key found for this signature in database
GPG Key ID: FC8A7D14C3CD543A
4 changed files with
34 additions and
1 deletions
-
src/api/core/mod.rs
-
src/api/mod.rs
-
src/api/web.rs
-
src/main.rs
|
|
@ -38,6 +38,7 @@ pub fn routes() -> Vec<Route> { |
|
|
|
// Move this somewhere else
|
|
|
|
//
|
|
|
|
use rocket::serde::json::Json; |
|
|
|
use rocket::Catcher; |
|
|
|
use rocket::Route; |
|
|
|
use serde_json::Value; |
|
|
|
|
|
|
@ -221,3 +222,18 @@ fn config() -> Json<Value> { |
|
|
|
}, |
|
|
|
})) |
|
|
|
} |
|
|
|
|
|
|
|
pub fn catchers() -> Vec<Catcher> { |
|
|
|
catchers![api_not_found] |
|
|
|
} |
|
|
|
|
|
|
|
#[catch(404)] |
|
|
|
fn api_not_found() -> Json<Value> { |
|
|
|
Json(json!({ |
|
|
|
"error": { |
|
|
|
"code": 404, |
|
|
|
"reason": "Not Found", |
|
|
|
"description": "The requested resource could not be found." |
|
|
|
} |
|
|
|
})) |
|
|
|
} |
|
|
|
|
|
@ -10,6 +10,7 @@ use serde_json::Value; |
|
|
|
|
|
|
|
pub use crate::api::{ |
|
|
|
admin::routes as admin_routes, |
|
|
|
core::catchers as core_catchers, |
|
|
|
core::purge_sends, |
|
|
|
core::purge_trashed_ciphers, |
|
|
|
core::routes as core_routes, |
|
|
@ -19,6 +20,7 @@ pub use crate::api::{ |
|
|
|
identity::routes as identity_routes, |
|
|
|
notifications::routes as notifications_routes, |
|
|
|
notifications::{start_notification_server, Notify, UpdateType}, |
|
|
|
web::catchers as web_catchers, |
|
|
|
web::routes as web_routes, |
|
|
|
}; |
|
|
|
use crate::util; |
|
|
|
|
|
@ -1,7 +1,7 @@ |
|
|
|
use std::path::{Path, PathBuf}; |
|
|
|
|
|
|
|
use rocket::serde::json::Json; |
|
|
|
use rocket::{fs::NamedFile, http::ContentType, Route}; |
|
|
|
use rocket::{fs::NamedFile, http::ContentType, Catcher, Route}; |
|
|
|
use serde_json::Value; |
|
|
|
|
|
|
|
use crate::{ |
|
|
@ -21,6 +21,19 @@ pub fn routes() -> Vec<Route> { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
pub fn catchers() -> Vec<Catcher> { |
|
|
|
if CONFIG.web_vault_enabled() { |
|
|
|
catchers![not_found] |
|
|
|
} else { |
|
|
|
catchers![] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#[catch(404)] |
|
|
|
async fn not_found() -> Cached<Option<NamedFile>> { |
|
|
|
Cached::short(NamedFile::open(Path::new(&CONFIG.web_vault_folder()).join("404.html")).await.ok(), false) |
|
|
|
} |
|
|
|
|
|
|
|
#[get("/")] |
|
|
|
async fn web_index() -> Cached<Option<NamedFile>> { |
|
|
|
Cached::short(NamedFile::open(Path::new(&CONFIG.web_vault_folder()).join("index.html")).await.ok(), false) |
|
|
|
|
|
@ -425,6 +425,8 @@ async fn launch_rocket(pool: db::DbPool, extra_debug: bool) -> Result<(), Error> |
|
|
|
.mount([basepath, "/identity"].concat(), api::identity_routes()) |
|
|
|
.mount([basepath, "/icons"].concat(), api::icons_routes()) |
|
|
|
.mount([basepath, "/notifications"].concat(), api::notifications_routes()) |
|
|
|
.register([basepath, "/"].concat(), api::web_catchers()) |
|
|
|
.register([basepath, "/api"].concat(), api::core_catchers()) |
|
|
|
.manage(pool) |
|
|
|
.manage(api::start_notification_server()) |
|
|
|
.attach(util::AppHeaders()) |
|
|
|