update middleware

This commit is contained in:
Brandon Thomas committed 2023-07-19 02:41:40 -04:00
1 parent 039e61499f
commit 385e1e53c1
9 files changed
+60 -43

No files matched your search

Generated
+2
View File
@@ -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>;
@@ -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>;
@@ -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);
@@ -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>;
@@ -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
@@ -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.