From 4ac91b4fa9028f55e6fc728c89d879e1ec85eb3e Mon Sep 17 00:00:00 2001 From: Arun Kulshreshtha Date: Wed, 12 Feb 2020 11:21:32 -0800 Subject: [PATCH] gotham_ext: lfs_server: move ServerIdentityMiddleware from lfs_server to gotham_ext Summary: Move the generally-useful ServerIdentityMiddleware into gotham_ext so we can use it in the EdenAPI server. Reviewed By: xavierd Differential Revision: D19845282 fbshipit-source-id: 3a01b15dc64cee99cefafcdac229c0b70a4db683 --- eden/mononoke/gotham_ext/src/middleware.rs | 7 ++++++- .../src/middleware/server_identity.rs | 9 +++++---- eden/mononoke/lfs_server/src/main.rs | 5 ++++- eden/mononoke/lfs_server/src/middleware/mod.rs | 4 +--- 4 files changed, 16 insertions(+), 9 deletions(-) rename eden/mononoke/{lfs_server => gotham_ext}/src/middleware/server_identity.rs (95%) diff --git a/eden/mononoke/gotham_ext/src/middleware.rs b/eden/mononoke/gotham_ext/src/middleware.rs index 34e7eafbdf..ad697c5ea7 100644 --- a/eden/mononoke/gotham_ext/src/middleware.rs +++ b/eden/mononoke/gotham_ext/src/middleware.rs @@ -5,9 +5,14 @@ * GNU General Public License version 2. */ +use std::panic::RefUnwindSafe; + use gotham::state::State; use hyper::{Body, Response}; -use std::panic::RefUnwindSafe; + +pub mod server_identity; + +pub use server_identity::ServerIdentityMiddleware; pub trait Middleware: 'static + RefUnwindSafe + Send + Sync { fn inbound(&self, _state: &mut State) { diff --git a/eden/mononoke/lfs_server/src/middleware/server_identity.rs b/eden/mononoke/gotham_ext/src/middleware/server_identity.rs similarity index 95% rename from eden/mononoke/lfs_server/src/middleware/server_identity.rs rename to eden/mononoke/gotham_ext/src/middleware/server_identity.rs index 8165a7a0c4..da07669d58 100644 --- a/eden/mononoke/lfs_server/src/middleware/server_identity.rs +++ b/eden/mononoke/gotham_ext/src/middleware/server_identity.rs @@ -5,13 +5,14 @@ * GNU General Public License version 2. */ +use std::collections::HashMap; +use std::env; + use anyhow::Error; use gotham::helpers::http::header::X_REQUEST_ID; use gotham::state::{request_id, State}; use hyper::header::HeaderValue; use hyper::{Body, Response}; -use std::collections::HashMap; -use std::env; use super::Middleware; @@ -20,10 +21,10 @@ pub struct ServerIdentityMiddleware { } impl ServerIdentityMiddleware { - pub fn new() -> Self { + pub fn new(server_name: HeaderValue) -> Self { let mut headers = HashMap::new(); - headers.insert("Server", HeaderValue::from_static("mononoke-lfs")); + headers.insert("Server", server_name); // NOTE: We ignore errors here — those will happen if environment variables are missing, // which is fine. diff --git a/eden/mononoke/lfs_server/src/main.rs b/eden/mononoke/lfs_server/src/main.rs index 0ce8fdd9c1..5648a57379 100644 --- a/eden/mononoke/lfs_server/src/main.rs +++ b/eden/mononoke/lfs_server/src/main.rs @@ -26,6 +26,7 @@ use futures_preview::{ use futures_util::try_join; use gotham::{bind_server, bind_server_with_pre_state}; use gotham_ext::handler::MononokeHttpHandler; +use hyper::header::HeaderValue; use slog::{error, info, warn}; use std::collections::HashMap; use std::net::ToSocketAddrs; @@ -347,7 +348,9 @@ fn main(fb: FacebookInit) -> Result<(), Error> { )) .add(LoadMiddleware::new()) .add(log_middleware) - .add(ServerIdentityMiddleware::new()) + .add(ServerIdentityMiddleware::new(HeaderValue::from_static( + "mononoke-lfs", + ))) .add(ScubaMiddleware::new(scuba_logger)) .add(OdsMiddleware::new()) .add(TimerMiddleware::new()) diff --git a/eden/mononoke/lfs_server/src/middleware/mod.rs b/eden/mononoke/lfs_server/src/middleware/mod.rs index cb30002192..819f8b1056 100644 --- a/eden/mononoke/lfs_server/src/middleware/mod.rs +++ b/eden/mononoke/lfs_server/src/middleware/mod.rs @@ -11,11 +11,10 @@ mod log; mod ods; mod request_context; mod scuba; -mod server_identity; mod timer; mod tls_session_data; -pub use gotham_ext::middleware::Middleware; +pub use gotham_ext::middleware::{Middleware, ServerIdentityMiddleware}; pub use self::client_identity::{ClientIdentity, ClientIdentityMiddleware}; pub use self::load::{LoadMiddleware, RequestLoad}; @@ -23,6 +22,5 @@ pub use self::log::LogMiddleware; pub use self::ods::OdsMiddleware; pub use self::request_context::{LfsMethod, RequestContext, RequestContextMiddleware}; pub use self::scuba::{ScubaKey, ScubaMiddleware, ScubaMiddlewareState}; -pub use self::server_identity::ServerIdentityMiddleware; pub use self::timer::TimerMiddleware; pub use self::tls_session_data::TlsSessionDataMiddleware;