Skip to content

Commit 8f72aee

Browse files
committed
Also remove rate limit from /api/report endpoint.
1 parent 704902c commit 8f72aee

File tree

5 files changed

+0
-130
lines changed

5 files changed

+0
-130
lines changed

app/lib/frontend/handlers/report.dart

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import 'package:pub_dev/admin/backend.dart';
1111
import 'package:pub_dev/shared/configuration.dart';
1212
import 'package:shelf/shelf.dart' as shelf;
1313

14-
import '../../../service/rate_limit/rate_limit.dart';
1514
import '../../account/backend.dart';
1615
import '../../admin/models.dart';
1716
import '../../frontend/handlers/cache_control.dart';
@@ -25,11 +24,6 @@ import '../../shared/handlers.dart';
2524
import '../request_context.dart';
2625
import '../templates/report.dart';
2726

28-
/// The number of requests allowed over [_reportRateLimitWindow]
29-
const _reportRateLimit = 5;
30-
const _reportRateLimitWindow = Duration(minutes: 10);
31-
const _reportRateLimitWindowAsText = 'last 10 minutes';
32-
3327
/// Handles GET /report
3428
Future<shelf.Response> reportPageHandler(shelf.Request request) async {
3529
final feedback = request.requestedUri.queryParameters['feedback'];
@@ -175,17 +169,6 @@ Future<Message> processReportPageHandler(
175169
shelf.Request request,
176170
ReportForm form,
177171
) async {
178-
final sourceIp = request.sourceIp;
179-
if (sourceIp != null) {
180-
await verifyRequestCounts(
181-
sourceIp: sourceIp,
182-
operation: 'report',
183-
limit: _reportRateLimit,
184-
window: _reportRateLimitWindow,
185-
windowAsText: _reportRateLimitWindowAsText,
186-
);
187-
}
188-
189172
final now = clock.now().toUtc();
190173
final caseId = ModerationCase.generateCaseId(now: now);
191174

app/lib/service/rate_limit/models.dart

Lines changed: 0 additions & 51 deletions
This file was deleted.

app/lib/service/rate_limit/models.g.dart

Lines changed: 0 additions & 21 deletions
This file was deleted.

app/lib/service/rate_limit/rate_limit.dart

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import 'package:clock/clock.dart';
66
import 'package:collection/collection.dart';
77
import 'package:logging/logging.dart';
88
import 'package:pub_dev/audit/backend.dart';
9-
import 'package:pub_dev/service/rate_limit/models.dart';
109

1110
import '../../account/agent.dart';
1211
import '../../audit/models.dart';
@@ -184,24 +183,3 @@ bool _containsUserId(List<String>? users, String userId) {
184183
}
185184
return users.contains(userId);
186185
}
187-
188-
Future<void> verifyRequestCounts({
189-
required String sourceIp,
190-
required String operation,
191-
required int limit,
192-
required Duration window,
193-
required String windowAsText,
194-
}) async {
195-
final counterCacheEntry = cache.rateLimitRequestCounter(sourceIp, operation);
196-
final cachedCounter = await counterCacheEntry.get();
197-
if (cachedCounter == null) {
198-
await counterCacheEntry.set(RateLimitRequestCounter.init(1));
199-
} else {
200-
final nextCounter = cachedCounter.incrementOrThrow(
201-
limit: limit,
202-
window: window,
203-
windowAsText: windowAsText,
204-
);
205-
await counterCacheEntry.set(nextCounter);
206-
}
207-
}

app/lib/shared/redis_cache.dart

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import 'package:neat_cache/neat_cache.dart';
1717
import 'package:pub_dev/service/download_counts/download_counts.dart';
1818

1919
import '../../../service/async_queue/async_queue.dart';
20-
import '../../../service/rate_limit/models.dart';
2120
import '../../../service/security_advisories/models.dart';
2221
import '../../dartdoc/models.dart';
2322
import '../../shared/env_config.dart';
@@ -213,24 +212,6 @@ class CachePatterns {
213212
)[url];
214213
}
215214

216-
Entry<RateLimitRequestCounter> rateLimitRequestCounter(
217-
String sourceIp,
218-
String operation,
219-
) {
220-
return _cache
221-
.withPrefix('rate-limit-request-counter/')
222-
.withTTL(const Duration(minutes: 3))
223-
.withCodec(utf8)
224-
.withCodec(json)
225-
.withCodec(
226-
wrapAsCodec(
227-
encode: (RateLimitRequestCounter r) => r.toJson(),
228-
decode: (d) =>
229-
RateLimitRequestCounter.fromJson(d as Map<String, dynamic>),
230-
),
231-
)['$sourceIp/$operation'];
232-
}
233-
234215
Entry<ScoreCardData> scoreCardData(String package, String version) => _cache
235216
.withPrefix('scorecard-data/')
236217
.withTTL(Duration(hours: 2))

0 commit comments

Comments
 (0)