add dependencies

add configuration

implement GCRA logic

add rate-limiting to `ruma_wrapper`

adding tests and correcting the implementation
This commit is contained in:
avdb13 2025-04-23 09:41:11 +00:00
parent 1529d60a6a
commit 371ea1dbf5
8 changed files with 631 additions and 9 deletions

View file

@ -1,6 +1,6 @@
use std::{
borrow::Cow,
collections::{BTreeMap, HashSet},
collections::{BTreeMap, HashMap, HashSet},
fmt::{self, Display},
net::{IpAddr, Ipv4Addr},
path::{Path, PathBuf},
@ -19,6 +19,7 @@ use crate::error;
mod env_filter_clone;
mod proxy;
pub(crate) mod rate_limiting;
pub(crate) use env_filter_clone::EnvFilterClone;
use proxy::ProxyConfig;
@ -69,6 +70,9 @@ pub(crate) struct Config {
pub(crate) observability: ObservabilityConfig,
#[serde(default)]
pub(crate) turn: TurnConfig,
#[serde(default = "rate_limiting::default_rate_limit")]
pub(crate) rate_limiting:
HashMap<rate_limiting::Endpoint, rate_limiting::Config>,
pub(crate) emergency_password: Option<String>,
}