mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 00:47:53 +00:00
update middleware
This commit is contained in:
1 parent
039e61499f
commit
385e1e53c1
9 files changed
+60
-43
No files matched your search
Generated
+2
@@ -6563,6 +6563,7 @@ dependencies = [
|
||||
"errors",
|
||||
"futures 0.1.31",
|
||||
"futures 0.3.26",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"google_drive_common",
|
||||
"hashing",
|
||||
@@ -6590,6 +6591,7 @@ dependencies = [
|
||||
"native-tls",
|
||||
"newrelic-telemetry",
|
||||
"once_cell",
|
||||
"pin-project-lite 0.2.9",
|
||||
"pulldown-cmark",
|
||||
"r2d2_redis",
|
||||
"rand 0.8.5",
|
||||
|
||||
@@ -23,12 +23,12 @@ impl BannedCidrFilter {
|
||||
}
|
||||
}
|
||||
|
||||
impl<S> Transform<S, ServiceRequest> for BannedCidrFilter
|
||||
impl<S, B> Transform<S, ServiceRequest> for BannedCidrFilter
|
||||
where
|
||||
S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
|
||||
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
|
||||
S::Future: 'static,
|
||||
{
|
||||
type Response = ServiceResponse;
|
||||
type Response = ServiceResponse<B>;
|
||||
type Error = Error;
|
||||
type InitError = ();
|
||||
type Transform = BannedCidrFilterMiddleware<S>;
|
||||
|
||||
+10
-8
@@ -7,26 +7,28 @@ use crate::middleware::banned_ip_filter::banned_error::BannedError;
|
||||
use futures_util::future::{err, Either, Ready};
|
||||
use std::net::IpAddr;
|
||||
use std::str::FromStr;
|
||||
use std::task::{Context, Poll};
|
||||
//use std::task::{Context, Poll};
|
||||
|
||||
pub struct BannedCidrFilterMiddleware<S> {
|
||||
pub (crate) service: S,
|
||||
pub (crate) cidr_bans: BannedCidrSet,
|
||||
}
|
||||
|
||||
impl<S> Service<ServiceRequest> for BannedCidrFilterMiddleware<S>
|
||||
impl<S, B> Service<ServiceRequest> for BannedCidrFilterMiddleware<S>
|
||||
where
|
||||
S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
|
||||
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
|
||||
S::Future: 'static,
|
||||
{
|
||||
type Response = ServiceResponse;
|
||||
type Response = ServiceResponse<B>;
|
||||
type Error = Error;
|
||||
type Future = Either<S::Future, Ready<Result<Self::Response, Self::Error>>>;
|
||||
|
||||
// alternatively(?), actix_service::forward_ready!(service);
|
||||
fn poll_ready(&self, cx: &mut Context) -> Poll<Result<(), Self::Error>> {
|
||||
self.service.poll_ready(cx)
|
||||
}
|
||||
//// alternatively(?), actix_service::forward_ready!(service);
|
||||
//fn poll_ready(&self, cx: &mut Context) -> Poll<Result<(), Self::Error>> {
|
||||
// self.service.poll_ready(cx)
|
||||
//}
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&self, request: ServiceRequest) -> Self::Future {
|
||||
let ip_address = get_service_request_ip_address(&request);
|
||||
|
||||
@@ -23,12 +23,12 @@ impl BannedIpFilter {
|
||||
}
|
||||
}
|
||||
|
||||
impl<S> Transform<S, ServiceRequest> for BannedIpFilter
|
||||
impl<S, B> Transform<S, ServiceRequest> for BannedIpFilter
|
||||
where
|
||||
S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
|
||||
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
|
||||
S::Future: 'static,
|
||||
{
|
||||
type Response = ServiceResponse;
|
||||
type Response = ServiceResponse<B>;
|
||||
type Error = Error;
|
||||
type InitError = ();
|
||||
type Transform = BannedIpFilterMiddleware<S>;
|
||||
|
||||
+10
-8
@@ -5,7 +5,7 @@ use crate::extractors::get_service_request_ip_address::get_service_request_ip_ad
|
||||
use crate::middleware::banned_ip_filter::banned_error::BannedError;
|
||||
use crate::middleware::banned_ip_filter::ip_ban_list::ip_ban_list::IpBanList;
|
||||
use futures_util::future::{err, Either, Ready};
|
||||
use std::task::{Context, Poll};
|
||||
//use std::task::{Context, Poll};
|
||||
|
||||
// There are two steps in middleware processing.
|
||||
// 1. Middleware initialization, middleware factory gets called with
|
||||
@@ -17,19 +17,21 @@ pub struct BannedIpFilterMiddleware<S> {
|
||||
pub (crate) ip_ban_list: IpBanList,
|
||||
}
|
||||
|
||||
impl<S> Service<ServiceRequest> for BannedIpFilterMiddleware<S>
|
||||
impl<S, B> Service<ServiceRequest> for BannedIpFilterMiddleware<S>
|
||||
where
|
||||
S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
|
||||
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
|
||||
S::Future: 'static,
|
||||
{
|
||||
type Response = ServiceResponse;
|
||||
type Response = ServiceResponse<B>;
|
||||
type Error = Error;
|
||||
type Future = Either<S::Future, Ready<Result<Self::Response, Self::Error>>>;
|
||||
|
||||
// alternatively(?), actix_service::forward_ready!(service);
|
||||
fn poll_ready(&self, cx: &mut Context) -> Poll<Result<(), Self::Error>> {
|
||||
self.service.poll_ready(cx)
|
||||
}
|
||||
//// alternatively(?), actix_service::forward_ready!(service);
|
||||
//fn poll_ready(&self, cx: &mut Context) -> Poll<Result<(), Self::Error>> {
|
||||
// self.service.poll_ready(cx)
|
||||
//}
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&self, request: ServiceRequest) -> Self::Future {
|
||||
let ip_address = get_service_request_ip_address(&request);
|
||||
|
||||
+3
-3
@@ -23,12 +23,12 @@ impl DisabledEndpointFilter {
|
||||
}
|
||||
}
|
||||
|
||||
impl<S> Transform<S, ServiceRequest> for DisabledEndpointFilter
|
||||
impl<S, B> Transform<S, ServiceRequest> for DisabledEndpointFilter
|
||||
where
|
||||
S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
|
||||
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
|
||||
S::Future: 'static,
|
||||
{
|
||||
type Response = ServiceResponse;
|
||||
type Response = ServiceResponse<B>;
|
||||
type Error = Error;
|
||||
type InitError = ();
|
||||
type Transform = DisabledEndpointFilterMiddleware<S>;
|
||||
|
||||
+10
-8
@@ -4,7 +4,7 @@ use actix_web::dev::{ServiceRequest, ServiceResponse};
|
||||
use crate::middleware::disabled_endpoint_filter::disabled_endpoints::disabled_endpoints::DisabledEndpoints;
|
||||
use crate::middleware::disabled_endpoint_filter::disabled_error::DisabledError;
|
||||
use futures_util::future::{err, Either, Ready};
|
||||
use std::task::{Context, Poll};
|
||||
//use std::task::{Context, Poll};
|
||||
|
||||
// There are two steps in middleware processing.
|
||||
// 1. Middleware initialization, middleware factory gets called with
|
||||
@@ -16,19 +16,21 @@ pub struct DisabledEndpointFilterMiddleware<S> {
|
||||
pub (crate) disabled_endpoints: DisabledEndpoints,
|
||||
}
|
||||
|
||||
impl<S> Service<ServiceRequest> for DisabledEndpointFilterMiddleware<S>
|
||||
impl<S, B> Service<ServiceRequest> for DisabledEndpointFilterMiddleware<S>
|
||||
where
|
||||
S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
|
||||
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
|
||||
S::Future: 'static,
|
||||
{
|
||||
type Response = ServiceResponse;
|
||||
type Response = ServiceResponse<B>;
|
||||
type Error = Error;
|
||||
type Future = Either<S::Future, Ready<Result<Self::Response, Self::Error>>>;
|
||||
|
||||
// alternatively(?), actix_service::forward_ready!(service);
|
||||
fn poll_ready(&self, cx: &mut Context) -> Poll<Result<(), Self::Error>> {
|
||||
self.service.poll_ready(cx)
|
||||
}
|
||||
//// alternatively(?), actix_service::forward_ready!(service);
|
||||
//fn poll_ready(&self, cx: &mut Context) -> Poll<Result<(), Self::Error>> {
|
||||
// self.service.poll_ready(cx)
|
||||
//}
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&self, request: ServiceRequest) -> Self::Future {
|
||||
let endpoint = request.path();
|
||||
|
||||
@@ -96,6 +96,8 @@ tokio = { version = "1.6.0", features = ["macros"] }
|
||||
futures = { version = "0.3.17", features = ["thread-pool"] } # feature for ThreadPool
|
||||
futures-util = "0.3.9"
|
||||
futures_old_for_limiter = { package = "futures", version = "0.1.29" } # Older version of futures for `limiter` crate
|
||||
futures-core = "0.3.26" # NB: For middleware/futures upgrade
|
||||
pin-project-lite = "0.2.9" # NB: For middleware/futures upgrade
|
||||
|
||||
# MySql Database
|
||||
# "offline" supports typesafe builds without a live database
|
||||
|
||||
+17
-10
@@ -11,10 +11,15 @@ use actix_web::{ResponseError, HttpMessage, HttpRequest, HttpResponseBuilder};
|
||||
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
|
||||
use crate::server_state::StaticFeatureFlags;
|
||||
use errors::AnyhowResult;
|
||||
use futures_core::ready;
|
||||
use futures_util::future::{err, ok, Either, Ready};
|
||||
use http_server_common::request::get_request_ip::get_service_request_ip;
|
||||
use log::warn;
|
||||
use pin_project_lite::pin_project;
|
||||
use std::future::Future;
|
||||
use std::io::Write;
|
||||
use std::marker::PhantomData;
|
||||
use std::pin::Pin;
|
||||
use std::task::{Context, Poll};
|
||||
|
||||
// There are two steps in middleware processing.
|
||||
@@ -62,12 +67,12 @@ impl PushbackFilter {
|
||||
}
|
||||
}
|
||||
|
||||
impl<S> Transform<S, ServiceRequest> for PushbackFilter
|
||||
impl<S, B> Transform<S, ServiceRequest> for PushbackFilter
|
||||
where
|
||||
S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
|
||||
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
|
||||
S::Future: 'static,
|
||||
{
|
||||
type Response = ServiceResponse;
|
||||
type Response = ServiceResponse<B>;
|
||||
type Error = Error;
|
||||
type InitError = ();
|
||||
type Transform = PushbackFilterMiddleware<S>;
|
||||
@@ -83,19 +88,21 @@ pub struct PushbackFilterMiddleware<S> {
|
||||
feature_flags: StaticFeatureFlags,
|
||||
}
|
||||
|
||||
impl<S> Service<ServiceRequest> for PushbackFilterMiddleware<S>
|
||||
impl<S, B> Service<ServiceRequest> for PushbackFilterMiddleware<S>
|
||||
where
|
||||
S: Service<ServiceRequest, Response = ServiceResponse, Error = Error>,
|
||||
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error>,
|
||||
S::Future: 'static,
|
||||
{
|
||||
type Response = ServiceResponse;
|
||||
type Response = ServiceResponse<B>;
|
||||
type Error = Error;
|
||||
type Future = Either<S::Future, Ready<Result<Self::Response, Self::Error>>>;
|
||||
|
||||
// alternatively(?), actix_service::forward_ready!(service);
|
||||
fn poll_ready(&self, cx: &mut Context) -> Poll<Result<(), Self::Error>> {
|
||||
self.service.poll_ready(cx)
|
||||
}
|
||||
//// alternatively(?), actix_service::forward_ready!(service);
|
||||
//fn poll_ready(&self, cx: &mut Context) -> Poll<Result<(), Self::Error>> {
|
||||
// self.service.poll_ready(cx)
|
||||
//}
|
||||
|
||||
actix_service::forward_ready!(service);
|
||||
|
||||
fn call(&self, req: ServiceRequest) -> Self::Future {
|
||||
// NB: Ordinarily the filter should be disabled.
|
||||
|
||||
Reference in new issue
Block a user