mirror of
https://codeberg.org/slatian/service.echoip-slatecave.git
synced 2025-07-16 14:03:28 +02:00
Added some ratelimiting middleware
This commit is contained in:
16
src/main.rs
16
src/main.rs
@ -33,6 +33,7 @@ use std::path::Path;
|
||||
mod config;
|
||||
mod geoip;
|
||||
mod ipinfo;
|
||||
mod ratelimit;
|
||||
mod simple_dns;
|
||||
mod templating_engine;
|
||||
mod idna;
|
||||
@ -85,6 +86,7 @@ pub struct DigResult {
|
||||
partial_lookup: bool,
|
||||
}
|
||||
|
||||
|
||||
struct ServiceSharedState {
|
||||
templating_engine: templating_engine::Engine,
|
||||
dns_resolver: TokioAsyncResolver,
|
||||
@ -110,7 +112,6 @@ fn match_domain_hidden_list(domain: &String, hidden_list: &Vec<String>) -> bool
|
||||
let name = domain.trim_end_matches(".");
|
||||
for suffix in hidden_list {
|
||||
if name.ends_with(suffix) {
|
||||
println!("Blocked {name} …");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -185,6 +186,9 @@ async fn main() {
|
||||
template_config: template_extra_config,
|
||||
};
|
||||
|
||||
// Initalize Rate Limiter
|
||||
|
||||
|
||||
// Initalize GeoIP Database
|
||||
|
||||
let mut asn_db = geoip::MMDBCarrier {
|
||||
@ -243,9 +247,12 @@ async fn main() {
|
||||
.with_state(shared_state)
|
||||
.layer(
|
||||
ServiceBuilder::new()
|
||||
.layer(ip_header.into_extension())
|
||||
.layer(Extension(config))
|
||||
.layer(middleware::from_fn(format_and_language_middleware))
|
||||
.layer(ip_header.into_extension())
|
||||
.layer(ratelimit::build_rate_limiting_state(
|
||||
config.ratelimit.per_minute, config.ratelimit.burst))
|
||||
.layer(middleware::from_fn(ratelimit::rate_limit_middleware))
|
||||
.layer(Extension(config))
|
||||
.layer(middleware::from_fn(format_and_language_middleware))
|
||||
)
|
||||
;
|
||||
|
||||
@ -257,6 +264,7 @@ async fn main() {
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
|
||||
async fn format_and_language_middleware<B>(
|
||||
Query(query): Query<SettingsQuery>,
|
||||
Extension(config): Extension<config::EchoIpServiceConfig>,
|
||||
|
Reference in New Issue
Block a user