Skip to content

Commit

Permalink
refactor: move post rate limiter
Browse files Browse the repository at this point in the history
  • Loading branch information
alexey-yarmosh committed Sep 24, 2024
1 parent f55cf19 commit 7677f9c
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 8 deletions.
2 changes: 2 additions & 0 deletions config/default.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,10 @@ module.exports = {
limits: {
anonymousTestsPerLocation: 200,
anonymousTestsPerMeasurement: 500,
anonymousGetMeasurement: 5, // per 2 seconds per IP
authenticatedTestsPerLocation: 500,
authenticatedTestsPerMeasurement: 500,
authenticatedGetMeasurement: 5, // per 2 seconds per user
},
globalDistribution: {
AF: 5,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import config from 'config';
import { RateLimiterRedis, RateLimiterRes } from 'rate-limiter-flexible';
import requestIp from 'request-ip';
import { getPersistentRedisClient } from './redis/persistent-client.js';
import { getPersistentRedisClient } from '../redis/persistent-client.js';
import createHttpError from 'http-errors';
import type { ExtendedContext } from '../types.js';
import { credits } from './credits.js';
import type { ExtendedContext } from '../../types.js';
import { credits } from '../credits.js';

const redisClient = getPersistentRedisClient();

Expand Down
2 changes: 1 addition & 1 deletion src/limits/route/get-limits.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type Router from '@koa/router';
import { getRateLimitState } from '../../lib/rate-limiter.js';
import { getRateLimitState } from '../../lib/rate-limiter/rate-limiter-post.js';
import type { ExtendedContext } from '../../types.js';
import { credits } from '../../lib/credits.js';
import { authenticate } from '../../lib/http/middleware/authenticate.js';
Expand Down
4 changes: 3 additions & 1 deletion src/measurement/route/get-measurement.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import type { DefaultContext, DefaultState, ParameterizedContext } from 'koa';
import type Router from '@koa/router';
import { getMeasurementStore } from '../store.js';
import { corsAuthHandler } from '../../lib/http/middleware/cors.js';
import { authenticate } from '../../lib/http/middleware/authenticate.js';

const store = getMeasurementStore();

Expand All @@ -24,5 +26,5 @@ const handle = async (ctx: ParameterizedContext<DefaultState, DefaultContext & R
};

export const registerGetMeasurementRoute = (router: Router): void => {
router.get('/measurements/:id', '/measurements/:id([a-zA-Z0-9]+)', handle);
router.get('/measurements/:id', '/measurements/:id([a-zA-Z0-9]+)', corsAuthHandler(), authenticate(), handle);
};
2 changes: 1 addition & 1 deletion src/measurement/runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { getMetricsAgent, type MetricsAgent } from '../lib/metrics.js';
import type { MeasurementStore } from './store.js';
import { getMeasurementStore } from './store.js';
import type { MeasurementRequest, MeasurementResultMessage, MeasurementProgressMessage, UserRequest } from './types.js';
import { rateLimit } from '../lib/rate-limiter.js';
import { rateLimit } from '../lib/rate-limiter/rate-limiter-post.js';
import type { ExtendedContext } from '../types.js';

export class MeasurementRunner {
Expand Down
2 changes: 1 addition & 1 deletion test/tests/integration/limits.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import requestIp from 'request-ip';
import { expect } from 'chai';
import { getTestServer, addFakeProbe, deleteFakeProbes, waitForProbesUpdate } from '../../utils/server.js';
import nockGeoIpProviders from '../../utils/nock-geo-ip.js';
import { anonymousRateLimiter, authenticatedRateLimiter } from '../../../src/lib/rate-limiter.js';
import { anonymousRateLimiter, authenticatedRateLimiter } from '../../../src/lib/rate-limiter/rate-limiter-post.js';
import { client } from '../../../src/lib/sql/client.js';
import { GP_TOKENS_TABLE } from '../../../src/lib/http/auth.js';
import { CREDITS_TABLE } from '../../../src/lib/credits.js';
Expand Down
2 changes: 1 addition & 1 deletion test/tests/integration/ratelimit.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import requestIp from 'request-ip';
import { expect } from 'chai';
import { getTestServer, addFakeProbe, deleteFakeProbes, waitForProbesUpdate } from '../../utils/server.js';
import nockGeoIpProviders from '../../utils/nock-geo-ip.js';
import { anonymousRateLimiter, authenticatedRateLimiter } from '../../../src/lib/rate-limiter.js';
import { anonymousRateLimiter, authenticatedRateLimiter } from '../../../src/lib/rate-limiter/rate-limiter-post.js';
import { client } from '../../../src/lib/sql/client.js';
import { GP_TOKENS_TABLE } from '../../../src/lib/http/auth.js';
import { CREDITS_TABLE } from '../../../src/lib/credits.js';
Expand Down

0 comments on commit 7677f9c

Please sign in to comment.