Skip to content

Commit 4bcfb6c

Browse files
committed
Remove global API key rate limiter
1 parent a64b079 commit 4bcfb6c

File tree

2 files changed

+9
-25
lines changed

2 files changed

+9
-25
lines changed

graph-gateway/src/config.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ pub struct Config {
2929
/// IPFS endpoint with access to the subgraph files
3030
#[serde_as(as = "DisplayFromStr")]
3131
pub ipfs: Url,
32+
/// IP rate limit per window
33+
pub ip_rate_limit: u16,
34+
/// Duration of IP rate limiting window in seconds
35+
pub ip_rate_limit_window_secs: u8,
3236
/// See https://github.com/confluentinc/librdkafka/blob/master/CONFIGURATION.md
3337
#[serde(default)]
3438
pub kafka: KafkaConfig,
@@ -44,14 +48,6 @@ pub struct Config {
4448
pub port_metrics: u16,
4549
pub query_budget_discount: f64,
4650
pub query_budget_scale: f64,
47-
/// Duration of API rate limiting window in seconds
48-
pub rate_limit_api_window_secs: u8,
49-
/// API rate limit per window
50-
pub rate_limit_api_limit: u16,
51-
/// Duration of IP rate limiting window in seconds
52-
pub rate_limit_ip_window_secs: u8,
53-
/// IP rate limit per window
54-
pub rate_limit_ip_limit: u16,
5551
pub restricted_deployments: Option<PathBuf>,
5652
/// Mnemonic for voucher signing
5753
#[serde_as(as = "DisplayFromStr")]

graph-gateway/src/main.rs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -257,24 +257,20 @@ async fn main() {
257257
.expect("Failed to start metrics server")
258258
});
259259
let ip_rate_limiter = RateLimiter::<String>::new(
260-
config.rate_limit_ip_limit as usize,
261-
config.rate_limit_ip_window_secs as usize,
262-
);
263-
let api_rate_limiter = RateLimiter::<String>::new(
264-
config.rate_limit_api_limit as usize,
265-
config.rate_limit_ip_window_secs as usize,
260+
config.ip_rate_limit as usize,
261+
config.ip_rate_limit_window_secs as usize,
266262
);
267263
HttpServer::new(move || {
268264
let cors = Cors::default()
269265
.allow_any_origin()
270266
.allow_any_header()
271267
.allowed_methods(vec!["POST", "OPTIONS"]);
272268
let api = web::scope("/api")
273-
.wrap(cors)
274269
.wrap(RateLimiterMiddleware {
275-
rate_limiter: api_rate_limiter.clone(),
276-
key: request_api_key,
270+
rate_limiter: ip_rate_limiter.clone(),
271+
key: request_host,
277272
})
273+
.wrap(cors)
278274
.app_data(web::Data::new(client_query_ctx.clone()))
279275
.app_data(web::JsonConfig::default().error_handler(|err, _| {
280276
actix_web::error::InternalError::from_response(
@@ -364,14 +360,6 @@ where
364360
.forever();
365361
}
366362

367-
fn request_api_key(request: &ServiceRequest) -> String {
368-
format!(
369-
"{}/{}",
370-
request_host(request),
371-
request.match_info().get("api_key").unwrap_or("")
372-
)
373-
}
374-
375363
fn request_host(request: &ServiceRequest) -> String {
376364
let info = request.connection_info();
377365
info.realip_remote_addr()

0 commit comments

Comments
 (0)