From 532cc431d1c5ca1ffcf429a4ccb94edc7848fe7a Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 30 May 2024 00:09:11 +0200 Subject: rename filters dir --- src/modules/mod.rs | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/modules/mod.rs (limited to 'src/modules/mod.rs') diff --git a/src/modules/mod.rs b/src/modules/mod.rs new file mode 100644 index 0000000..2bee8e3 --- /dev/null +++ b/src/modules/mod.rs @@ -0,0 +1,54 @@ +use crate::error::ServiceError; +use crate::State; +use accesslog::AccessLogKind; +use auth::{basic::HttpBasicAuthKind, cookie::CookieAuthKind}; +use bytes::Bytes; +use error::ErrorKind; +use file::FileKind; +use files::FilesKind; +use futures::Future; +use hosts::HostsKind; +use http_body_util::combinators::BoxBody; +use hyper::{body::Incoming, Request, Response}; +use proxy::ProxyKind; +use serde_yaml::Value; +use std::{net::SocketAddr, pin::Pin, sync::Arc}; + +pub mod accesslog; +pub mod auth; +pub mod error; +pub mod file; +pub mod files; +pub mod hosts; +pub mod proxy; + +pub type NodeRequest = Request; +pub type NodeResponse = Response>; + +pub static MODULES: &'static [&'static dyn NodeKind] = &[ + &HttpBasicAuthKind, + &CookieAuthKind, + &ProxyKind, + &HostsKind, + &FilesKind, + &FileKind, + &AccessLogKind, + &ErrorKind, +]; + +pub struct NodeContext { + pub state: Arc, + pub addr: SocketAddr, +} + +pub trait NodeKind: Send + Sync + 'static { + fn name(&self) -> &'static str; + fn instanciate(&self, config: Value) -> anyhow::Result>; +} +pub trait Node: Send + Sync + 'static { + fn handle<'a>( + &'a self, + context: &'a mut NodeContext, + request: NodeRequest, + ) -> Pin> + Send + Sync + 'a>>; +} -- cgit v1.2.3-70-g09d2