Extract into const

This commit is contained in:
Andras Schmelczer 2026-09-27 21:36:38 +01:00
commit c7dfac83d6
3 changed files with 18 additions and 12 deletions

View file

@ -27,3 +27,8 @@ pub const DEFAULT_EVENTS_PAGE_SIZE: usize = 64;
pub const MAX_EVENTS_PAGE_BYTES: usize = 1024 * 1024; pub const MAX_EVENTS_PAGE_BYTES: usize = 1024 * 1024;
pub const SUPPORTED_API_VERSION: u32 = 4; pub const SUPPORTED_API_VERSION: u32 = 4;
pub const HISTORY_HEADER: axum::http::HeaderName =
axum::http::HeaderName::from_static("x-vault-link-history");
pub const HISTORY_MISMATCH_HEADER: axum::http::HeaderName =
axum::http::HeaderName::from_static("x-vault-link-history-mismatch");

View file

@ -1,3 +1,4 @@
use crate::consts::{HISTORY_HEADER, HISTORY_MISMATCH_HEADER};
pub mod auth; pub mod auth;
mod device_id_header; mod device_id_header;
mod endpoints; mod endpoints;
@ -48,7 +49,10 @@ pub async fn create_server(config: Config) -> Result<()> {
let app = Router::new() let app = Router::new()
.nest("/", create_authenticated_routes(app_state.clone())) .nest("/", create_authenticated_routes(app_state.clone()))
.route("/", get(endpoints::index::index)) .route("/", get(endpoints::index::index))
.route("/vaults/:vault_id/ping", get(endpoints::ping::ping)) .route(
"/vaults/:vault_id/config",
get(endpoints::get_server_config::get_server_config),
)
.route( .route(
"/vaults/:vault_id/ws", "/vaults/:vault_id/ws",
get(endpoints::websocket::websocket_handler), get(endpoints::websocket::websocket_handler),
@ -65,12 +69,9 @@ pub async fn create_server(config: Config) -> Result<()> {
http::header::CONTENT_TYPE, http::header::CONTENT_TYPE,
http::header::AUTHORIZATION, http::header::AUTHORIZATION,
DEVICE_ID_HEADER_NAME.clone(), DEVICE_ID_HEADER_NAME.clone(),
http::header::HeaderName::from_static("x-vault-link-history"), HISTORY_HEADER,
])
.expose_headers([
http::header::HeaderName::from_static("x-vault-link-history"),
http::header::HeaderName::from_static("x-vault-link-history-mismatch"),
]) ])
.expose_headers([HISTORY_HEADER, HISTORY_MISMATCH_HEADER])
.allow_methods([Method::GET, Method::PUT]), .allow_methods([Method::GET, Method::PUT]),
) )
.layer( .layer(

View file

@ -1,3 +1,4 @@
use crate::consts::{HISTORY_HEADER, HISTORY_MISMATCH_HEADER};
use std::collections::HashMap; use std::collections::HashMap;
use axum::{ use axum::{
@ -27,7 +28,7 @@ pub async fn history_middleware(
// A restore happens while the server is stopped. Validate before executing // A restore happens while the server is stopped. Validate before executing
// any old request, including retries whose numeric parent IDs were reused. // any old request, including retries whose numeric parent IDs were reused.
if let Some(checkpoint) = req.headers().get("x-vault-link-history") { if let Some(checkpoint) = req.headers().get(HISTORY_HEADER) {
let checkpoint = checkpoint let checkpoint = checkpoint
.to_str() .to_str()
.map_err(|error| client_error(error.into()))?; .map_err(|error| client_error(error.into()))?;
@ -38,10 +39,9 @@ pub async fn history_middleware(
.map_err(server_error)? .map_err(server_error)?
{ {
let mut response = (StatusCode::CONFLICT, "Server history changed").into_response(); let mut response = (StatusCode::CONFLICT, "Server history changed").into_response();
response.headers_mut().insert( response
"x-vault-link-history-mismatch", .headers_mut()
HeaderValue::from_static("1"), .insert(HISTORY_MISMATCH_HEADER, HeaderValue::from_static("1"));
);
return Ok(response); return Ok(response);
} }
} }
@ -54,7 +54,7 @@ pub async fn history_middleware(
.await .await
.map_err(server_error)?; .map_err(server_error)?;
response.headers_mut().insert( response.headers_mut().insert(
"x-vault-link-history", HISTORY_HEADER,
HeaderValue::from_str(&checkpoint).map_err(|error| server_error(error.into()))?, HeaderValue::from_str(&checkpoint).map_err(|error| server_error(error.into()))?,
); );
} }