From beeda143f016e8c518a8125f1cdd4395f6731f4b Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Tue, 14 Sep 2021 12:56:40 +0200 Subject: [PATCH 1/4] [http server]: export acl + kill cors_max_age --- http-server/src/access_control/cors.rs | 2 +- http-server/src/access_control/hosts.rs | 2 +- http-server/src/access_control/mod.rs | 15 ++------------- http-server/src/lib.rs | 3 ++- 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/http-server/src/access_control/cors.rs b/http-server/src/access_control/cors.rs index 2e93cec3d4..4340a7016e 100644 --- a/http-server/src/access_control/cors.rs +++ b/http-server/src/access_control/cors.rs @@ -161,7 +161,7 @@ impl> From for AccessControlAllowOrigin { /// Headers allowed to access #[derive(Debug, Clone, PartialEq)] -pub(crate) enum AccessControlAllowHeaders { +pub enum AccessControlAllowHeaders { /// Specific headers Only(Vec), /// Any header diff --git a/http-server/src/access_control/hosts.rs b/http-server/src/access_control/hosts.rs index 8f54ba9663..205a43b1ac 100644 --- a/http-server/src/access_control/hosts.rs +++ b/http-server/src/access_control/hosts.rs @@ -141,7 +141,7 @@ impl std::ops::Deref for Host { /// Specifies if domains should be validated. #[derive(Clone, Debug, PartialEq, Eq)] -pub(crate) enum DomainsValidation { +pub enum DomainsValidation { /// Allow only domains on the list. AllowOnly(Vec), /// Disable domains validation completely. diff --git a/http-server/src/access_control/mod.rs b/http-server/src/access_control/mod.rs index fea068405c..7a9a7277a8 100644 --- a/http-server/src/access_control/mod.rs +++ b/http-server/src/access_control/mod.rs @@ -26,13 +26,13 @@ //! Access control based on HTTP headers -mod cors; +pub(crate) mod cors; pub(crate) mod hosts; mod matcher; -pub(crate) use cors::{AccessControlAllowHeaders, AccessControlAllowOrigin}; use hosts::{AllowHosts, Host}; +use cors::{AccessControlAllowHeaders, AccessControlAllowOrigin}; use hyper::header; use jsonrpsee_utils::http_helpers; @@ -41,7 +41,6 @@ use jsonrpsee_utils::http_helpers; pub struct AccessControl { allow_hosts: AllowHosts, cors_allow_origin: Option>, - cors_max_age: Option, cors_allow_headers: AccessControlAllowHeaders, continue_on_invalid_cors: bool, } @@ -92,7 +91,6 @@ impl Default for AccessControl { Self { allow_hosts: AllowHosts::Any, cors_allow_origin: None, - cors_max_age: None, cors_allow_headers: AccessControlAllowHeaders::Any, continue_on_invalid_cors: false, } @@ -104,7 +102,6 @@ impl Default for AccessControl { pub struct AccessControlBuilder { allow_hosts: AllowHosts, cors_allow_origin: Option>, - cors_max_age: Option, cors_allow_headers: AccessControlAllowHeaders, continue_on_invalid_cors: bool, } @@ -114,7 +111,6 @@ impl Default for AccessControlBuilder { Self { allow_hosts: AllowHosts::Any, cors_allow_origin: None, - cors_max_age: None, cors_allow_headers: AccessControlAllowHeaders::Any, continue_on_invalid_cors: false, } @@ -153,12 +149,6 @@ impl AccessControlBuilder { self } - /// Configure CORS max age. - pub fn cors_max_age(mut self, max_age: u32) -> Self { - self.cors_max_age = Some(max_age); - self - } - /// Configure which CORS header that is allowed. pub fn cors_allow_header(mut self, header: String) -> Self { let allow_headers = match self.cors_allow_headers { @@ -183,7 +173,6 @@ impl AccessControlBuilder { AccessControl { allow_hosts: self.allow_hosts, cors_allow_origin: self.cors_allow_origin, - cors_max_age: self.cors_max_age, cors_allow_headers: self.cors_allow_headers, continue_on_invalid_cors: self.continue_on_invalid_cors, } diff --git a/http-server/src/lib.rs b/http-server/src/lib.rs index 7531b7c6f3..932adda284 100644 --- a/http-server/src/lib.rs +++ b/http-server/src/lib.rs @@ -37,7 +37,8 @@ mod server; pub mod response; pub use access_control::{ - hosts::{AllowHosts, Host}, + cors::{AccessControlAllowOrigin, AccessControlAllowHeaders}, + hosts::{AllowHosts, DomainsValidation, Host}, AccessControl, AccessControlBuilder, }; pub use jsonrpsee_types as types; From a1b1983905d2400364204fc07f3618e77ba84293 Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Tue, 14 Sep 2021 13:10:17 +0200 Subject: [PATCH 2/4] fix cors_max_age nit --- http-server/src/access_control/mod.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/http-server/src/access_control/mod.rs b/http-server/src/access_control/mod.rs index 7a9a7277a8..ed04f2adf0 100644 --- a/http-server/src/access_control/mod.rs +++ b/http-server/src/access_control/mod.rs @@ -40,6 +40,10 @@ use jsonrpsee_utils::http_helpers; #[derive(Clone, Debug)] pub struct AccessControl { allow_hosts: AllowHosts, + /// The value of `Access-Control-Max-Age` in response header to use. + /// + /// A value of -1 will disable caching, requiring a preflight OPTIONS check for all calls. + pub cors_max_age: i32, cors_allow_origin: Option>, cors_allow_headers: AccessControlAllowHeaders, continue_on_invalid_cors: bool, @@ -92,6 +96,7 @@ impl Default for AccessControl { allow_hosts: AllowHosts::Any, cors_allow_origin: None, cors_allow_headers: AccessControlAllowHeaders::Any, + cors_max_age: -1, continue_on_invalid_cors: false, } } @@ -103,6 +108,7 @@ pub struct AccessControlBuilder { allow_hosts: AllowHosts, cors_allow_origin: Option>, cors_allow_headers: AccessControlAllowHeaders, + cors_max_age: i32, continue_on_invalid_cors: bool, } @@ -112,6 +118,7 @@ impl Default for AccessControlBuilder { allow_hosts: AllowHosts::Any, cors_allow_origin: None, cors_allow_headers: AccessControlAllowHeaders::Any, + cors_max_age: -1, continue_on_invalid_cors: false, } } @@ -174,6 +181,7 @@ impl AccessControlBuilder { allow_hosts: self.allow_hosts, cors_allow_origin: self.cors_allow_origin, cors_allow_headers: self.cors_allow_headers, + cors_max_age: self.cors_max_age, continue_on_invalid_cors: self.continue_on_invalid_cors, } } From 2a658081eb2485ecfd00c92a4cb29b357caed4c9 Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Tue, 14 Sep 2021 13:15:00 +0200 Subject: [PATCH 3/4] fmt --- http-server/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/http-server/src/lib.rs b/http-server/src/lib.rs index 932adda284..c164ff5231 100644 --- a/http-server/src/lib.rs +++ b/http-server/src/lib.rs @@ -37,7 +37,7 @@ mod server; pub mod response; pub use access_control::{ - cors::{AccessControlAllowOrigin, AccessControlAllowHeaders}, + cors::{AccessControlAllowHeaders, AccessControlAllowOrigin}, hosts::{AllowHosts, DomainsValidation, Host}, AccessControl, AccessControlBuilder, }; From 336d4a03a86fbec301fe909622bf5496ef856d70 Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Wed, 15 Sep 2021 08:36:14 +0200 Subject: [PATCH 4/4] remove max_cors_age --- http-server/src/access_control/mod.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/http-server/src/access_control/mod.rs b/http-server/src/access_control/mod.rs index ed04f2adf0..7a9a7277a8 100644 --- a/http-server/src/access_control/mod.rs +++ b/http-server/src/access_control/mod.rs @@ -40,10 +40,6 @@ use jsonrpsee_utils::http_helpers; #[derive(Clone, Debug)] pub struct AccessControl { allow_hosts: AllowHosts, - /// The value of `Access-Control-Max-Age` in response header to use. - /// - /// A value of -1 will disable caching, requiring a preflight OPTIONS check for all calls. - pub cors_max_age: i32, cors_allow_origin: Option>, cors_allow_headers: AccessControlAllowHeaders, continue_on_invalid_cors: bool, @@ -96,7 +92,6 @@ impl Default for AccessControl { allow_hosts: AllowHosts::Any, cors_allow_origin: None, cors_allow_headers: AccessControlAllowHeaders::Any, - cors_max_age: -1, continue_on_invalid_cors: false, } } @@ -108,7 +103,6 @@ pub struct AccessControlBuilder { allow_hosts: AllowHosts, cors_allow_origin: Option>, cors_allow_headers: AccessControlAllowHeaders, - cors_max_age: i32, continue_on_invalid_cors: bool, } @@ -118,7 +112,6 @@ impl Default for AccessControlBuilder { allow_hosts: AllowHosts::Any, cors_allow_origin: None, cors_allow_headers: AccessControlAllowHeaders::Any, - cors_max_age: -1, continue_on_invalid_cors: false, } } @@ -181,7 +174,6 @@ impl AccessControlBuilder { allow_hosts: self.allow_hosts, cors_allow_origin: self.cors_allow_origin, cors_allow_headers: self.cors_allow_headers, - cors_max_age: self.cors_max_age, continue_on_invalid_cors: self.continue_on_invalid_cors, } }